def test_nonrepetitive(self):
     pattern = 'abcdefgh'
     p = kmp_preprocess(pattern)
     self.assertEqual(len(p), len(pattern))
     self.assertListEqual(p, [0] * len(pattern))
 def test_almost_repetitive(self):
     pattern = 'ananas'
     p = kmp_preprocess(pattern)
     self.assertEqual(len(p), len(pattern))
     self.assertListEqual(p, [0, 0, 1, 2, 3, 0])
 def test_repetitive2(self):
     pattern = 'aaaaaa'
     p = kmp_preprocess(pattern)
     self.assertEqual(len(p), len(pattern))
     self.assertListEqual(p, [0, 1, 2, 3, 4, 5])
 def test_small2(self):
     pattern = 'aa'
     p = kmp_preprocess(pattern)
     self.assertEqual(len(p), 2)
     self.assertListEqual(p, [0, 1])
 def test_tiny(self):
     pattern = 'a'
     p = kmp_preprocess(pattern)
     self.assertEqual(len(p), 1)
     self.assertListEqual(p, [0])
 def test_empty(self):
     pattern = ''
     p = kmp_preprocess(pattern)
     self.assertEqual(len(p), 0)