diff options
Diffstat (limited to 'go/game/range_test.go')
| -rw-r--r-- | go/game/range_test.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/go/game/range_test.go b/go/game/range_test.go new file mode 100644 index 00000000..afa164de --- /dev/null +++ b/go/game/range_test.go @@ -0,0 +1,35 @@ +package game + +import ( + "golang.org/x/exp/slices" + "testing" +) + +func TestPositionsInRange(t *testing.T) { + origin := Position{0, 0} + positionsInRange1 := []Position{Position{0, 1}, Position{1, 0}, Position{1, 1}} + calculatedPositions := PositionsInRange(origin, 1, false) + if len(positionsInRange1) != len(calculatedPositions) { + t.Fatalf("Unexpected number of calculated positions") + } + + for _, p := range positionsInRange1 { + if !slices.Contains(calculatedPositions, p) { + t.Fatalf("Position %v not in calculated positions", p) + } + } + + origin = Position{2, 2} + positionsInRange2 := []Position{Position{0, 1}, Position{0, 2}, Position{0, 3}, + Position{1, 0}, Position{1, 1}, Position{1, 2}, Position{1, 3}, Position{1, 4}, + Position{2, 0}, Position{2, 1}, Position{2, 3}, Position{2, 4}, + Position{3, 0}, Position{3, 1}, Position{3, 2}, Position{3, 3}, Position{3, 4}, + Position{4, 1}, Position{4, 2}, Position{4, 3}} + calculatedPositions = PositionsInRange(origin, 2, false) + + for _, p := range positionsInRange2 { + if !slices.Contains(calculatedPositions, p) { + t.Fatalf("Position %v not in calculated positions", p) + } + } +} |
