From c696829f9e37e9f3752fdb89ebaadd4b3b237bea Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sat, 2 Aug 2025 14:47:01 +0200 Subject: add support for flexible attacks --- go/game/attack_test.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'go/game/attack_test.go') diff --git a/go/game/attack_test.go b/go/game/attack_test.go index 6327b8eb..a13b4795 100644 --- a/go/game/attack_test.go +++ b/go/game/attack_test.go @@ -50,3 +50,37 @@ func TestAttackString(t *testing.T) { t.Fatal("unexpected attack string:", a.String()) } } + +func TestAttackCopy(t *testing.T) { + aStr := "2 range 3" + a := parseAttack(aStr) + c := a.Copy() + c.Extend(1) + if a.MaxRange() != 3 { + t.Fatal("changed max range") + } + c.attacks[0] = 1 + if a.attacks[0] != 2 { + t.Fatal("changed attack in range 0") + } +} + +func TestPikeAttack(t *testing.T) { + a := parseAttack("1") + a.flexAttack = pikeAttack() + o := &Tile{Position: Position{0, 0}} + u := NewUnit(NewCard("base/cavalry"), o, NewMockPlayer()) + enterTile(u, o) + + tile := &Tile{Position: Position{1, 2}} + enterTile(NewUnitFromPath("base/cavalry", tile, NewMockPlayer()), tile) + + // This test is crooked because the attack of the attacking unit is checked in flexAttack and not a. + d, ok := a.DamageForTile(u, tile) + if !ok { + t.Fatal("cavalry not in range for pike attack") + } + if d != u.Attack.DamageInRange(u.Attack.MaxRange()) { + t.Fatal("unexpected damage: amount", d) + } +} -- cgit v1.2.3