aboutsummaryrefslogtreecommitdiff
path: root/go/game/targets_test.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-02-25 23:08:47 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2025-08-20 15:57:06 +0200
commit3d36d1d0254b8aeecc889a2a49cbcced458cbe9c (patch)
tree38dd0851d8eaa6535d05b97f29f65fc35655a5ef /go/game/targets_test.go
parent19fb1a7e5c5883f49e944b6499fa1ced207a3e39 (diff)
downloadmuhqs-game-3d36d1d0254b8aeecc889a2a49cbcced458cbe9c.tar.gz
muhqs-game-3d36d1d0254b8aeecc889a2a49cbcced458cbe9c.zip
intermediate commit
* Implement move artifact action * Fix widget update memory leak * update the highlights not during on each frame * do not update the unchanged label of a button * Allow to exit the game by pressing 'q' * Implement some cards from the magic set * Improve permanent formatting * Some tweaks to UnitAI code
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)
+ }
+}