package game import ( "strings" "testing" ) 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)` r := strings.NewReader(s) m, err := readMap(r) if err != nil { t.Fatalf("Parsing failed with: %v", err) } 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; y < len(m.Tiles[y]); y++ { if m.TileAt(Position{x, y}) != &m.Tiles[y][x] { t.Fatalf("TileAt and Tiles differ") } } } if m.RessourceGain != DEFAULT_RESSOURCE_GAIN { t.Fatalf("ressource 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) } } }