def test_all_suffix_tree(self): N, A = 10, ['a', 'b'] for n in range(2, N + 1): for t in itertools.product(A, repeat = n): t = '#' + ''.join(t) reference = suffix_tree.naive(t, n) self.check_suffix_trees(t, n, reference)
def test_random_suffix_tree(self, _, algorithm, links): T, n, A = 100, 200, ['a', 'b'] for _ in range(T): t = rand.random_word(n, A) reference = (suffix_tree.naive(t, n), get_suffix_links(*suffix_tree.mccreight(t, n))[1]) self.check_suffix_trees(t, n, reference, algorithm, links)
def test_all_suffix_tree(self, _, algorithm, links): N, A = 10, ['a', 'b'] for n in range(2, N + 1): for t in itertools.product(A, repeat=n): t = '#' + ''.join(t) reference = (suffix_tree.naive(t, n), get_suffix_links(*suffix_tree.mccreight(t, n))[1]) self.check_suffix_trees(t, n, reference, algorithm, links)
def check_no_match(self, t, w, n, m): for algorithm in EXACT_STRING_MATCHING_ALGORITHMS: self.assertFalse( list(algorithm(t, w, n, m)), 'Algorithm {}, text {}, pattern {}'.format( algorithm.__name__, t, w)) self.assertFalse( list(suffix_tree.contains(suffix_tree.naive(t, n), t, w, n, m)), 'Suffix tree, text {}, pattern {}'.format(t, w)) self.assertFalse( list(suffix_array.contains(suffix_array.naive(t, n), t, w, n, m)), 'Suffix array, text {}, pattern {}'.format(t, w))
def check_get_all_exact_matches(self, t, w, n, m, reference): for algorithm in EXACT_STRING_MATCHING_ALGORITHMS: self.assertEqual( list(algorithm(t, w, n, m)), reference, 'Algorithm {}, text {}, pattern {}'.format( algorithm.__name__, t, w)) self.assertEqual( list(suffix_tree.contains(suffix_tree.naive(t, n), t, w, n, m)), reference, 'Suffix tree, text {}, pattern {}'.format(t, w)) self.assertEqual( list(suffix_array.contains(suffix_array.naive(t, n), t, w, n, m)), reference, 'Suffix array, text {}, pattern {}'.format(t, w))
def test_random_suffix_tree(self): T, n, A = 100, 200, ['a', 'b'] for _ in range(T): t = rand.random_word(n, A) reference = suffix_tree.naive(t, n) self.check_suffix_trees(t, n, reference)