package main import ( "strings" "testing" ) func TestGetNewRune(t *testing.T) { img := image{ grid: map[coord]rune{ {0, 0}: '.', {1, 0}: '.', {2, 0}: '.', {0, 1}: '.', {1, 1}: '.', {2, 1}: '.', {0, 2}: '.', {1, 2}: '.', {2, 2}: '.', }, } if img.GetNewRune(coord{1, 1}, ".") != '.' { t.Fail() } img = image{ grid: map[coord]rune{ {0, 0}: '.', {1, 0}: '.', {2, 0}: '.', {0, 1}: '.', {1, 1}: '.', {2, 1}: '.', {0, 2}: '.', {1, 2}: '.', {2, 2}: '#', }, } if img.GetNewRune(coord{1, 1}, ".#") != '#' { t.Fail() } img = image{ grid: map[coord]rune{ {0, 0}: '.', {1, 0}: '.', {2, 0}: '.', {0, 1}: '.', {1, 1}: '.', {2, 1}: '.', {0, 2}: '.', {1, 2}: '#', {2, 2}: '.', }, } if img.GetNewRune(coord{1, 1}, "..#.") != '#' { t.Fail() } img = image{ grid: map[coord]rune{ {0, 0}: '.', {1, 0}: '.', {2, 0}: '.', {0, 1}: '.', {1, 1}: '.', {2, 1}: '.', {0, 2}: '.', {1, 2}: '#', {2, 2}: '#', }, } if img.GetNewRune(coord{1, 1}, "...#") != '#' { t.Fail() } img = image{ background: '#', grid: map[coord]rune{ {0, 0}: '.', {1, 0}: '.', {2, 0}: '.', {0, 1}: '.', {1, 1}: '.', {2, 1}: '.', {0, 2}: '.', {1, 2}: '#', {2, 2}: '#', }, } m := strings.Repeat(".", 484) m += "#" if img.GetNewRune(coord{0, 0}, m) != '#' { // 111100100, or 484 t.Fail() } }