107 lines
2.7 KiB
Go
107 lines
2.7 KiB
Go
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
|
|
}
|
|
|
|
func TestPinholeStart(t *testing.T) {
|
|
TestPinhole()
|
|
}
|
|
|
|
func TestExampleSpacePrint(t *testing.T) {
|
|
filename := "example"
|
|
blocks := ReadBlockFile(filename)
|
|
byZ := BlocksByZ(blocks)
|
|
|
|
space := NewSpace(byZ)
|
|
|
|
// PrintSpace(space, "before-settping.png")
|
|
|
|
space.SettleAll()
|
|
|
|
PrintSpace(space, "after-settping.png")
|
|
|
|
}
|