aboutsummaryrefslogtreecommitdiff
path: root/go/game/targets_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/game/targets_test.go')
-rw-r--r--go/game/targets_test.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/go/game/targets_test.go b/go/game/targets_test.go
new file mode 100644
index 00000000..be1cdad9
--- /dev/null
+++ b/go/game/targets_test.go
@@ -0,0 +1,52 @@
+package game
+
+import (
+ "strings"
+ "testing"
+)
+
+func TestDisjunction(t *testing.T) {
+ mapDef := `map: |1-
+ HST
+ HSF
+ TSW
+symbols:
+ T: tower
+ H: house
+ F: farm
+ S: street
+ W: deep water
+`
+ s := NewState()
+ r := strings.NewReader(mapDef)
+ s.Map, _ = readMap(r)
+
+ s.AddNewPlayer("player", NewDeck())
+ p := s.Players[0]
+
+ pioneer := NewUnit(NewCard("base/pioneer"), s.Map.TileAt(Position{1, 1}), p)
+ s.AddPermanent(pioneer)
+
+ sword := newEquipmentFromPath("base/sword", s.Map.TileAt(Position{0, 1}), p)
+ s.AddPermanent(sword)
+
+ fa := pioneer.FullActions[0]
+ targets := fa.Targets()
+ if err := targets.AddSelection(s.Map.TileAt(Position{1, 1})); err != nil {
+ t.Fatalf("TileAt(1,1) not a valid target for %v", fa)
+ }
+
+ if err := targets.CheckTargets(s); err != nil {
+ t.Fatalf("TileAt(1,1) not a valid target for %v", fa)
+ }
+
+ targets.ClearSelections()
+
+ if err := targets.AddSelection(sword); err != nil {
+ t.Fatalf("%v not a valid target for %v", sword, fa)
+ }
+
+ if err := targets.CheckTargets(s); err != nil {
+ t.Fatalf("%v not a valid target for %v", sword, fa)
+ }
+}