advent_of_code/15/5/test_main.py
2025-12-02 07:55:08 -06:00

78 lines
2.8 KiB
Python

import pytest
from main import check_contains_no_bad_chars, check_doubled_char, check_vowel_count, check_if_nice, check_nonoverlapping_repeats, check_repeat_everyother, check_if_nice_part2
@pytest.mark.parametrize('given, expected',
[
('aei', True),
('xazegov', True),
('aeiouaeiouaeiou', True),
('mnqpcbt', False)
])
def test_vowel_counting(given, expected):
assert check_vowel_count(given) == expected
@pytest.mark.parametrize('given, expected',
[
('aabbccdd', True),
('whythisword', False),
('hegwjzuvuyypxyu', True)
])
def test_double_counting(given, expected):
assert check_doubled_char(given) == expected
@pytest.mark.parametrize('given, expected',
[
('aabbccdd', False),
('whythisword', True)
])
def test_bad_chars(given, expected):
assert check_contains_no_bad_chars(given) == expected
@pytest.mark.parametrize('given, expected',
[
('ugknbfddgicrmopn', True),
('aaa', True),
('jchzalrnumimnmhp', False),
('haegwjzuvuyypxyu', False),
('dvszwmarrgswjxmb', False)
])
def test_examples(given, expected):
assert check_if_nice(given) == expected
@pytest.mark.parametrize('given, expected',
[
('xyxy', True),
('xxyxx', True),
('aaa', False)
])
def test_nonopverlapping(given, expected):
assert check_nonoverlapping_repeats(given) == expected
@pytest.mark.parametrize('given, expected',
[
('xyx', True),
('xxyxx', True),
('abcdefeghi', True),
('aaa', True),
('blargh', False)
])
def test_repeat_everyother(given, expected):
assert check_repeat_everyother(given) == expected
@pytest.mark.parametrize('given, expected',
[
('qjhvhtzxzqqjkmpb', True),
('xxyxx', True),
('uurcxstgmygtbstg', False),
('ieodomkazucvgmuy', False)
])
def test_part2_examples(given, expected):
assert check_if_nice_part2(given) == expected