From e96078118c7e0b39b5b65f79d6e908bbc111f47c Mon Sep 17 00:00:00 2001 From: Thomas Kemmer Date: Sun, 18 Aug 2024 20:57:50 +0200 Subject: [PATCH] Fix #302: Improve cachetools.keys unit tests. --- tests/test_keys.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/test_keys.py b/tests/test_keys.py index 892a620..f3fdba3 100644 --- a/tests/test_keys.py +++ b/tests/test_keys.py @@ -21,6 +21,24 @@ def test_hashkey(self, key=cachetools.keys.hashkey): self.assertEqual(key(1, 2, 3), key(1.0, 2.0, 3.0)) self.assertEqual(hash(key(1, 2, 3)), hash(key(1.0, 2.0, 3.0))) + def methodkey(self, key=cachetools.keys.methodkey): + # similar to hashkey(), but ignores its first positional argument + self.assertEqual(key("x"), key("y")) + self.assertEqual(hash(key("x")), hash(key("y"))) + self.assertEqual(key("x", 1, 2, 3), key("y", 1, 2, 3)) + self.assertEqual(hash(key("x", 1, 2, 3)), hash(key("y", 1, 2, 3))) + self.assertEqual(key("x", 1, 2, 3, x=0), key("y", 1, 2, 3, x=0)) + self.assertEqual(hash(key("x", 1, 2, 3, x=0)), hash(key("y", 1, 2, 3, x=0))) + self.assertNotEqual(key("x", 1, 2, 3), key("x", 3, 2, 1)) + self.assertNotEqual(key("x", 1, 2, 3), key("x", 1, 2, 3, x=None)) + self.assertNotEqual(key("x", 1, 2, 3, x=0), key("x", 1, 2, 3, x=None)) + self.assertNotEqual(key("x", 1, 2, 3, x=0), key("x", 1, 2, 3, y=0)) + with self.assertRaises(TypeError): + hash("x", key({})) + # untyped keys compare equal + self.assertEqual(key("x", 1, 2, 3), key("y", 1.0, 2.0, 3.0)) + self.assertEqual(hash(key("x", 1, 2, 3)), hash(key("y", 1.0, 2.0, 3.0))) + def test_typedkey(self, key=cachetools.keys.typedkey): self.assertEqual(key(), key()) self.assertEqual(hash(key()), hash(key())) @@ -37,6 +55,23 @@ def test_typedkey(self, key=cachetools.keys.typedkey): # typed keys compare unequal self.assertNotEqual(key(1, 2, 3), key(1.0, 2.0, 3.0)) + def test_typedmethodkey(self, key=cachetools.keys.typedmethodkey): + # similar to typedkey(), but ignores its first positional argument + self.assertEqual(key("x"), key("y")) + self.assertEqual(hash(key("x")), hash(key("y"))) + self.assertEqual(key("x", 1, 2, 3), key("y", 1, 2, 3)) + self.assertEqual(hash(key("x", 1, 2, 3)), hash(key("y", 1, 2, 3))) + self.assertEqual(key("x", 1, 2, 3, x=0), key("y", 1, 2, 3, x=0)) + self.assertEqual(hash(key("x", 1, 2, 3, x=0)), hash(key("y", 1, 2, 3, x=0))) + self.assertNotEqual(key("x", 1, 2, 3), key("x", 3, 2, 1)) + self.assertNotEqual(key("x", 1, 2, 3), key("x", 1, 2, 3, x=None)) + self.assertNotEqual(key("x", 1, 2, 3, x=0), key("x", 1, 2, 3, x=None)) + self.assertNotEqual(key("x", 1, 2, 3, x=0), key("x", 1, 2, 3, y=0)) + with self.assertRaises(TypeError): + hash(key("x", {})) + # typed keys compare unequal + self.assertNotEqual(key("x", 1, 2, 3), key("x", 1.0, 2.0, 3.0)) + def test_addkeys(self, key=cachetools.keys.hashkey): self.assertIsInstance(key(), tuple) self.assertIsInstance(key(1, 2, 3) + key(4, 5, 6), type(key()))