|
@@ -0,0 +1,68 @@
|
|
|
+from django.test import TestCase
|
|
|
+import pickle
|
|
|
+from jet.ordered_set import OrderedSet
|
|
|
+
|
|
|
+
|
|
|
+class OrderedSetTestCase(TestCase):
|
|
|
+ def test_pickle(self):
|
|
|
+ set1 = OrderedSet('abracadabra')
|
|
|
+ roundtrip = pickle.loads(pickle.dumps(set1))
|
|
|
+ self.assertEqual(roundtrip, set1)
|
|
|
+
|
|
|
+ def test_empty_pickle(self):
|
|
|
+ empty_oset = OrderedSet()
|
|
|
+ empty_roundtrip = pickle.loads(pickle.dumps(empty_oset))
|
|
|
+ self.assertEqual(empty_roundtrip, empty_oset)
|
|
|
+
|
|
|
+ def test_order(self):
|
|
|
+ set1 = OrderedSet('abracadabra')
|
|
|
+ self.assertEqual(len(set1), 5)
|
|
|
+ self.assertEqual(set1, OrderedSet(['a', 'b', 'r', 'c', 'd']))
|
|
|
+ self.assertEqual(list(reversed(set1)), ['d', 'c', 'r', 'b', 'a'])
|
|
|
+
|
|
|
+ def test_binary_operations(self):
|
|
|
+ set1 = OrderedSet('abracadabra')
|
|
|
+ set2 = OrderedSet('simsalabim')
|
|
|
+
|
|
|
+ self.assertNotEqual(set1, set2)
|
|
|
+ self.assertEqual(set1 & set2, OrderedSet(['a', 'b']))
|
|
|
+ self.assertEqual(set1 | set2, OrderedSet(['a', 'b', 'r', 'c', 'd', 's', 'i', 'm', 'l']))
|
|
|
+ self.assertEqual(set1 - set2, OrderedSet(['r', 'c', 'd']))
|
|
|
+
|
|
|
+ def test_remove(self):
|
|
|
+ set1 = OrderedSet('abracadabra')
|
|
|
+
|
|
|
+ set1.remove('a')
|
|
|
+ set1.remove('b')
|
|
|
+
|
|
|
+ self.assertEqual(set1, OrderedSet('rcd'))
|
|
|
+ self.assertNotIn('a', set1)
|
|
|
+ self.assertNotIn('b', set1)
|
|
|
+ self.assertIn('r', set1)
|
|
|
+
|
|
|
+ set1.discard('a')
|
|
|
+ set1.discard('a')
|
|
|
+
|
|
|
+ def test_remove_error(self):
|
|
|
+ set1 = OrderedSet('abracadabra')
|
|
|
+ try:
|
|
|
+ set1.remove('z')
|
|
|
+ except KeyError:
|
|
|
+ pass
|
|
|
+
|
|
|
+ def test_clear(self):
|
|
|
+ set1 = OrderedSet('abracadabra')
|
|
|
+ set1.clear()
|
|
|
+
|
|
|
+ self.assertEqual(len(set1), 0)
|
|
|
+ self.assertEqual(set1, OrderedSet())
|
|
|
+
|
|
|
+ def test_pop(self):
|
|
|
+ set1 = OrderedSet('ab')
|
|
|
+ elem = set1.pop()
|
|
|
+
|
|
|
+ self.assertEqual(elem, 'b')
|
|
|
+ elem = set1.pop()
|
|
|
+
|
|
|
+ self.assertEqual(elem, 'a')
|
|
|
+ self.assertRaises(KeyError, set1.pop)
|