|
16 | 16 |
|
17 | 17 | from __future__ import annotations
|
18 | 18 |
|
| 19 | +from random import choice |
| 20 | +from typing import Iterable |
| 21 | + |
19 | 22 | import pytest
|
20 | 23 |
|
21 | 24 | from extra_platforms import (
|
@@ -108,32 +111,54 @@ def test_unique_ids():
|
108 | 111 | assert ALL_GROUP_IDS.isdisjoint(ALL_PLATFORM_IDS)
|
109 | 112 |
|
110 | 113 |
|
111 |
| -def test_platforms_from_ids(): |
112 |
| - for platform_id in ALL_PLATFORM_IDS: |
113 |
| - platforms = platforms_from_ids(platform_id) |
114 |
| - assert platforms |
115 |
| - assert len(platforms) == 1 |
116 |
| - platform = platforms.pop() |
117 |
| - assert platform.id == platform_id |
118 |
| - assert platform in ALL_PLATFORMS.platforms |
119 |
| - |
120 |
| - for group_id in ALL_GROUP_IDS: |
121 |
| - platforms = platforms_from_ids(group_id) |
122 |
| - assert platforms |
123 |
| - assert len(platforms) >= 1 |
124 |
| - groups = groups_from_ids(group_id) |
125 |
| - assert len(groups) == 1 |
126 |
| - group = groups.pop() |
127 |
| - assert platforms == set(group.platforms) |
128 |
| - |
129 |
| - |
130 |
| -def test_groups_from_ids(): |
131 |
| - for group_id in ALL_GROUP_IDS: |
132 |
| - groups = groups_from_ids(group_id) |
133 |
| - assert len(groups) == 1 |
134 |
| - group = groups.pop() |
135 |
| - assert group.id == group_id |
136 |
| - assert group in ALL_GROUPS |
| 114 | +def randomize_case(strings: Iterable[str]) -> set[str]: |
| 115 | + test_strings = set() |
| 116 | + for string in strings: |
| 117 | + test_strings.add(string) |
| 118 | + for str_func in ( |
| 119 | + str.upper, |
| 120 | + str.lower, |
| 121 | + str.title, |
| 122 | + str.capitalize, |
| 123 | + str.casefold, |
| 124 | + str.swapcase, |
| 125 | + ): |
| 126 | + test_strings.add(str_func(string)) |
| 127 | + test_strings.add( |
| 128 | + "".join(choice((str.upper, str.lower))(char) for char in string) |
| 129 | + ) |
| 130 | + return test_strings |
| 131 | + |
| 132 | + |
| 133 | +@pytest.mark.parametrize("platform_id", randomize_case(ALL_PLATFORM_IDS)) |
| 134 | +def test_platforms_from_ids(platform_id): |
| 135 | + platforms = platforms_from_ids(platform_id) |
| 136 | + assert platforms |
| 137 | + assert len(platforms) == 1 |
| 138 | + platform = platforms.pop() |
| 139 | + assert platform.id == platform_id.lower() |
| 140 | + assert platform in ALL_PLATFORMS.platforms |
| 141 | + |
| 142 | + |
| 143 | +@pytest.mark.parametrize("group_id", randomize_case(ALL_GROUP_IDS)) |
| 144 | +def test_platforms_from_ids_group_resolve(group_id): |
| 145 | + """platforms_from_ids() can also resolve group IDs.""" |
| 146 | + platforms = platforms_from_ids(group_id) |
| 147 | + assert platforms |
| 148 | + assert len(platforms) >= 1 |
| 149 | + groups = groups_from_ids(group_id) |
| 150 | + assert len(groups) == 1 |
| 151 | + group = groups.pop() |
| 152 | + assert platforms == set(group.platforms) |
| 153 | + |
| 154 | + |
| 155 | +@pytest.mark.parametrize("group_id", randomize_case(ALL_GROUP_IDS)) |
| 156 | +def test_groups_from_ids(group_id): |
| 157 | + groups = groups_from_ids(group_id) |
| 158 | + assert len(groups) == 1 |
| 159 | + group = groups.pop() |
| 160 | + assert group.id == group_id.lower() |
| 161 | + assert group in ALL_GROUPS |
137 | 162 |
|
138 | 163 |
|
139 | 164 | @pytest.mark.parametrize(
|
|
0 commit comments