package level_test import ( "testing" "github.com/inkyblackness/hacked/ss1/content/archive/level" "github.com/inkyblackness/hacked/ss1/content/archive/level/lvlids" "github.com/stretchr/testify/assert" ) func TestEmptyLevelDataSizesForDefault(t *testing.T) { param := level.EmptyLevelParameters{} levelData := level.EmptyLevelData(param) // For now all the expected length values are deliberately written as numbers and not from the constants. // This is to better catch any changes against the default (vanilla) behaviour. assert.Equal(t, 4, len(levelData[lvlids.MapVersionNumber]), "MapVersionNumber") assert.Equal(t, 4, len(levelData[lvlids.ObjectVersionNumber]), "ObjectVersionNumber") assert.Equal(t, 58, len(levelData[lvlids.Information]), "Information") assert.Equal(t, 64*64*16, len(levelData[lvlids.TileMap]), "TileMap") assert.Equal(t, 8*1, len(levelData[lvlids.Schedules]), "Schedules") assert.Equal(t, 2*54, len(levelData[lvlids.TextureAtlas]), "TextureAtlas") assert.Equal(t, 27*872, len(levelData[lvlids.ObjectMainTable]), "ObjectMainTable") assert.Equal(t, 10*1600, len(levelData[lvlids.ObjectCrossRefTable]), "ObjectCrossRefTable") // leaving the object class tables assert.Equal(t, 4, len(levelData[lvlids.SavefileVersion]), "SavefileVersion") assert.Equal(t, 1, len(levelData[lvlids.Unused41]), "Unused41") assert.Equal(t, 7*4, len(levelData[lvlids.TextureAnimations]), "TextureAnimations") assert.Equal(t, 2*8, len(levelData[lvlids.SurveillanceSources]), "SurveillanceSources") assert.Equal(t, 2*8, len(levelData[lvlids.SurveillanceSurrogates]), "SurveillanceSurrogates") assert.Equal(t, 94, len(levelData[lvlids.Parameters]), "Parameters") assert.Equal(t, 0x0800, len(levelData[lvlids.MapNotes]), "MapNotes") assert.Equal(t, 4, len(levelData[lvlids.MapNotesPointer]), "MapNotesPointer") assert.Equal(t, 0x30, len(levelData[lvlids.Unknown48]), "Unknown48") assert.Equal(t, 0x1C0, len(levelData[lvlids.Unknown49]), "Unknown49") assert.Equal(t, 2, len(levelData[lvlids.Unknown50]), "Unknown50") assert.Equal(t, 15*64, len(levelData[lvlids.LoopConfiguration]), "LoopConfiguration") assert.Equal(t, 2, len(levelData[lvlids.Unknown52]), "Unknown52") assert.Equal(t, 0x40, len(levelData[lvlids.HeightSemaphores]), "HeightSemaphores") } func TestEmptyLevelDataSizeOfMapForDifferentDimension_A(t *testing.T) { param := level.EmptyLevelParameters{ XSize: 33, // will scale to 64 YSize: 3, // will scale to 4 } levelData := level.EmptyLevelData(param) assert.Equal(t, 64*4*16, len(levelData[lvlids.TileMap]), "TileMap") } func TestEmptyLevelDataSizeOfMapForDifferentDimension_B(t *testing.T) { param := level.EmptyLevelParameters{ XSize: 64, YSize: 64, } levelData := level.EmptyLevelData(param) assert.Equal(t, 64*64*16, len(levelData[lvlids.TileMap]), "TileMap") } func TestEmptyLevelDataSizeOfMapForDifferentDimension_C(t *testing.T) { param := level.EmptyLevelParameters{ XSize: 256, YSize: 16, } levelData := level.EmptyLevelData(param) assert.Equal(t, 256*16*16, len(levelData[lvlids.TileMap]), "TileMap") } func TestEmptyLevelDataSizeOfMapForDifferentDimension_D(t *testing.T) { param := level.EmptyLevelParameters{ XSize: 1, YSize: 1, } levelData := level.EmptyLevelData(param) assert.Equal(t, 1*1*16, len(levelData[lvlids.TileMap]), "TileMap") }