def test_delete_all_cases(self): for levels in product(range(1, 4), range(1, 4), range(1, 4)): # delete middle ss = SortedSet() with patch('sortedsets._random_level', side_effect=levels) as p: ss['one'] = 1 ss['two'] = 2 ss['three'] = 3 del ss['two'] self.assertEqual(ss['one'], 1) self.assertEqual(ss['three'], 3) with self.assertRaises(KeyError): ss['two'] self.assertEqual(list(ss), ['one', 'three']) ss.clear() self.assertEqual(list(ss), []) # delete first ss = SortedSet() with patch('sortedsets._random_level', side_effect=levels) as p: ss['one'] = 1 ss['two'] = 2 ss['three'] = 3 del ss['one'] self.assertEqual(ss['two'], 2) self.assertEqual(ss['three'], 3) with self.assertRaises(KeyError): ss['one'] self.assertEqual(list(ss), ['two', 'three']) ss.clear() self.assertEqual(list(ss), []) # delete last ss = SortedSet() with patch('sortedsets._random_level', side_effect=levels) as p: ss['one'] = 1 ss['two'] = 2 ss['three'] = 3 del ss['three'] self.assertEqual(ss['one'], 1) self.assertEqual(ss['two'], 2) with self.assertRaises(KeyError): ss['three'] self.assertEqual(list(ss), ['one', 'two']) ss.clear() self.assertEqual(list(ss), [])