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.
84 lines
1.6 KiB
Go
84 lines
1.6 KiB
Go
package day19
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"gitea.paas.celticinfo.fr/oabrivard/aoc2023/utils"
|
|
)
|
|
|
|
func TestParseWorkflows(t *testing.T) {
|
|
lines := []string{
|
|
"px{a<2006:qkq,m>2090:A,rfg}",
|
|
"pv{a>1716:R,A}",
|
|
"lnx{m>1548:A,A}",
|
|
"rfg{s<537:gd,x>2440:R,A}",
|
|
"qs{s>3448:A,lnx}",
|
|
"qkq{x<1416:A,crn}",
|
|
"crn{x>2662:A,R}",
|
|
"in{s<1351:px,qqz}",
|
|
"qqz{s>2770:qs,m<1801:hdj,R}",
|
|
"gd{a>3333:R,R}",
|
|
"hdj{m>838:A,pv}",
|
|
}
|
|
|
|
result := ParseWorkflows(lines)
|
|
|
|
if len(result) != 11 {
|
|
t.Fatalf("expected 11, got %d", len(result))
|
|
}
|
|
}
|
|
|
|
func TestParseParts(t *testing.T) {
|
|
lines := []string{
|
|
"{x=787,m=2655,a=1222,s=2876}",
|
|
"{x=1679,m=44,a=2067,s=496}",
|
|
"{x=2036,m=264,a=79,s=2244}",
|
|
"{x=2461,m=1339,a=466,s=291}",
|
|
"{x=2127,m=1623,a=2188,s=1013}",
|
|
}
|
|
|
|
result := ParsParts(lines)
|
|
|
|
if len(result) != 5 {
|
|
t.Fatalf("expected 5, got %d", len(result))
|
|
}
|
|
}
|
|
|
|
func TestPart1(t *testing.T) {
|
|
lines := []string{
|
|
"px{a<2006:qkq,m>2090:A,rfg}",
|
|
"pv{a>1716:R,A}",
|
|
"lnx{m>1548:A,A}",
|
|
"rfg{s<537:gd,x>2440:R,A}",
|
|
"qs{s>3448:A,lnx}",
|
|
"qkq{x<1416:A,crn}",
|
|
"crn{x>2662:A,R}",
|
|
"in{s<1351:px,qqz}",
|
|
"qqz{s>2770:qs,m<1801:hdj,R}",
|
|
"gd{a>3333:R,R}",
|
|
"hdj{m>838:A,pv}",
|
|
"",
|
|
"{x=787,m=2655,a=1222,s=2876}",
|
|
"{x=1679,m=44,a=2067,s=496}",
|
|
"{x=2036,m=264,a=79,s=2244}",
|
|
"{x=2461,m=1339,a=466,s=291}",
|
|
"{x=2127,m=1623,a=2188,s=1013}",
|
|
}
|
|
|
|
result := Part1(lines)
|
|
|
|
if result != 19114 {
|
|
t.Fatalf("expected 19114, got %d", result)
|
|
}
|
|
}
|
|
|
|
func TestPart1WithInput(t *testing.T) {
|
|
lines := utils.ReadLines("input.txt")
|
|
|
|
result := Part1(lines)
|
|
|
|
if result != 575412 {
|
|
t.Fatalf("expected 575412, got %d", result)
|
|
}
|
|
}
|