123456789101112131415161718192021222324252627282930313233343536 |
- from django.test import SimpleTestCase
- from django.utils.hashable import make_hashable
- class TestHashable(SimpleTestCase):
- def test_equal(self):
- tests = (
- ([], ()),
- (["a", 1], ("a", 1)),
- ({}, ()),
- ({"a"}, ("a",)),
- (frozenset({"a"}), {"a"}),
- ({"a": 1, "b": 2}, (("a", 1), ("b", 2))),
- ({"b": 2, "a": 1}, (("a", 1), ("b", 2))),
- (("a", ["b", 1]), ("a", ("b", 1))),
- (("a", {"b": 1}), ("a", (("b", 1),))),
- )
- for value, expected in tests:
- with self.subTest(value=value):
- self.assertEqual(make_hashable(value), expected)
- def test_count_equal(self):
- tests = (
- ({"a": 1, "b": ["a", 1]}, (("a", 1), ("b", ("a", 1)))),
- ({"a": 1, "b": ("a", [1, 2])}, (("a", 1), ("b", ("a", (1, 2))))),
- )
- for value, expected in tests:
- with self.subTest(value=value):
- self.assertCountEqual(make_hashable(value), expected)
- def test_unhashable(self):
- class Unhashable:
- __hash__ = None
- with self.assertRaisesMessage(TypeError, "unhashable type: 'Unhashable'"):
- make_hashable(Unhashable())
|