AdventOfCode2021/20/main_test.go

67 lines
1.3 KiB
Go

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()
}
}