def test_insert_two(self): t = TST() t.insert("he", 0) t.insert("she", 1) self.assertFalse(t.is_empty()) self.assertEqual(t.count(), 2) self.assertEqual(t.search("he"), 0) self.assertEqual(t.search("she"), 1) self.assertTrue(t.contains("he")) self.assertTrue(t.contains("she"))
def test_insert_same_twice_to_update(self): t = TST() t.insert("seven", 7) t.insert("fly away", 11) t.insert("fly away", 101) t.insert("bandit queen", "Looptroop") self.assertFalse(t.is_empty()) self.assertEqual(t.count(), 3) self.assertEqual(t.search("seven"), 7) self.assertEqual(t.search("fly away"), 101) self.assertEqual(t.search("bandit queen"), "Looptroop") self.assertTrue(t.contains("seven")) self.assertTrue(t.contains("fly away")) self.assertTrue(t.contains("bandit queen"))
def test_insert_one(self): t = TST() t.insert("one", 97) self.assertFalse(t.is_empty()) self.assertEqual(t.count(), 1) self.assertEqual(t.search("one"), 97) self.assertTrue(t.contains("one"))
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_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_insert_random_keys(self): t = TST() n = random.randint(4, 100) random_pairs = {} for _ in range(n): key = TestTST.gen_rand_str(random.randint(1, 11)) random_pairs[key] = key t.insert(key, key) self.assertFalse(t.is_empty()) self.assertEqual(t.count(), len(random_pairs)) for k, v in random_pairs.items(): self.assertEqual(t.search(k), v) self.assertTrue(t.contains(k))
def test_contains_empty_tst(self): t = TST() self.assertFalse(t.contains("contains in an empty tst"))