package day22 import "testing" func TestSpaceSettleSingle(t *testing.T) { filename := "example" blocks := ReadBlockFile(filename) byZ := BlocksByZ(blocks) space := NewSpace(byZ) t.Logf("read space %+v", space) block := blocks[2] t.Logf("block before setting %+v", block) space.SettleBlock(block) t.Logf("space after settings %+v:\n%+v", block, space) } func TestSpaceSettleSecondNearby(t *testing.T) { filename := "example" blocks := ReadBlockFile(filename) byZ := BlocksByZ(blocks) space := NewSpace(byZ) t.Logf("read space %+v", space) block1 := blocks[0] block2 := blocks[3] t.Logf("block 1 before setting %+v", block1) space.SettleBlock(block1) t.Logf("space after settling block 1 %+v", space) t.Logf("block 2 before setting %+v", block2) space.SettleBlock(block2) t.Logf("space after settling block 2 %+v", space) t.Logf("space after settling %+v", space) } func TestSpaceSettleThirdOnTopFirst(t *testing.T) { filename := "example" blocks := ReadBlockFile(filename) byZ := BlocksByZ(blocks) space := NewSpace(byZ) t.Logf("read space %+v", space) block1 := blocks[0] block2 := blocks[3] block3 := blocks[2] // should overlap X & Y coords of block 1 t.Logf("block 1 before setting %+v", block1) space.SettleBlock(block1) t.Logf("space after settling block 1 %+v", space) t.Logf("block 2 before setting %+v", block2) space.SettleBlock(block2) t.Logf("space after settling block 2 %+v", space) t.Logf("block 3 before setting %+v", block3) space.SettleBlock(block3) t.Logf("space after settling block 3 %+v", space) t.Logf("space after settling %+v", space) t.Logf("blocks 1 & 3 should support it: %+v , %+v", block1.Supports, block2.Supports) // because block 3 is 0-2, 2-2 // and that overlaps 1-1, 0-2 AND 0-0, 0-2 t.Logf("other blocks should not supt %+v", block3.Supports) } func TestSpaceExampleSettleAll(t *testing.T) { filename := "example" blocks := ReadBlockFile(filename) byZ := BlocksByZ(blocks) space := NewSpace(byZ) space.SettleAll() t.Logf("settled space %+v", space) // maybe i can check via console. i := 2 t.Logf("level %d is : %+v", i, space.SettledOnZ[i]) // it looks ok for the example. // let's hope? t.Logf("for example, free blocks amount is %d", space.CountFreeBlocks()) // oh, i need 'supported'? // how do i need to count the task question // i guess we can start with set of all blocks, then? // run over all, if some block is only supported by some underBlock - remove that underblock }