Skip to content

Commit cafe800

Browse files
committed
Added tests for searching algorithms
1 parent fb3ef3f commit cafe800

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

tests/searching_tests.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import unittest
2+
3+
from pygorithm.searching import (linear_search,
4+
binary_search,
5+
breadth_first_search,
6+
depth_first_search)
7+
8+
class SearchingAlgorithmTest(unittest.TestCase):
9+
def setUp(self):
10+
# to test numeric numbers
11+
self.array = list(range(15))
12+
13+
# to test alphabets
14+
string = 'pythonisawesome'
15+
self.alphaArray = list(string)
16+
17+
class LinearSearch(SearchingAlgorithmTest):
18+
def test_linear_search(self):
19+
result = linear_search.search(self.array, 7)
20+
self.assertIs(result, 7)
21+
22+
alpha_result = linear_search.search(self.alphaArray, 'n')
23+
self.assertIs(alpha_result, 5)
24+
25+
alpha_result = linear_search.search(self.array, 'n')
26+
self.assertIs(alpha_result, -1)
27+
28+
class BinarySearch(SearchingAlgorithmTest):
29+
def test_binary_search(self):
30+
result = binary_search.search(self.array, 7)
31+
self.assertIs(result, 7)
32+
33+
alpha_result = binary_search.search(self.alphaArray, 'n')
34+
self.assertIs(alpha_result, 5)
35+
36+
alpha_result = binary_search.search(self.array, 'n')
37+
self.assertIs(alpha_result, -1)
38+
39+
class BFSSearch(unittest.TestCase):
40+
def test_bfs(self):
41+
self.graph = {
42+
'A': {'B', 'C', 'E'},
43+
'B': {'A', 'D', 'F'},
44+
'C': {'A', 'G'},
45+
'D': {'B'},
46+
'F': {'B'},
47+
'E': {'A'},
48+
'G': {'C'}
49+
}
50+
result = breadth_first_search.bfs(self.graph, 'A')
51+
self.assertEqual(result, {'A', 'B', 'D', 'F', 'C', 'G', 'E'})
52+
result = breadth_first_search.bfs(self.graph, 'G')
53+
self.assertEqual(result, {'G', 'C', 'A', 'B', 'D', 'F', 'E'})
54+
55+
class DFSSearch(unittest.TestCase):
56+
def test_dfs(self):
57+
self.graph = {
58+
'A': ['B', 'C', 'E'],
59+
'B': ['A', 'D', 'F'],
60+
'C': ['A', 'G'],
61+
'D': ['B'],
62+
'F': ['B'],
63+
'E': ['A'],
64+
'G': ['C']
65+
}
66+
result = depth_first_search.dfs(self.graph, 'A')
67+
self.assertEqual(result, ['A', 'B', 'D', 'F', 'C', 'G', 'E'])
68+
result = depth_first_search.dfs(self.graph, 'G')
69+
self.assertEqual(result, ['G', 'C', 'A', 'B', 'D', 'F', 'E'])
70+
71+
if __name__ == '__main__':
72+
unittest.main()

0 commit comments

Comments
 (0)