"""Tests for characters.py.

Author: CS149 Faculty
Version: 10/16/2026
"""

from characters import char_counts, is_anagram, spell


def test_spell():
    assert spell("cab") == ["Charlie", "Alfa", "Bravo"]
    assert spell("jmu") == ["Juliett", "Mike", "Uniform"]


def test_spell_not_keys():
    # digits, spaces, and uppercase letters are not keys
    assert spell("r2d2") == ["Romeo", "2", "Delta", "2"]
    assert spell("Bob") == ["B", "Oscar", "Bravo"]
    assert spell("cs 149") == ["Charlie", "Sierra", " ", "1", "4", "9"]
    assert spell("") == []


def test_char_counts():
    assert char_counts("noon") == {"n": 2, "o": 2}
    assert char_counts("Mississippi") == {"M": 1, "i": 4, "s": 4, "p": 2}
    assert char_counts("a b a!") == {"a": 2, " ": 2, "b": 1, "!": 1}
    assert char_counts("x") == {"x": 1}
    assert char_counts("") == {}


def test_is_anagram():
    assert is_anagram("listen", "silent")
    assert is_anagram("night", "thing")
    assert is_anagram("", "")
    assert not is_anagram("aab", "abb")
    assert not is_anagram("cat", "cats")
    assert not is_anagram("Act", "cat")
