def test_keys_with_prefix_two_found(self): t = TST() t.insert("one", 1) t.insert("two", 2) t.delete("one") t.insert("three", 3) self.assertEqual(sorted(t.keys_with_prefix("t")), ["three", "two"])
def test_delete_after_inserting_again(self): t = TST() t.insert("boo", 0.5) t.insert("neg", 1) self.assertEqual(t.delete("neg"), 1) t.insert("neg", 1) self.assertEqual(t.delete("neg"), 1) self.assertFalse(t.is_empty()) self.assertEqual(t.count(), 1)
def test_delete_same_key_twice(self): t = TST() t.insert("one", 1) t.insert("two", 2) t.insert("three", 3) self.assertEqual(t.delete("three"), 3) self.assertIsNone(t.delete("three")) self.assertFalse(t.is_empty()) self.assertEqual(t.count(), 2) self.assertTrue(t.contains("one")) self.assertTrue(t.contains("two")) self.assertEqual(t.search("one"), 1) self.assertEqual(t.search("two"), 2)
def test_delete_the_only_key(self): t = TST() t.insert("seven", 7) self.assertEqual(t.delete("seven"), 7) self.assertTrue(t.is_empty()) self.assertEqual(t.count(), 0) self.assertFalse(t.contains("seven")) self.assertIsNone(t.search("seven"))
def test_delete_inexistent_key(self): t = TST() t.insert("first", "1st") self.assertIsNone(t.delete("second")) self.assertFalse(t.is_empty()) self.assertEqual(t.count(), 1) self.assertTrue(t.contains("first")) self.assertEqual(t.search("first"), "1st")
def test_delete_the_two_keys(self): t = TST() t.insert("one", 1) t.insert("two", 2) self.assertEqual(t.delete("one"), 1) self.assertFalse(t.is_empty()) self.assertEqual(t.count(), 1) self.assertFalse(t.contains("one")) self.assertTrue(t.contains("two")) self.assertIsNone(t.search("one")) self.assertEqual(t.search("two"), 2) self.assertEqual(t.delete("two"), 2) self.assertTrue(t.is_empty()) self.assertEqual(t.count(), 0) self.assertFalse(t.contains("one")) self.assertFalse(t.contains("two")) self.assertIsNone(t.search("one")) self.assertIsNone(t.search("two"))
def test_delete_all_random_keys(self): t = TST() n = random.randint(3, 2000) random_pairs = {} for _ in range(n): key = TestTST.gen_rand_str(random.randint(1, 11)) random_pairs[key] = key t.insert(key, key) for k, v in random_pairs.items(): self.assertEqual(t.delete(k), v) self.assertIsNone(t.search(k)) self.assertFalse(t.contains(k)) self.assertTrue(t.is_empty()) self.assertEqual(t.count(), 0)
def test_delete_empty_tst(self): t = TST() self.assertIsNone(t.delete("war"))