|
18 | 18 | MultiDictProxy, |
19 | 19 | MultiMapping, |
20 | 20 | MutableMultiMapping, |
| 21 | + istr, |
21 | 22 | ) |
22 | 23 |
|
23 | 24 | _T = TypeVar("_T") |
@@ -1223,3 +1224,51 @@ def test_create_multidict_from_existing_multidict_new_pairs() -> None: |
1223 | 1224 | new = MultiDict(original, h4="header4") |
1224 | 1225 | assert "h4" in new |
1225 | 1226 | assert "h4" not in original |
| 1227 | + |
| 1228 | + |
| 1229 | +def test_convert_multidict_to_cimultidict_and_back( |
| 1230 | + case_sensitive_multidict_class: type[MultiDict[str]], |
| 1231 | + case_insensitive_multidict_class: type[CIMultiDict[str]], |
| 1232 | + case_insensitive_str_class: type[istr], |
| 1233 | +) -> None: |
| 1234 | + """Test conversion from MultiDict to CIMultiDict.""" |
| 1235 | + start_as_md = case_sensitive_multidict_class( |
| 1236 | + [("KEY", "value1"), ("key2", "value2")] |
| 1237 | + ) |
| 1238 | + assert start_as_md.get("KEY") == "value1" |
| 1239 | + assert start_as_md["KEY"] == "value1" |
| 1240 | + assert start_as_md.get("key2") == "value2" |
| 1241 | + assert start_as_md["key2"] == "value2" |
| 1242 | + start_as_cimd = case_insensitive_multidict_class( |
| 1243 | + [("KEY", "value1"), ("key2", "value2")] |
| 1244 | + ) |
| 1245 | + assert start_as_cimd.get("key") == "value1" |
| 1246 | + assert start_as_cimd["key"] == "value1" |
| 1247 | + assert start_as_cimd.get("key2") == "value2" |
| 1248 | + assert start_as_cimd["key2"] == "value2" |
| 1249 | + converted_to_ci = case_insensitive_multidict_class(start_as_md) |
| 1250 | + assert converted_to_ci.get("key") == "value1" |
| 1251 | + assert converted_to_ci["key"] == "value1" |
| 1252 | + assert converted_to_ci.get("key2") == "value2" |
| 1253 | + assert converted_to_ci["key2"] == "value2" |
| 1254 | + converted_to_md = case_sensitive_multidict_class(converted_to_ci) |
| 1255 | + assert all(type(k) is case_insensitive_str_class for k in converted_to_ci.keys()) |
| 1256 | + assert converted_to_md.get("KEY") == "value1" |
| 1257 | + assert converted_to_md["KEY"] == "value1" |
| 1258 | + assert converted_to_md.get("key2") == "value2" |
| 1259 | + assert converted_to_md["key2"] == "value2" |
| 1260 | + |
| 1261 | + |
| 1262 | +def test_convert_multidict_to_cimultidict_eq( |
| 1263 | + case_sensitive_multidict_class: type[MultiDict[str]], |
| 1264 | + case_insensitive_multidict_class: type[CIMultiDict[str]], |
| 1265 | +) -> None: |
| 1266 | + """Test compare after conversion from MultiDict to CIMultiDict.""" |
| 1267 | + original = case_sensitive_multidict_class( |
| 1268 | + [("h1", "header1"), ("h2", "header2"), ("h3", "header3")] |
| 1269 | + ) |
| 1270 | + assert case_insensitive_multidict_class( |
| 1271 | + original |
| 1272 | + ) == case_insensitive_multidict_class( |
| 1273 | + [("H1", "header1"), ("H2", "header2"), ("H3", "header3")] |
| 1274 | + ) |
0 commit comments