aboutsummaryrefslogtreecommitdiff
path: root/go/game
diff options
context:
space:
mode:
Diffstat (limited to 'go/game')
-rw-r--r--go/game/action_test.go28
-rw-r--r--go/game/ai_test.go42
-rw-r--r--go/game/areaEffect_test.go6
-rw-r--r--go/game/cardImplementations_test.go40
-rw-r--r--go/game/cardParsing_test.go8
-rw-r--r--go/game/marks_test.go4
-rw-r--r--go/game/state_test.go12
-rw-r--r--go/game/targets_test.go6
-rw-r--r--go/game/unit_test.go11
-rw-r--r--go/game/winCondition_test.go12
10 files changed, 54 insertions, 115 deletions
diff --git a/go/game/action_test.go b/go/game/action_test.go
index f72193ad..d00b5d56 100644
--- a/go/game/action_test.go
+++ b/go/game/action_test.go
@@ -8,17 +8,10 @@ import (
"muhq.space/muhqs-game/go/utils"
)
-const PASS_STRING = "muhq\u00A0pass"
-
-var (
- s *LocalState = NewLocalState()
- p *Player = s.AddNewPlayer("muhq", NewDeck())
-)
+const PASS_STRING = "p\u00A0pass"
func TestUpkeepAction(t *testing.T) {
- s := NewLocalState()
- p := s.AddNewPlayer("muhq", NewDeck())
- o := s.AddNewPlayer("opponent", NewDeck())
+ s, _, p, o := newMockState()
m, _ := GetMap("2P-ring-street")
s.SetMap(m)
@@ -56,6 +49,7 @@ func TestUpkeepAction(t *testing.T) {
}
func TestMarshalPass(t *testing.T) {
+ _, _, p, _ := newMockState()
exp := PASS_STRING
a := NewPassPriority(p)
is := string(MarshalAction(a))
@@ -65,6 +59,7 @@ func TestMarshalPass(t *testing.T) {
}
func TestUnmarshalPass(t *testing.T) {
+ s, _, _, _ := newMockState()
in := PASS_STRING
a, err := UnmarshalAction(s, []byte(in))
if err != nil {
@@ -75,9 +70,10 @@ func TestUnmarshalPass(t *testing.T) {
}
}
-const PICK_ACTION_STRING = "muhq\u00A0pick\u00A0base/archer:[base/archer, magic/more!]"
+const PICK_ACTION_STRING = "p\u00A0pick\u00A0base/archer:[base/archer, magic/more!]"
func TestMarshalPickAction(t *testing.T) {
+ _, _, p, _ := newMockState()
exp := PICK_ACTION_STRING
poc := NewPileOfCards()
c := NewCard("base/archer")
@@ -91,6 +87,7 @@ func TestMarshalPickAction(t *testing.T) {
}
func TestUnmarshalPickAction(t *testing.T) {
+ s, _, _, _ := newMockState()
in := PICK_ACTION_STRING
a, err := UnmarshalAction(s, []byte(in))
if err != nil {
@@ -119,14 +116,10 @@ symbols:
H: house
S: street
`
- s := NewLocalState()
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ s, _, p, o := newMockState()
+ m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
- p := s.AddNewPlayer("player", NewDeck())
- o := s.AddNewPlayer("opponent", NewDeck())
-
t1 := s.addNewUnit(NewCard("base/fighter"), Position{0, 0}, o)
t2 := s.addNewUnit(NewCard("base/fighter"), Position{0, 1}, o)
t3 := s.addNewUnit(NewCard("base/fighter"), Position{0, 2}, o)
@@ -195,8 +188,7 @@ symbols:
S: street
`
s := NewLocalState()
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
p := s.AddNewPlayer("player", NewDeck())
diff --git a/go/game/ai_test.go b/go/game/ai_test.go
index 9a9df154..8a1a03c3 100644
--- a/go/game/ai_test.go
+++ b/go/game/ai_test.go
@@ -5,8 +5,6 @@ import (
"testing"
)
-var player = NewMockPlayer()
-
func TestGenerateGraph(t *testing.T) {
mapDef := `map: |1-
HST
@@ -18,8 +16,9 @@ symbols:
F: farm
S: street
`
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+
+ player := NewMockPlayer()
+ m, _ := readMap(strings.NewReader(mapDef))
a := NewUnit(NewCard("base/archer"), m.TileAt(Position{0, 0}), player)
f := NewUnit(NewCard("misc/farmer"), m.TileAt(Position{2, 2}), player)
@@ -54,11 +53,11 @@ func TestAngrySquidDiagonal(t *testing.T) {
symbols:
W: deep water
`
- r := strings.NewReader(mapDef)
- m, err := readMap(r)
+ m, err := readMap(strings.NewReader(mapDef))
if m == nil || err != nil {
t.Fatal("failed to parse map", m, err)
}
+ player := NewMockPlayer()
s := NewUnit(NewCard("kraken/angry_squid"), m.TileAt(Position{5, 0}), player)
f := NewUnit(NewCard("misc/farmer"), m.TileAt(Position{6, 5}), player)
@@ -80,8 +79,7 @@ func TestClowFish(t *testing.T) {
symbols:
W: deep water
`
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
s := NewLocalState()
s.SetMap(m)
p1 := s.AddNewPlayer("kraken", NewDeck())
@@ -136,8 +134,7 @@ func TestBauernFeind(t *testing.T) {
symbols:
W: wall
`
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
s := NewLocalState()
s.SetMap(m)
p1 := s.AddNewPlayer("tyrant", NewDeck())
@@ -182,8 +179,8 @@ symbols:
F: farm
S: street
`
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
+ player := NewMockPlayer()
a := NewUnit(NewCard("base/archer"), m.TileAt(Position{0, 0}), player)
if SuggestUnitAI(a) != "aggressive" {
t.Fatal("expected aggressive")
@@ -218,8 +215,8 @@ symbols:
F: farm
S: street
`
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
+ player := NewMockPlayer()
k := NewUnit(NewCard("misc/king"), m.TileAt(Position{0, 0}), player)
ai := NewUnitAIFromDesc(nil, k, "shy")
if ai == nil {
@@ -238,12 +235,9 @@ symbols:
F: farm
S: street
`
- s := NewLocalState()
- p := s.AddNewPlayer("muhq", NewDeck())
- o := s.AddNewPlayer("opponent", NewDeck())
+ s, _, p, o := newMockState()
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
s.addNewUnit(NewCard("base/knight"), Position{0, 0}, p)
@@ -329,14 +323,11 @@ symbols:
S: street
W: deep water
`
- s := NewLocalState()
+ s, _, p, o := newMockState()
m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
- p := s.AddNewPlayer("p", NewDeck())
- o := s.AddNewPlayer("o", NewDeck())
-
s.addNewUnit(NewCard("base/archer"), Position{1, 3}, p)
f1 := s.addNewUnit(NewCard("base/fighter"), Position{1, 1}, o)
f2 := s.addNewUnit(NewCard("base/fighter"), Position{1, 0}, o)
@@ -373,14 +364,11 @@ func TestAggressiveFlexAttackUnitAI(t *testing.T) {
symbols:
S: street
`
- s := NewLocalState()
+ s, _, p, o := newMockState()
m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
- p := s.AddNewPlayer("p", NewDeck())
- o := s.AddNewPlayer("o", NewDeck())
-
pm := s.addNewUnit(NewCard("base/pikeman"), Position{0, 0}, p)
c := s.addNewUnit(NewCard("base/cavalry"), Position{3, 0}, o)
diff --git a/go/game/areaEffect_test.go b/go/game/areaEffect_test.go
index 80cbd4c0..949bc592 100644
--- a/go/game/areaEffect_test.go
+++ b/go/game/areaEffect_test.go
@@ -12,8 +12,7 @@ symbols:
H: house
`
s := NewLocalState()
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
p := s.AddNewPlayer("player", NewDeck())
@@ -76,8 +75,7 @@ symbols:
H: house
`
s := NewLocalState()
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
p := s.AddNewPlayer("player", NewDeck())
diff --git a/go/game/cardImplementations_test.go b/go/game/cardImplementations_test.go
index 96164203..eb3ec567 100644
--- a/go/game/cardImplementations_test.go
+++ b/go/game/cardImplementations_test.go
@@ -71,14 +71,11 @@ symbols:
S: street
H: house
`
- s := NewLocalState()
+ s, _, player, opo := newMockState()
m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
- player := s.AddNewPlayer("p", NewDeck())
- opo := s.AddNewPlayer("o", NewDeck())
-
p := s.addNewUnit(NewCard("base/pikeman"), Position{0, 0}, player)
c := s.addNewUnit(NewCard("base/cavalry"), Position{0, 2}, opo)
prot := s.addNewUnit(NewCard("base/cavalry_archer"), Position{1, 2}, opo)
@@ -139,14 +136,11 @@ symbols:
S: street
H: house
`
- s := NewLocalState()
+ s, _, player, opo := newMockState()
m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
- player := s.AddNewPlayer("p", NewDeck())
- opo := s.AddNewPlayer("o", NewDeck())
-
mis := s.addNewUnit(NewCard("base/missionary"), Position{0, 0}, player)
king := s.addNewUnit(NewCard("misc/king"), Position{0, 2}, opo)
k := s.addNewUnit(NewCard("base/knight"), Position{2, 0}, opo)
@@ -190,19 +184,9 @@ symbols:
}
func TestMace(t *testing.T) {
- s := NewLocalState()
- m := newEmpty2x2Map()
- s.SetMap(m)
-
- player := s.AddNewPlayer("p", NewDeck())
- ctrl := newMockPlayerControl(player)
- ctrl.actionToSend = NewPassPriority(player)
- player.Ctrl = ctrl
-
- opo := s.AddNewPlayer("o", NewDeck())
- ctrl = newMockPlayerControl(opo)
- ctrl.actionToSend = NewPassPriority(opo)
- opo.Ctrl = ctrl
+ s, _, player, opo := newMockState()
+ player.Ctrl.(*MockPlayerControl).actionToSend = NewPassPriority(player)
+ opo.Ctrl.(*MockPlayerControl).actionToSend = NewPassPriority(opo)
k := s.addNewUnit(NewCard("base/knight"), Position{0, 0}, player)
p := s.addNewUnit(NewCard("base/pioneer"), Position{0, 1}, opo)
@@ -232,12 +216,7 @@ func TestMace(t *testing.T) {
}
func TestArmor(t *testing.T) {
- s := NewLocalState()
- m := newEmpty2x2Map()
- s.SetMap(m)
-
- player := s.AddNewPlayer("p", NewDeck())
- opo := s.AddNewPlayer("o", NewDeck())
+ s, _, player, opo := newMockState()
a := s.addNewUnit(NewCard("base/archer"), Position{0, 0}, player)
p := s.addNewUnit(NewCard("base/pioneer"), Position{0, 1}, opo)
@@ -255,12 +234,7 @@ func TestArmor(t *testing.T) {
}
func TestBanner(t *testing.T) {
- s := NewLocalState()
- m := newEmpty2x2Map()
- s.SetMap(m)
-
- player := s.AddNewPlayer("p", NewDeck())
- opo := s.AddNewPlayer("o", NewDeck())
+ s, _, player, opo := newMockState()
s.addNewArtifact(NewCard("equipments/banner"), Position{0, 0}, player)
w := s.addNewUnit(NewCard("base/wormtongue"), Position{1, 0}, player)
diff --git a/go/game/cardParsing_test.go b/go/game/cardParsing_test.go
index adabcbaa..6f003b57 100644
--- a/go/game/cardParsing_test.go
+++ b/go/game/cardParsing_test.go
@@ -6,9 +6,7 @@ import (
)
func TestCloak(t *testing.T) {
- s := NewLocalState()
- p := NewMockPlayer()
- s.SetMap(newEmpty2x2Map())
+ s, _, p, _ := newMockState()
a := s.addNewUnit(NewCard("base/archer"), Position{0, 0}, p)
c := s.addNewEquipment(NewCard("equipments/cloak"), Position{1, 0}, p)
die := NewCard("magic/die!")
@@ -29,9 +27,7 @@ func TestCloak(t *testing.T) {
}
func TestFighter(t *testing.T) {
- s := NewLocalState()
- p := NewMockPlayer()
- s.SetMap(newEmpty2x2Map())
+ s, _, p, _ := newMockState()
f := s.addNewUnit(NewCard("base/fighter"), Position{0, 0}, p)
f.onUpkeep()
if f.AvailAttackActions != 2 {
diff --git a/go/game/marks_test.go b/go/game/marks_test.go
index 368d68b2..6c5204e8 100644
--- a/go/game/marks_test.go
+++ b/go/game/marks_test.go
@@ -12,12 +12,10 @@ func TestParalysis(t *testing.T) {
symbols:
H: house
`
- s := NewLocalState()
+ s, _, p, _ := newMockState()
m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
- p := s.AddNewPlayer("player", NewDeck())
-
u := s.addNewUnit(NewCard("base/archer"), Position{0, 0}, p)
u.tap()
u.adjustMarks(UnitStates.Paralysis, 1)
diff --git a/go/game/state_test.go b/go/game/state_test.go
index 6a9d6eb8..f770e7fa 100644
--- a/go/game/state_test.go
+++ b/go/game/state_test.go
@@ -4,16 +4,24 @@ import (
"testing"
)
-func TestDeclareActions(t *testing.T) {
+// newMockState creates a new LocalState with an empty 2x2 map and two players.
+// The players "p" and "o" are initialized with mock player controls.
+func newMockState() (*LocalState, *Map, *Player, *Player) {
s := NewLocalState()
m := newEmpty2x2Map()
s.SetMap(m)
p := s.AddNewPlayer("p", NewDeck())
- p.Store.AddCard(NewCard("base/sword"))
p.Ctrl = newMockPlayerControl(p)
+
o := s.AddNewPlayer("o", NewDeck())
o.Ctrl = newMockPlayerControl(o)
+ return s, m, p, o
+}
+
+func TestDeclareActions(t *testing.T) {
+ s, m, p, o := newMockState()
+ p.Store.AddCard(NewCard("base/sword"))
a := s.addNewUnit(NewCard("base/archer"), Position{0, 0}, p)
k := s.addNewUnit(NewCard("base/knight"), Position{1, 1}, o)
diff --git a/go/game/targets_test.go b/go/game/targets_test.go
index eed94f4f..e4105e8b 100644
--- a/go/game/targets_test.go
+++ b/go/game/targets_test.go
@@ -20,8 +20,7 @@ symbols:
D: docks
`
s := NewLocalState()
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
p := s.AddNewPlayer("player", NewDeck())
@@ -153,8 +152,7 @@ symbols:
W: deep water
`
s := NewLocalState()
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
p := s.AddNewPlayer("player", NewDeck())
diff --git a/go/game/unit_test.go b/go/game/unit_test.go
index d6ad271c..0efefc3f 100644
--- a/go/game/unit_test.go
+++ b/go/game/unit_test.go
@@ -18,8 +18,7 @@ symbols:
W: deep water
`
s := NewLocalState()
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
p := s.AddNewPlayer("player", NewDeck())
@@ -92,14 +91,10 @@ symbols:
S: street
W: deep water
`
- s := NewLocalState()
- r := strings.NewReader(mapDef)
- m, _ := readMap(r)
+ s, _, p, o := newMockState()
+ m, _ := readMap(strings.NewReader(mapDef))
s.SetMap(m)
- p := s.AddNewPlayer("player", NewDeck())
- o := s.AddNewPlayer("opponent", NewDeck())
-
a := s.addNewUnit(NewCard("base/archer"), Position{2, 0}, p)
for x := range 3 {
for y := range 3 {
diff --git a/go/game/winCondition_test.go b/go/game/winCondition_test.go
index e5fbb655..e6aaed4a 100644
--- a/go/game/winCondition_test.go
+++ b/go/game/winCondition_test.go
@@ -7,12 +7,9 @@ import (
)
func TestKingGame(t *testing.T) {
- s := NewLocalState()
- s.SetMap(newEmpty2x2Map())
+ s, _, p, o := newMockState()
s._map.WinCondition = KingGame
- p := s.AddNewPlayer("p", NewDeck())
k1 := s.addNewUnit(NewCard("misc/king"), Position{0, 0}, p)
- o := s.AddNewPlayer("o", NewDeck())
k2 := s.addNewUnit(NewCard("misc/king"), Position{1, 1}, o)
w := s._map.WinCondition.check(s)
@@ -40,13 +37,8 @@ func TestKingGame(t *testing.T) {
}
func TestConcession(t *testing.T) {
- s := NewLocalState()
- s.SetMap(newEmpty2x2Map())
- p := s.AddNewPlayer("p", NewDeck())
- p.Ctrl = newMockPlayerControl(p)
+ s, _, p, o := newMockState()
s.addNewUnit(NewCard("misc/king"), Position{0, 0}, p)
- o := s.AddNewPlayer("o", NewDeck())
- o.Ctrl = newMockPlayerControl(o)
s.addNewUnit(NewCard("misc/king"), Position{1, 1}, o)
o.concede()