Coverage for tests/streamwise_app/test_characters.py: 100%
62 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-09 04:47 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-09 04:47 +0000
1#!/usr/bin/env python3
2"""
3Unit tests for StreamWise apps common utilities.
4"""
6import os
7import sys
8import pytest
10# Add current path
11sys.path.append(os.getcwd())
13from tests.test_utils import temp_sys_path
15with temp_sys_path("apps", "apps/streamcast"):
16 from character import Character
17 from character import Characters
18 from character import CHARACTER_COLOR_CLASSES
21def test_get_random_voice() -> None:
22 character = Character("Test")
23 assert character.voice is not None
24 character = Character("Jane", gender="Female")
25 assert character.voice is not None
26 character = Character("Joe", gender="Male")
27 assert character.voice is not None
28 character = Character("Random", gender="Random")
29 assert character.voice is not None
32def test_characters() -> None:
33 characters = Characters()
34 characters["Charlie"] = Character("Charlie")
36 with pytest.raises(ValueError):
37 characters["Charlie"] = "string"
39 assert len(characters) == 1
40 assert "Charlie" in characters
41 assert characters["Charlie"] is not None
42 assert characters.get_by_index(0).name == "Charlie"
43 with pytest.raises(IndexError):
44 characters.get_by_index(1)
46 for character in characters:
47 assert character.name == "Charlie"
49 assert f"{characters}" == "Characters(['Charlie'])"
51 assert "Unknown" not in characters
52 with pytest.raises(KeyError):
53 characters["Unknown"]
56def test_get_character_position() -> None:
57 characters = Characters()
59 assert characters.get_position("Joe") == "left"
61 characters["Alice"] = Character("Alice")
62 assert characters.get_position("Alice") == "center"
64 characters["Bob"] = Character("Bob")
65 assert characters.get_position("Alice") == "left"
66 assert characters.get_position("Bob") == "right"
68 characters["Charlie"] = Character("Charlie")
69 assert characters.get_position("Alice") == "left"
70 assert characters.get_position("Bob") == "center"
71 assert characters.get_position("Charlie") == "right"
73 # Unknown options
74 characters["Dave"] = Character("Dave")
75 assert characters.get_position("Dave") == "left"
78def test_get_color() -> None:
79 characters = Characters()
80 characters["Alice"] = Character("Alice")
81 characters["Bob"] = Character("Bob")
82 characters["Charlie"] = Character("Charlie")
83 characters["Dave"] = Character("Dave")
84 characters["Eve"] = Character("Eve")
86 colors = list(CHARACTER_COLOR_CLASSES.values())
88 assert characters.get_color("Alice") == colors[0]
89 assert characters.get_color("Bob") == colors[1]
90 assert characters.get_color("Charlie") == colors[2]
91 assert characters.get_color("Dave") == colors[3]
92 assert characters.get_color("Eve") == colors[4]