|
5 | 5 | from pupgui2.util import *
|
6 | 6 |
|
7 | 7 | from pupgui2.constants import POSSIBLE_INSTALL_LOCATIONS, GITLAB_API, GITHUB_API
|
8 |
| -from pupgui2.datastructures import SteamApp, LutrisGame, HeroicGame, Launcher |
| 8 | +from pupgui2.datastructures import SteamApp, LutrisGame, HeroicGame, Launcher, SteamUser |
9 | 9 |
|
10 | 10 |
|
11 | 11 | github_api_ratelimit_url: str = 'https://api.github.com/rate_limit/'
|
@@ -121,25 +121,69 @@ def test_get_launcher_from_installdir(launcher_paths: list[str], expected_launch
|
121 | 121 | assert all(launcher == expected_launcher for launcher in launcher_from_installdir)
|
122 | 122 |
|
123 | 123 |
|
124 |
| -def test_get_random_game_name() -> None: |
| 124 | +@pytest.mark.parametrize( |
| 125 | + 'game_list, game_name_attr', [ |
| 126 | + pytest.param([SteamApp() for _ in range(3)], 'game_name', id = 'Steam Games'), |
| 127 | + pytest.param([LutrisGame() for _ in range(3)], 'name', id = 'Lutris Games'), |
| 128 | + pytest.param([HeroicGame() for _ in range(3)], 'title', id = 'Heroic Games'), |
| 129 | + ] |
| 130 | +) |
| 131 | +def test_get_random_game_name(game_list: list[SteamApp] | list[LutrisGame] | list[HeroicGame], game_name_attr: str) -> None: |
125 | 132 |
|
126 | 133 | """ Test whether get_random_game_name returns a valid game name for each launcher game type. """
|
127 | 134 |
|
128 | 135 | names: list[str] = ["game", "A super cool game", "A game with a very long name that is very long", "0123456789"]
|
| 136 | + bad_names: list[str] = list("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor".split(',')) |
| 137 | + |
| 138 | + for i, game in enumerate(game_list): |
| 139 | + setattr(game, game_name_attr, names[i]) |
| 140 | + |
| 141 | + for i in range(len(names) * 2): |
| 142 | + result: str = get_random_game_name(game_list) |
| 143 | + |
| 144 | + assert isinstance(result, str) |
| 145 | + |
| 146 | + assert result in names |
| 147 | + assert result not in bad_names |
| 148 | + |
| 149 | + |
| 150 | +@pytest.mark.parametrize( |
| 151 | + 'game_list, game_name_attr', [ |
| 152 | + pytest.param([SteamApp() for _ in range(4)], 'game_name', id = 'Steam Games'), |
| 153 | + pytest.param([LutrisGame() for _ in range(4)], 'name', id = 'Lutris Games'), |
| 154 | + pytest.param([HeroicGame() for _ in range(4)], 'title', id = 'Heroic Games'), |
| 155 | + ] |
| 156 | +) |
| 157 | +def test_get_random_game_name_returns_str(game_list: list[SteamApp] | list[LutrisGame] | list[HeroicGame], game_name_attr: str) -> None: |
| 158 | + |
| 159 | + """ Test that get_random_game_name will always return a string. """ |
| 160 | + |
| 161 | + names: list[int | float] = [12, 3.14, [1, 734, 12112121][0], -85, 99999999999] |
| 162 | + str_names: list[str] = [str(name) for name in names] |
| 163 | + |
| 164 | + for i, game in enumerate(game_list): |
| 165 | + setattr(game, game_name_attr, names[i]) |
129 | 166 |
|
130 |
| - steam_app: list[SteamApp] = [SteamApp() for _ in range(len(names))] |
131 |
| - lutris_game: list[LutrisGame] = [LutrisGame() for _ in range(len(names))] |
132 |
| - heroic_game: list[HeroicGame] = [HeroicGame() for _ in range(len(names))] |
| 167 | + for i in range(len(names) * 2): |
133 | 168 |
|
134 |
| - for i, name in enumerate(names): |
135 |
| - steam_app[i].game_name = name |
136 |
| - lutris_game[i].name = name |
137 |
| - heroic_game[i].title = name |
| 169 | + result: str = get_random_game_name(game_list) |
138 | 170 |
|
139 |
| - for i in range(10): |
140 |
| - assert get_random_game_name(steam_app) in names |
141 |
| - assert get_random_game_name(lutris_game) in names |
142 |
| - assert get_random_game_name(heroic_game) in names |
| 171 | + assert isinstance(result, str) |
| 172 | + assert result in str_names |
| 173 | + |
| 174 | + |
| 175 | +@pytest.mark.parametrize( |
| 176 | + 'game_list', [ |
| 177 | + pytest.param([], id = 'Empty List'), |
| 178 | + pytest.param((), id = 'Empty Tuple'), |
| 179 | + pytest.param([[], []], id = 'Empty List of Lists'), |
| 180 | + pytest.param([(), ()], id = 'Empty List of Tuples'), |
| 181 | + pytest.param([SteamUser(), SteamUser()], id = 'Empty List of SteamUser object') |
| 182 | + ] |
| 183 | +) |
| 184 | +def test_get_random_game_name_unknown(game_list) -> None: |
| 185 | + """ Test that get_random_game_name returns an empty string when given a list that does not have a known game type. """ |
| 186 | + assert get_random_game_name(game_list) == '' |
143 | 187 |
|
144 | 188 |
|
145 | 189 | def test_is_online(responses: RequestsMock) -> None:
|
|
0 commit comments