42 lines
2.1 KiB
Python
42 lines
2.1 KiB
Python
# SPDX-License-Identifier: MIT
|
|
# Copyright (c) 2020 Akumatic
|
|
|
|
from code import parse_data, part1
|
|
import passport
|
|
|
|
def test():
|
|
input = ["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"]
|
|
passports = parse_data(input)
|
|
assert len(passports) == 4
|
|
assert part1(passports) == 2
|
|
|
|
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"]
|
|
passports = parse_data(input)
|
|
assert all((not p.valid_data() for p in passports))
|
|
|
|
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"]
|
|
passports = parse_data(input)
|
|
assert all((p.valid_data() for p in passports))
|
|
|
|
assert passport.validate_byr(2002) == True
|
|
assert passport.validate_byr(2003) == False
|
|
assert passport.validate_hgt("60in") == True
|
|
assert passport.validate_hgt("190cm") == True
|
|
assert passport.validate_hgt("190in") == False
|
|
assert passport.validate_hgt("190") == False
|
|
assert passport.validate_hcl("#123abc") == True
|
|
assert passport.validate_hcl("#123abz") == False
|
|
assert passport.validate_hcl("123abc") == False
|
|
assert passport.validate_ecl("brn") == True
|
|
assert passport.validate_ecl("wat") == False
|
|
assert passport.validate_pid("000000001") == True
|
|
assert passport.validate_pid("0123456789") == False |