def test_read_file(self):
        """
        test first line of file matches what we expect
        """
        input = Day4.read_file("input")

        self.assertEqual("ecl:gry pid:860033327 eyr:2020 hcl:#fffffd\n",
                         input[0])
    def test_has_two_valid_passports(self):
        """
        testing to see if there are 2 valid passports in the data

        byr (Birth Year)
    iyr (Issue Year)
    eyr (Expiration Year)
    hgt (Height)
    hcl (Hair Color)
    ecl (Eye Color)
    pid (Passport ID)
    cid (Country ID)
        :return:
        """
        lines = Day4.read_file("input")
        count = Day4.count_valid_passports(lines)

        self.assertEqual(2, count)
def test_parse():
    d = Day4()
    input_1 = "[1518-11-01 00:25] wakes up"
    r = (datetime(year=1518, month=11, day=1, hour=0, minute=25), 'w')
    assert r == d.parse_input(input=input_1)
    input_2 = "[1518-11-01 00:05] falls asleep"
    r = (datetime(year=1518, month=11, day=1, hour=0, minute=5), 'f')
    assert r == d.parse_input(input=input_2)
    input_3 = "[1518-11-01 23:58] Guard #99 begins shift"
    r = (datetime(year=1518, month=11, day=1, hour=23, minute=58), '99')
    assert r == d.parse_input(input=input_3)
def test_part2():
    d = Day4()
    input_1 = """[1518-11-01 00:00] Guard #10 begins shift
[1518-11-01 00:05] falls asleep
[1518-11-01 00:25] wakes up
[1518-11-01 00:30] falls asleep
[1518-11-01 00:55] wakes up
[1518-11-01 23:58] Guard #99 begins shift
[1518-11-02 00:40] falls asleep
[1518-11-02 00:50] wakes up
[1518-11-03 00:05] Guard #10 begins shift
[1518-11-03 00:24] falls asleep
[1518-11-03 00:29] wakes up
[1518-11-04 00:02] Guard #99 begins shift
[1518-11-04 00:36] falls asleep
[1518-11-04 00:46] wakes up
[1518-11-05 00:03] Guard #99 begins shift
[1518-11-05 00:45] falls asleep
[1518-11-05 00:55] wakes up"""
    assert ('99', 45, 4455) == d.part2(input_1)
def tpuzzle2():
    return Day4(testCase2)
def tpuzzle():
    return Day4(testCase)
 def test_find_n_for_key_abcdef(self):
     input = 'abcdef'
     expected = 609043
     actual = Day4.find_n_for_key(input, 5)
     self.assertEqual(expected, actual)
 def test_find_n_for_key_pqrstuv(self):
     input = 'pqrstuv'
     expected = 1048970
     actual = Day4.find_n_for_key(input, 5)
     self.assertEqual(expected, actual)