|
37 | 37 | assert_raises_errno, |
38 | 38 | assert_succeeds, |
39 | 39 | assert_warns, |
40 | | - assert_warns_regex) |
| 40 | + assert_warns_regex, assert_dict_equal) |
41 | 41 |
|
42 | 42 |
|
43 | 43 | class _DummyObject(object): |
@@ -187,6 +187,10 @@ def test_assert_equal__not_equal__custom_message(self): |
187 | 187 | with _assert_raises_assertion("'string' != 55;'string';55"): |
188 | 188 | assert_equal("string", 55, "{msg};{first!r};{second!r}") |
189 | 189 |
|
| 190 | + def test_assert_equal__dict(self): |
| 191 | + with _assert_raises_assertion("key 'foo' missing from right dict"): |
| 192 | + assert_equal({"foo": 5}, {}) |
| 193 | + |
190 | 194 | # assert_not_equal() |
191 | 195 |
|
192 | 196 | def test_assert_not_equal__not_equal(self): |
@@ -365,6 +369,74 @@ def test_not_assert_almost_equal__delta_lt_0(self): |
365 | 369 | else: |
366 | 370 | raise AssertionError("ValueError not raised") |
367 | 371 |
|
| 372 | + # assert_dict_equal() |
| 373 | + |
| 374 | + def test_assert_dict_equal__empty_dicts(self): |
| 375 | + assert_dict_equal({}, {}) |
| 376 | + |
| 377 | + def test_assert_dict_equal__dicts_are_equal(self): |
| 378 | + assert_dict_equal({"foo": 5}, {"foo": 5}) |
| 379 | + |
| 380 | + def test_assert_dict_equal__one_key_missing_from_right(self): |
| 381 | + with _assert_raises_assertion("key 'foo' missing from right dict"): |
| 382 | + assert_dict_equal({"bar": 10, "foo": 5}, {"bar": 10}) |
| 383 | + |
| 384 | + def test_assert_dict_equal__multiple_keys_missing_from_right(self): |
| 385 | + with _assert_raises_assertion( |
| 386 | + "keys 'bar', 'foo' missing from right dict"): |
| 387 | + assert_dict_equal({"foo": 5, "bar": 10, "baz": 15}, {"baz": 15}) |
| 388 | + |
| 389 | + def test_assert_dict_equal__one_key_missing_from_left(self): |
| 390 | + with _assert_raises_assertion("extra key 'foo' in right dict"): |
| 391 | + assert_dict_equal({"bar": 10}, {"bar": 10, "foo": 5}) |
| 392 | + |
| 393 | + def test_assert_dict_equal__multiple_keys_missing_from_left(self): |
| 394 | + with _assert_raises_assertion("extra keys 'bar', 'foo' in right dict"): |
| 395 | + assert_dict_equal({"baz": 15}, {"foo": 5, "bar": 10, "baz": 15}) |
| 396 | + |
| 397 | + def test_assert_dict_equal__values_do_not_match(self): |
| 398 | + with _assert_raises_assertion("key 'foo' differs: 15 != 10"): |
| 399 | + assert_dict_equal({"foo": 15}, {"foo": 10}) |
| 400 | + |
| 401 | + def test_assert_dict_equal__not_string_keys(self): |
| 402 | + with _assert_raises_assertion("key 10 missing from right dict"): |
| 403 | + assert_dict_equal({10: "foo"}, {}) |
| 404 | + with _assert_raises_assertion( |
| 405 | + "keys 'foo', 5 missing from right dict"): |
| 406 | + assert_dict_equal({5: "", "foo": ""}, {}) |
| 407 | + with _assert_raises_assertion("extra key 10 in right dict"): |
| 408 | + assert_dict_equal({}, {10: "foo"}) |
| 409 | + with _assert_raises_assertion("extra keys 'foo', 5 in right dict"): |
| 410 | + assert_dict_equal({}, {5: "", "foo": ""}) |
| 411 | + |
| 412 | + def test_assert_dict_equal__message_precedence(self): |
| 413 | + with _assert_raises_assertion("key 'foo' missing from right dict"): |
| 414 | + assert_dict_equal({"foo": "", "bar": "", "baz": 5}, |
| 415 | + {"bar": "", "baz": 10, "extra": ""}) |
| 416 | + with _assert_raises_assertion("extra key 'extra' in right dict"): |
| 417 | + assert_dict_equal({"bar": "", "baz": 5}, |
| 418 | + {"bar": "", "baz": 10, "extra": ""}) |
| 419 | + |
| 420 | + def test_assert_dict_equal__custom_key_message(self): |
| 421 | + with _assert_raises_assertion( |
| 422 | + "key 'foo' missing from right dict;" |
| 423 | + "{'foo': ''};{'bar': ''};['foo'];['bar']"): |
| 424 | + assert_dict_equal( |
| 425 | + {"foo": ""}, {"bar": ""}, |
| 426 | + key_msg_fmt="{msg};{first!r};{second!r};" |
| 427 | + "{missing_keys!r};{extra_keys!r}" |
| 428 | + ) |
| 429 | + |
| 430 | + def test_assert_dict_equal__custom_value_message(self): |
| 431 | + with _assert_raises_assertion( |
| 432 | + "key 'foo' differs: 5 != 10;{'foo': 5};{'foo': 10};" |
| 433 | + "'foo';5;10"): |
| 434 | + assert_dict_equal( |
| 435 | + {"foo": 5}, {"foo": 10}, |
| 436 | + value_msg_fmt="{msg};{first!r};{second!r};" |
| 437 | + "{key!r};{first_value};{second_value}" |
| 438 | + ) |
| 439 | + |
368 | 440 | # assert_less() |
369 | 441 |
|
370 | 442 | def test_assert_less(self): |
|
0 commit comments