You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
2.7 KiB
Go
174 lines
2.7 KiB
Go
package day10
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"gitea.paas.celticinfo.fr/oabrivard/aoc2023/utils"
|
|
)
|
|
|
|
func TestFindDistance1(t *testing.T) {
|
|
lines := []string{
|
|
"-L|F7",
|
|
"7S-7|",
|
|
"L|7||",
|
|
"-L-J|",
|
|
"L|-JF",
|
|
}
|
|
|
|
result := FindDistance(lines)
|
|
|
|
if result != 4 {
|
|
t.Fatalf("expected 4, got %v", result)
|
|
}
|
|
}
|
|
|
|
func TestFindDistance2(t *testing.T) {
|
|
lines := []string{
|
|
"7-F7-",
|
|
".FJ|7",
|
|
"SJLL7",
|
|
"|F--J",
|
|
"LJ.LJ",
|
|
}
|
|
|
|
result := FindDistance(lines)
|
|
|
|
if result != 8 {
|
|
t.Fatalf("expected 8, got %v", result)
|
|
}
|
|
}
|
|
|
|
func TestSumLastTermsWithInput(t *testing.T) {
|
|
lines := utils.ReadLines("input.txt")
|
|
|
|
result := FindDistance(lines)
|
|
|
|
if result != 6697 {
|
|
t.Fatalf("expected 6697, got %v", result)
|
|
}
|
|
}
|
|
|
|
func TestCountInPolygon1(t *testing.T) {
|
|
lines := []string{
|
|
"-L|F7",
|
|
"7S-7|",
|
|
"L|.||",
|
|
"-L-J|",
|
|
"L|-JF",
|
|
}
|
|
|
|
result := CountInPolygon(lines)
|
|
|
|
if result != 1 {
|
|
t.Fatalf("expected 1, got %v", result)
|
|
}
|
|
}
|
|
|
|
func TestCountInPolygon2(t *testing.T) {
|
|
lines := []string{
|
|
"7-F7-",
|
|
".FJ|7",
|
|
"SJ.L7",
|
|
"|F--J",
|
|
"LJ.LJ",
|
|
}
|
|
|
|
result := CountInPolygon(lines)
|
|
|
|
if result != 1 {
|
|
t.Fatalf("expected 1, got %v", result)
|
|
}
|
|
}
|
|
|
|
func TestCountInPolygon3(t *testing.T) {
|
|
lines := []string{
|
|
"...........",
|
|
".S-------7.",
|
|
".|F-----7|.",
|
|
".||.....||.",
|
|
".||.....||.",
|
|
".|L-7.F-J|.",
|
|
".|..|.|..|.",
|
|
".L--J.L--J.",
|
|
"...........",
|
|
}
|
|
|
|
result := CountInPolygon(lines)
|
|
|
|
if result != 4 {
|
|
t.Fatalf("expected 4, got %v", result)
|
|
}
|
|
}
|
|
|
|
func TestCountInPolygon4(t *testing.T) {
|
|
lines := []string{
|
|
"..........",
|
|
".S------7.",
|
|
".|F----7|.",
|
|
".||....||.",
|
|
".||....||.",
|
|
".|L-7F-J|.",
|
|
".|..||..|.",
|
|
".L--JL--J.",
|
|
"..........",
|
|
}
|
|
|
|
result := CountInPolygon(lines)
|
|
|
|
if result != 4 {
|
|
t.Fatalf("expected 4, got %v", result)
|
|
}
|
|
}
|
|
|
|
func TestCountInPolygon5(t *testing.T) {
|
|
lines := []string{
|
|
".F----7F7F7F7F-7....",
|
|
".|F--7||||||||FJ....",
|
|
".||.FJ||||||||L7....",
|
|
"FJL7L7LJLJ||LJ.L-7..",
|
|
"L--J.L7...LJS7F-7L7.",
|
|
"....F-J..F7FJ|L7L7L7",
|
|
"....L7.F7||L7|.L7L7|",
|
|
".....|FJLJ|FJ|F7|.LJ",
|
|
"....FJL-7.||.||||...",
|
|
"....L---J.LJ.LJLJ...",
|
|
}
|
|
|
|
result := CountInPolygon(lines)
|
|
|
|
if result != 8 {
|
|
t.Fatalf("expected 8, got %v", result)
|
|
}
|
|
}
|
|
|
|
func TestCountInPolygon6(t *testing.T) {
|
|
lines := []string{
|
|
"FF7FSF7F7F7F7F7F---7",
|
|
"L|LJ||||||||||||F--J",
|
|
"FL-7LJLJ||||||LJL-77",
|
|
"F--JF--7||LJLJ7F7FJ-",
|
|
"L---JF-JLJ.||-FJLJJ7",
|
|
"|F|F-JF---7F7-L7L|7|",
|
|
"|FFJF7L7F-JF7|JL---7",
|
|
"7-L-JL7||F7|L7F-7F7|",
|
|
"L.L7LFJ|||||FJL7||LJ",
|
|
"L7JLJL-JLJLJL--JLJ.L",
|
|
}
|
|
|
|
result := CountInPolygon(lines)
|
|
|
|
if result != 10 {
|
|
t.Fatalf("expected 10, got %v", result)
|
|
}
|
|
}
|
|
|
|
func TestCountInPolygonWithInput(t *testing.T) {
|
|
lines := utils.ReadLines("input.txt")
|
|
|
|
result := CountInPolygon(lines)
|
|
|
|
if result != 423 {
|
|
t.Fatalf("expected 423, got %v", result)
|
|
}
|
|
}
|