|
| 1 | +import unittest |
| 2 | +from interpolation_search import interpolation_search, interpolation_search_by_recursion |
| 3 | + |
| 4 | +class Test_interpolation_search(unittest.TestCase): |
| 5 | + def setUp(self): |
| 6 | + # un-sorted case |
| 7 | + self.collection1 = [5,3,4,6,7] |
| 8 | + self.item1 = 4 |
| 9 | + # sorted case, result exists |
| 10 | + self.collection2 = [10,30,40,45,50,66,77,93] |
| 11 | + self.item2 = 66 |
| 12 | + # sorted case, result doesn't exist |
| 13 | + self.collection3 = [10,30,40,45,50,66,77,93] |
| 14 | + self.item3 = 67 |
| 15 | + # equal elements case, result exists |
| 16 | + self.collection4 = [10,10,10,10,10] |
| 17 | + self.item4 = 10 |
| 18 | + # equal elements case, result doesn't exist |
| 19 | + self.collection5 = [10,10,10,10,10] |
| 20 | + self.item5 = 3 |
| 21 | + # 1 element case, result exists |
| 22 | + self.collection6 = [10] |
| 23 | + self.item6 = 10 |
| 24 | + # 1 element case, result doesn't exists |
| 25 | + self.collection7 = [10] |
| 26 | + self.item7 = 1 |
| 27 | + |
| 28 | + def tearDown(self): |
| 29 | + pass |
| 30 | + |
| 31 | + def test_interpolation_search(self): |
| 32 | + self.assertEqual(interpolation_search(self.collection1, self.item1), None) |
| 33 | + |
| 34 | + self.assertEqual(interpolation_search(self.collection2, self.item2), self.collection2.index(self.item2)) |
| 35 | + |
| 36 | + self.assertEqual(interpolation_search(self.collection3, self.item3), None) |
| 37 | + |
| 38 | + self.assertEqual(interpolation_search(self.collection4, self.item4), self.collection4.index(self.item4)) |
| 39 | + |
| 40 | + self.assertEqual(interpolation_search(self.collection5, self.item5), None) |
| 41 | + |
| 42 | + self.assertEqual(interpolation_search(self.collection6, self.item6), self.collection6.index(self.item6)) |
| 43 | + |
| 44 | + self.assertEqual(interpolation_search(self.collection7, self.item7), None) |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | +class Test_interpolation_search_by_recursion(unittest.TestCase): |
| 49 | + def setUp(self): |
| 50 | + # un-sorted case |
| 51 | + self.collection1 = [5,3,4,6,7] |
| 52 | + self.item1 = 4 |
| 53 | + # sorted case, result exists |
| 54 | + self.collection2 = [10,30,40,45,50,66,77,93] |
| 55 | + self.item2 = 66 |
| 56 | + # sorted case, result doesn't exist |
| 57 | + self.collection3 = [10,30,40,45,50,66,77,93] |
| 58 | + self.item3 = 67 |
| 59 | + # equal elements case, result exists |
| 60 | + self.collection4 = [10,10,10,10,10] |
| 61 | + self.item4 = 10 |
| 62 | + # equal elements case, result doesn't exist |
| 63 | + self.collection5 = [10,10,10,10,10] |
| 64 | + self.item5 = 3 |
| 65 | + # 1 element case, result exists |
| 66 | + self.collection6 = [10] |
| 67 | + self.item6 = 10 |
| 68 | + # 1 element case, result doesn't exists |
| 69 | + self.collection7 = [10] |
| 70 | + self.item7 = 1 |
| 71 | + |
| 72 | + def tearDown(self): |
| 73 | + pass |
| 74 | + |
| 75 | + def test_interpolation_search_by_recursion(self): |
| 76 | + self.assertEqual(interpolation_search_by_recursion(self.collection1, self.item1, 0, len(self.collection1)-1), None) |
| 77 | + |
| 78 | + self.assertEqual(interpolation_search_by_recursion(self.collection2, self.item2, 0, len(self.collection2)-1), self.collection2.index(self.item2)) |
| 79 | + |
| 80 | + self.assertEqual(interpolation_search_by_recursion(self.collection3, self.item3, 0, len(self.collection3)-1), None) |
| 81 | + |
| 82 | + self.assertEqual(interpolation_search_by_recursion(self.collection4, self.item4, 0, len(self.collection4)-1), self.collection4.index(self.item4)) |
| 83 | + |
| 84 | + self.assertEqual(interpolation_search_by_recursion(self.collection5, self.item5, 0, len(self.collection5)-1), None) |
| 85 | + |
| 86 | + self.assertEqual(interpolation_search_by_recursion(self.collection6, self.item6, 0, len(self.collection6)-1), self.collection6.index(self.item6)) |
| 87 | + |
| 88 | + self.assertEqual(interpolation_search_by_recursion(self.collection7, self.item7, 0, len(self.collection7)-1), None) |
| 89 | + |
| 90 | + |
| 91 | + |
| 92 | +if __name__ == '__main__': |
| 93 | + unittest.main() |
0 commit comments