aboutsummaryrefslogtreecommitdiff
path: root/go/game/map_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/game/map_test.go')
-rw-r--r--go/game/map_test.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/go/game/map_test.go b/go/game/map_test.go
index 15fa05cb..bc17dd55 100644
--- a/go/game/map_test.go
+++ b/go/game/map_test.go
@@ -4,6 +4,8 @@ import (
"reflect"
"strings"
"testing"
+
+ "golang.org/x/exp/slices"
)
func parseMapString(t *testing.T, mapDef string) *Map {
@@ -113,3 +115,45 @@ symbols:
t.Fatal("Tile at (0,0) is not a house")
}
}
+
+func TestMovementRangeTiles(t *testing.T) {
+ mapDef := `map: |1-
+ T H HT
+ FSSSSS2H
+ SHSH HS
+ S SST S
+ H HFH H
+ S TSS S
+ SH HSHS
+ H1SSSSSF
+ TH H T
+
+symbols:
+ T: tower
+ H: house
+ F: farm
+ S: street
+ 1: spawn player 1
+ 2: spawn player 2
+`
+
+ s := NewLocalState()
+ m := parseMapString(t, mapDef)
+ s.SetMap(m)
+ p := s.AddNewPlayer("p", NewDeck())
+ o := Position{2, 2}
+ a := s.addNewUnit(NewCard("base/archer"), o, p)
+
+ tiles := a.MoveRangeTiles()
+ exp := TilesInRange(m, a, a.Movement.Range)
+
+ if len(tiles) != len(exp) {
+ t.Fatal("expected", len(exp), "tiles not", len(tiles))
+ }
+
+ for _, tile := range exp {
+ if !slices.Contains(tiles, tile) {
+ t.Fatal("missing", tile, "in tiles")
+ }
+ }
+}