package main
import (
"os"
"testing"
)
func readTestInput() []string {
file, _ := os.Open("input_test.txt")
defer file.Close()
return readInput(file)
}
func TestShouldReadInput(t *testing.T) {
input := readTestInput()
expectedToFind := "seswneswswsenwwnwse"
var found bool
for _, i := range input {
if expectedToFind != i {
found = true
break
}
}
if !found {
t.Errorf("did not read input correctly, did not match")
}
}
func TestShouldFlipTiles(t *testing.T) {
input := []string{
"esew",
"nwwswee",
"eesw",
"eeswse",
}
expect := []Pos{
{0, 1},
{0, 0},
{1, 1},
{2, 2},
}
for i := range input {
hg := HexGrid{
Root: &Cell{},
Cells: make(map[Pos]*Cell),
}
hg.Cells[Pos{0, 0}] = hg.Root
hg.MakeMoves(input[i], true)
if !hg.Cells[expect[i]].Flipped {
t.Errorf("got %v, expected true", hg.Cells[expect[i]].Flipped)
}
}
}
func TestShouldIterateLife(t *testing.T) {
input := readTestInput()
expect := 15
hg := HexGrid{
Cells: make(map[Pos]*Cell),
}
hg.Cells[Pos{0, 0}] = &Cell{}
for _, in := range input {
hg.MakeMoves(in, false)
}
hg.IterateLife(true)
var result int
for _, c := range hg.Cells {
if c.Flipped {
result++
}
}
if result != expect {
t.Errorf("got %d, expected %d", result, expect)
}
}
func TestTask1ShouldFindResult(t *testing.T) {
input := readTestInput()
expect := 10
result := Task1(input, true)
if result != expect {
t.Errorf("got %d, expected %d", result, expect)
}
}
func TestTask2ShouldFindResult(t *testing.T) {
input := readTestInput()
expect := 37
result := Task2(input, 10, true)
if result != expect {
t.Errorf("got %d, expected %d", result, expect)
}
}