- Notifications
You must be signed in to change notification settings - Fork 46.7k
/
Copy pathtest_suffix_tree.py
59 lines (48 loc) · 2.15 KB
/
test_suffix_tree.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Created by: Ramy-Badr-Ahmed (https://github.com/Ramy-Badr-Ahmed)
# in Pull Request: #11554
# https://github.com/TheAlgorithms/Python/pull/11554
#
# Please mention me (@Ramy-Badr-Ahmed) in any issue or pull request
# addressing bugs/corrections to this file.
# Thank you!
importunittest
fromdata_structures.suffix_tree.suffix_treeimportSuffixTree
classTestSuffixTree(unittest.TestCase):
defsetUp(self) ->None:
"""Set up the initial conditions for each test."""
self.text="banana"
self.suffix_tree=SuffixTree(self.text)
deftest_search_existing_patterns(self) ->None:
"""Test searching for patterns that exist in the suffix tree."""
patterns= ["ana", "ban", "na"]
forpatterninpatterns:
withself.subTest(pattern=pattern):
assertself.suffix_tree.search(pattern), (
f"Pattern '{pattern}' should be found."
)
deftest_search_non_existing_patterns(self) ->None:
"""Test searching for patterns that do not exist in the suffix tree."""
patterns= ["xyz", "apple", "cat"]
forpatterninpatterns:
withself.subTest(pattern=pattern):
assertnotself.suffix_tree.search(pattern), (
f"Pattern '{pattern}' should not be found."
)
deftest_search_empty_pattern(self) ->None:
"""Test searching for an empty pattern."""
assertself.suffix_tree.search(""), "An empty pattern should be found."
deftest_search_full_text(self) ->None:
"""Test searching for the full text."""
assertself.suffix_tree.search(self.text), (
"The full text should be found in the suffix tree."
)
deftest_search_substrings(self) ->None:
"""Test searching for substrings of the full text."""
substrings= ["ban", "ana", "a", "na"]
forsubstringinsubstrings:
withself.subTest(substring=substring):
assertself.suffix_tree.search(substring), (
f"Substring '{substring}' should be found."
)
if__name__=="__main__":
unittest.main()