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

1#!/usr/bin/env python3 

2""" 

3Unit tests for StreamWise apps common utilities. 

4""" 

5 

6import os 

7import sys 

8import pytest 

9 

10# Add current path 

11sys.path.append(os.getcwd()) 

12 

13from tests.test_utils import temp_sys_path 

14 

15with temp_sys_path("apps", "apps/streamcast"): 

16 from character import Character 

17 from character import Characters 

18 from character import CHARACTER_COLOR_CLASSES 

19 

20 

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 

30 

31 

32def test_characters() -> None: 

33 characters = Characters() 

34 characters["Charlie"] = Character("Charlie") 

35 

36 with pytest.raises(ValueError): 

37 characters["Charlie"] = "string" 

38 

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) 

45 

46 for character in characters: 

47 assert character.name == "Charlie" 

48 

49 assert f"{characters}" == "Characters(['Charlie'])" 

50 

51 assert "Unknown" not in characters 

52 with pytest.raises(KeyError): 

53 characters["Unknown"] 

54 

55 

56def test_get_character_position() -> None: 

57 characters = Characters() 

58 

59 assert characters.get_position("Joe") == "left" 

60 

61 characters["Alice"] = Character("Alice") 

62 assert characters.get_position("Alice") == "center" 

63 

64 characters["Bob"] = Character("Bob") 

65 assert characters.get_position("Alice") == "left" 

66 assert characters.get_position("Bob") == "right" 

67 

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" 

72 

73 # Unknown options 

74 characters["Dave"] = Character("Dave") 

75 assert characters.get_position("Dave") == "left" 

76 

77 

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") 

85 

86 colors = list(CHARACTER_COLOR_CLASSES.values()) 

87 

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]