def large_random(self):
     S = "CGTACTGATCGCTACGACGAGACGAGACTTACACTACTACATACATCGACTACGATCAAGACAATACGACATGAAGGACATTACGACTACGACATACGACTACGACTAGC"
     P = [2, 5, 0]
     Q = [4, 5, 6]
     self.assertEqual(solution(S, P, Q), [2, 4, 1], msg= "example test")
 def extreme_large(self):
     S = "CTGACTGACGCTAGCTAGCTGCTAGCTAGCTCTCTAGCTCGCTCGATCGCGATCGCGAATCGCTCGGAGCTGCGAGCTGCGGCGGATCGAGCTGGCTATATCGATCGATCGATCGATGCTAGCTGATCCTAGCTAGCTGGAT"
     P = [2, 5, 0]
     Q = [4, 5, 6]
     self.assertEqual(solution(S, P, Q), [2, 4, 1], msg= "example test")
 def test_example1(self):
     S = "CAGCCTA"
     P = [2, 5, 0]
     Q = [4, 5, 6]
     self.assertEqual(solution(S, P, Q), [2, 4, 1], msg= "example test")
 def almost_all_same_letters(self):
     S = "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGTCGGGGGGGGGGGGGGGGGGGGGCAGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"
     P = [2, 5, 0]
     Q = [4, 5, 6]
     self.assertEqual(solution(S, P, Q), [2, 4, 1], msg= "example test")
 def small_random(self):
     S = "CAGCCTA"
     P = [2, 5, 0]
     Q = [4, 5, 6]
     self.assertEqual(solution(S, P, Q), [2, 4, 1], msg= "small random string, length = ~300")
 def small_length_string(self):
     S = "CAGCCTA"
     P = [2, 5, 0]
     Q = [4, 5, 6]
     self.assertEqual(solution(S, P, Q), [2, 4, 1], msg= "small length simple string")
 def simple(self):
     S = "CAG"
     P = [0, 0]
     Q = [1, 2]
     self.assertEqual(solution(S, P, Q), [2, 4, 1], msg= "simple tests")
 def extreme_double(self):
     S = "GT"
     P = [0]
     Q = [1]
     self.assertEqual(solution(S, P, Q), [2, 4, 1], msg= "double character string")
 def extreme_single(self):
     S = "C"
     P = [0]
     Q = [0]
     self.assertEqual(solution(S, P, Q), [2], msg= "single character string")