Beispiel #1
0
 def test_key_function(self):
     words = SortedList(['apple', 'lime', 'Lemon'], key=str.lower)
     self.assertEqual(list(words), ['apple', 'Lemon', 'lime'])
     words.add('Banana')
     self.assertEqual(list(words), ['apple', 'Banana', 'Lemon', 'lime'])
     self.assertNotIn('banana', words)
     self.assertIn('Banana', words)
     self.assertEqual(words.find('banana'), -1)
     self.assertEqual(words.find('Banana'), 1)
     words.remove('Lemon')
     self.assertEqual(list(words), ['apple', 'Banana', 'lime'])
     words.add('pear')
     self.assertEqual(list(words), ['apple', 'Banana', 'lime', 'pear'])
     self.assertEqual(words.find('LIME'), -1)
     self.assertEqual(words.find('lime'), 2)
     self.assertEqual(words.rfind('LIME'), -1)
     self.assertEqual(words.rfind('lime'), 2)
     self.assertEqual(words.count('LIME'), 0)
     self.assertEqual(words.count('lime'), 1)
     words.add('LIME')
     self.assertEqual(words.count('lime'), 1)
     self.assertEqual(words.count('LIME'), 1)
     words.add('lime')
     self.assertEqual(words.count('lime'), 2)
     self.assertEqual(words.count('LIME'), 1)
Beispiel #2
0
    def test_find_rfind_and_count(self):
        numbers = SortedList([2, 11, 2, 1, 29, 3, 7, 4, 2, 18, 4, 2])
        self.assertEqual(numbers.find(1), 0)
        self.assertEqual(numbers.find(2), 1)
        self.assertEqual(numbers.find(3), 5)
        self.assertEqual(numbers.find(4), 6)
        self.assertEqual(numbers.find(5), -1)
        self.assertEqual(numbers.find(7), 8)
        self.assertEqual(numbers.find(100), -1)
        self.assertEqual(numbers.find(0), -1)

        self.assertEqual(numbers.count(1), 1)
        self.assertEqual(numbers.count(2), 4)
        self.assertEqual(numbers.count(3), 1)
        self.assertEqual(numbers.count(4), 2)
        self.assertEqual(numbers.count(5), 0)
        self.assertEqual(numbers.count(6), 0)
        self.assertEqual(numbers.count(7), 1)

        self.assertEqual(numbers.rfind(1), 0)
        self.assertEqual(numbers.rfind(2), 4)
        self.assertEqual(numbers.rfind(3), 5)
        self.assertEqual(numbers.rfind(4), 7)
        self.assertEqual(numbers.rfind(5), -1)
        self.assertEqual(numbers.rfind(7), 8)
        self.assertEqual(numbers.rfind(100), -1)
        self.assertEqual(numbers.rfind(0), -1)
Beispiel #3
0
 def test_time_efficiency(self):
     sorted_list = SortedList(MANY_BIG_NUMBERS)
     unsorted_list = sorted(MANY_BIG_NUMBERS)
     with Timer() as sorted_add:
         sorted_list.add(0)
         sorted_list.add(20000)
         sorted_list.add(49000)
         sorted_list.add(49999)
     with Timer() as unsorted_add:
         unsorted_list.insert(unsorted_list.index(0), 0)
         unsorted_list.insert(unsorted_list.index(20000), 20000)
         unsorted_list.insert(unsorted_list.index(49000), 49000)
         unsorted_list.insert(unsorted_list.index(49999), 49999)
     self.assertLess(sorted_add.elapsed, unsorted_add.elapsed)
     with Timer() as sorted_count:
         self.assertEqual(sorted_list.count(1), 1)
         self.assertEqual(sorted_list.count(25000), 1)
         self.assertEqual(sorted_list.count(49000), 2)
         self.assertEqual(sorted_list.count(50000), 0)
     with Timer() as unsorted_count:
         self.assertEqual(unsorted_list.count(1), 1)
         self.assertEqual(unsorted_list.count(25000), 1)
         self.assertEqual(unsorted_list.count(49000), 2)
         self.assertEqual(unsorted_list.count(50000), 0)
     self.assertLess(sorted_count.elapsed, unsorted_count.elapsed)
     with Timer() as sorted_contains:
         self.assertTrue(0 in sorted_list)
         self.assertTrue(25000 in sorted_list)
         self.assertFalse(30000.5 in sorted_list)
         self.assertFalse(100000 in sorted_list)
         self.assertFalse(-1 in sorted_list)
         self.assertTrue(48000 in sorted_list)
     with Timer() as unsorted_contains:
         self.assertTrue(0 in unsorted_list)
         self.assertTrue(25000 in unsorted_list)
         self.assertFalse(30000.5 in unsorted_list)
         self.assertFalse(100000 in unsorted_list)
         self.assertFalse(-1 in unsorted_list)
         self.assertTrue(48000 in unsorted_list)
     self.assertLess(sorted_contains.elapsed, unsorted_contains.elapsed)