1
0
Files
Advent-of-Code/2020/src/test/kotlin/Day04Test.kt
T
2021-12-01 19:32:38 +01:00

109 lines
3.1 KiB
Kotlin

package be.vandewalleh.aoc.days
import be.vandewalleh.aoc.utils.factory.createDay
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
class Day04Test {
@Nested
inner class Example {
private val example = """
ecl:gry pid:860033327 eyr:2020 hcl:#fffffd
byr:1937 iyr:2017 cid:147 hgt:183cm
iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884
hcl:#cfa07d byr:1929
hcl:#ae17e1 iyr:2013
eyr:2024
ecl:brn pid:760753108 byr:1931
hgt:179cm
hcl:#cfa07d eyr:2025 pid:166559648
iyr:2011 ecl:brn hgt:59in
""".trimIndent()
private val day04 = Day04(example)
@Test
fun parse() {
val str = """
[(ecl, gry), (pid, 860033327), (eyr, 2020), (hcl, #fffffd), (byr, 1937), (iyr, 2017), (cid, 147), (hgt, 183cm)]
[(iyr, 2013), (ecl, amb), (cid, 350), (eyr, 2023), (pid, 028048884), (hcl, #cfa07d), (byr, 1929)]
[(hcl, #ae17e1), (iyr, 2013), (eyr, 2024), (ecl, brn), (pid, 760753108), (byr, 1931), (hgt, 179cm)]
[(hcl, #cfa07d), (eyr, 2025), (pid, 166559648), (iyr, 2011), (ecl, brn), (hgt, 59in)]
""".trimIndent()
Assertions.assertEquals(str, day04.entries.joinToString("\n"))
}
@Test
fun `part1 result`() {
assertThat(day04.part1()).isEqualTo(2)
}
@Test
fun `part2 invalid`(){
val input = """
eyr:1972 cid:100
hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926
iyr:2019
hcl:#602927 eyr:1967 hgt:170cm
ecl:grn pid:012533040 byr:1946
hcl:dab227 iyr:2012
ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277
hgt:59cm ecl:zzz
eyr:2038 hcl:74454a iyr:2023
pid:3556412378 byr:2007
""".trimIndent()
assertThat(Day04(input).part2()).isEqualTo(0)
}
@Test
fun `part2 valid`(){
val input = """
pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980
hcl:#623a2f
eyr:2029 ecl:blu cid:129 byr:1989
iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm
hcl:#888785
hgt:164cm byr:2001 iyr:2015 cid:88
pid:545766238 ecl:hzl
eyr:2022
iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719
""".trimIndent()
assertThat(Day04(input).part2()).isEqualTo(4)
}
}
@Nested
inner class RealInput {
private val day04 = createDay<Day04>()
@Test
fun `part1 result`() {
assertThat(day04.part1()).isEqualTo(192)
}
@Test
fun `part2 result`() {
assertThat(day04.part2())
.`as`("Part 2 results")
.isEqualTo(101)
}
}
}