aboutsummaryrefslogtreecommitdiff
path: root/go/game/map_test.go
blob: 6972f86706865d3d47d0e1dd330deccd31291e89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package game

import (
	"strings"
	"testing"
)

func parseMapString(t *testing.T, mapDef string) *Map {
	r := strings.NewReader(mapDef)
	m, err := readMap(r)
	if err != nil {
		t.Fatalf("Parsing failed with: %v", err)
	}
	return m
}

func TestParseMapEndingStreets(t *testing.T) {
	mapDef := `map: |1-
 HST
 HSF
 TST

symbols:
  T: tower
  H: house
  F: farm
  S: street
`

	parseMapString(t, mapDef)
}

func TestParseMap(t *testing.T) {
	s := `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

kings:
  - (1,9)
  - (9,1)`

	m := parseMapString(t, s)

	if m.Tiles[0][0].Type != TileTypes.Tower {
		t.Fatalf("Unexpected tile at 0,0: %v (expected %v)", m.Tiles[0][0], TileTypes.Tower)
	}

	for y := 0; y < len(m.Tiles); y++ {
		for x := 0; x < len(m.Tiles[y]); x++ {
			if m.TileAt(Position{x, y}) != &m.Tiles[y][x] {
				t.Fatalf("TileAt and Tiles differ")
			}
		}
	}

	if m.ResourceGain != DEFAULT_RESOURCE_GAIN {
		t.Fatalf("resource gain is not the default one")
	}
}

func TestLoadingAllMaps(t *testing.T) {
	maps := []string{"the-tyrant", "2P-ring-street", "2P-river-king", "3P-ring-street", "4P-islands", "the-kraken"}

	for _, m := range maps {
		_, err := LoadMap("../../maps/" + m + ".yml")
		if err != nil {
			t.Fatalf("Loading map %s failed with %s", m, err)
		}
	}
}