def test_multiLine_Example(self): defn = """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""" expected = [{ "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", }] result = build_dicts(defn) self.assertEqual(len(expected), len(result)) for i in range(len(expected)): self.assertDictEqual(expected[i], result[i]) self.assertListEqual(expected, build_dicts(defn))
def test_MissingItem(self): validDefn = """ pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980 hcl:#623a2f """ item = build_dicts(validDefn)[0] self.assertEqual(True, is_valid_item_strict(item)) del item["pid"] self.assertEqual(False, is_valid_item_strict(item))
def test_allowBlank(self): defn = "a:b cc: eee:fff 1:2" expected = [{ "a": "b", "cc": "", "eee": "fff", "1": "2", }] self.assertListEqual(expected, build_dicts(defn))
def test_oneLine(self): defn = "a:b cc:d eee:fff 1:2" expected = [{ "a": "b", "cc": "d", "eee": "fff", "1": "2", }] self.assertListEqual(expected, build_dicts(defn))
def test_multiLine_2Dicts(self): defn = """ a:b cc:d eee:fff gg:h 1:2""" expected = [{ "a": "b", "cc": "d" }, { "eee": "fff", "gg": "h", "1": "2", }] self.assertListEqual(expected, build_dicts(defn))
def test_Example1(self): validDefns = """ 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 """ items = build_dicts(validDefns) for i in items: self.assertTrue(is_valid_item_strict(i))
def test_Example2(self): invalidDefns = """ 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 """ items = build_dicts(invalidDefns) for i in items: self.assertEqual(False, is_valid_item_strict(i))
def test_WrongParts_Missing(self): defn = "a:b eee 1:2" self.assertRaises(ValueError, lambda: build_dicts(defn))
def test_WrongParts_Extra(self): defn = "a:b cc:d:xxx eee:fff 1:2" self.assertRaises(ValueError, lambda: build_dicts(defn))