mirror of
https://github.com/onyx-and-iris/aoc2023.git
synced 2024-11-22 10:20:48 +00:00
105 lines
2.2 KiB
Go
105 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/go-playground/assert/v2"
|
|
)
|
|
|
|
func TestSymbolToBool(t *testing.T) {
|
|
//t.Skip("skipping test")
|
|
input := []string{
|
|
"467..114..",
|
|
"...*......",
|
|
"..35..633.",
|
|
"......#...",
|
|
}
|
|
|
|
expected := [][]bool{
|
|
{false, false, false, false, false, false, false, false, false, false},
|
|
{false, false, false, true, false, false, false, false, false, false},
|
|
{false, false, false, false, false, false, false, false, false, false},
|
|
{false, false, false, false, false, false, true, false, false, false},
|
|
}
|
|
|
|
bool_matrix := [][]bool{}
|
|
for _, line := range input {
|
|
bool_matrix = append(bool_matrix, symbolToBool(line))
|
|
}
|
|
|
|
t.Run("Should produce equal boolean matrices", func(t *testing.T) {
|
|
assert.Equal(t, expected, bool_matrix)
|
|
})
|
|
}
|
|
|
|
func TestCheckDigit(t *testing.T) {
|
|
//t.Skip("skipping test")
|
|
symbols := [][]bool{
|
|
{false, false, false, false, false, false, false, false, false, false},
|
|
{false, false, false, true, false, false, false, false, false, false},
|
|
{false, false, false, false, false, false, false, false, false, false},
|
|
{false, false, false, false, false, false, true, false, false, false},
|
|
}
|
|
|
|
d1 := func() digit {
|
|
var d digit = digit{row: 0, col: 2, raw: 0, pass: false}
|
|
i := d.col - 1
|
|
for ; i < len(symbols[d.row]) && i <= d.col+1; i += 1 {
|
|
if i < 0 {
|
|
continue
|
|
}
|
|
if d.row != 0 {
|
|
if symbols[d.row-1][i] {
|
|
d.pass = true
|
|
break
|
|
}
|
|
}
|
|
if symbols[d.row][i] {
|
|
d.pass = true
|
|
break
|
|
}
|
|
if d.row != len(symbols)-1 {
|
|
if symbols[d.row+1][i] {
|
|
d.pass = true
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return d
|
|
}()
|
|
d2 := func() digit {
|
|
var d digit = digit{row: 2, col: 9, raw: 0, pass: false}
|
|
i := d.col - 1
|
|
for ; i < len(symbols[d.row]) && i <= d.col+1; i += 1 {
|
|
if i < 0 {
|
|
continue
|
|
}
|
|
if d.row != 0 {
|
|
if symbols[d.row-1][i] {
|
|
d.pass = true
|
|
break
|
|
}
|
|
}
|
|
if symbols[d.row][i] {
|
|
d.pass = true
|
|
break
|
|
}
|
|
if d.row != len(symbols)-1 {
|
|
if symbols[d.row+1][i] {
|
|
d.pass = true
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return d
|
|
}()
|
|
|
|
t.Run("Should pass the check", func(t *testing.T) {
|
|
assert.Equal(t, true, d1.pass)
|
|
})
|
|
|
|
t.Run("Should fail the check", func(t *testing.T) {
|
|
assert.Equal(t, false, d2.pass)
|
|
})
|
|
}
|