def test_random_string_matching_with_mismatches(self): T, n, m, k, A = 100, 50, 10, 4, ['a', 'b'] for _ in range(T): t, w = gen_text(n, m, k, A) reference = brute_search(t, w, n, m, k) self.assertEqual( reference, list(string_matching_with_mismatches(t, w, n, m, k)))
def test_all_string_matching_with_mismatches(self): N, M, A = 7, 3, ['a', 'b'] for n in range(2, N + 1): for m in range(1, M + 1): for k in range(1, 3): for t in itertools.product(A, repeat=n): t = ''.join(t) for w in itertools.product(A, repeat=m): w = ''.join(w) reference = brute_search(t, w, n, m, k) self.assertEqual( reference, list( string_matching_with_mismatches( t, w, n, m, k)))
def test_get_first_match(self): self.assertEqual( [4], list(string_matching_with_mismatches('bbbbaaa', 'aab', 6, 3, 1)))
def test_no_match(self): self.assertFalse( list(string_matching_with_mismatches('bbbbba', 'aab', 6, 3, 1)))
def test_get_all_matches(self): self.assertEqual( [4, 5], list(string_matching_with_mismatches('bbbbaaab', 'aab', 6, 3, 1)))