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) }