# mypy: ignore-errors
# mypy: ignore-errors
import glob

REQUIRED_PHRASES = ["Hello World", "Yum!", "Good weather huh?"]


def test_files() -> None:
    # Get a list of all files in the current directory
    files = glob.glob("./**.txt")

    # Check that there are at least 6 files
    # Check that there are exactly 6 files
    try:
        assert (
            len(files) == 6
        ), f"AssertionError: Expected exactly 6 files, found {len(files)}"
        print("Found exactly 6 files")
    except AssertionError as e:
        raise e

    # Initialize a dictionary to track found phrases
    found_phrases = {phrase: 0 for phrase in REQUIRED_PHRASES}

    # Check the contents of each file
    for file in files:
        with open(file, "r") as f:
            contents = f.read().strip()  # Use strip to remove trailing newlines
            if contents in REQUIRED_PHRASES:
                found_phrases[contents] += 1

    # Check if all phrases have been found exactly twice
    for phrase, found_count in found_phrases.items():
        try:
            assert (
                found_count == 2
            ), f"AssertionError: Phrase '{phrase}' was not found exactly twice."
        except AssertionError as e:
            print("Phrase was not found exactly twice.")
            raise e


if __name__ == "__main__":
    test_files()
