@Test
public void testGetParsedPattern() throws TalismaneException {

  final String separators = "[\\s\\p{Punct}]";
  Pattern separatorPattern = Pattern.compile(separators, Pattern.UNICODE_CHARACTER_CLASS);
  List<String> testPatterns = new ArrayList<String>();
  testPatterns.add(".+'.+");
  testPatterns.add(".+-t-elle");
  testPatterns.add(".+\\..+");
  testPatterns.add("\\d+ \\d+");
  testPatterns.add("lors (de|du|des|d)");
  testPatterns.add("([^cdjlmnst]|..+)'.+");
  testPatterns.add(".+-t{-}elle");
  int i = 0;
  for (String testPattern : testPatterns) {
    LOG.debug("Test Pattern = " + testPatterns.get(i));
    TokenPattern tokeniserPattern = new TokenPattern(testPattern, separatorPattern);
    List<Pattern> parsedPattern = tokeniserPattern.getParsedPattern();
    LOG.debug("Parsed Pattern = " + parsedPattern);
    if (i == 0) {
      assertEquals(".+", parsedPattern.get(0).pattern());
      assertEquals("'", parsedPattern.get(1).pattern());
      assertEquals(".+", parsedPattern.get(2).pattern());
    } else if (i == 1) {
      assertEquals(".+", parsedPattern.get(0).pattern());
      assertEquals("-", parsedPattern.get(1).pattern());
      assertEquals("t", parsedPattern.get(2).pattern());
      assertEquals("-", parsedPattern.get(3).pattern());
      assertEquals("elle", parsedPattern.get(4).pattern());
      assertEquals(4, tokeniserPattern.getIndexesToTest().size());
      assertEquals(1, tokeniserPattern.getIndexesToTest().get(0).intValue());
      assertEquals(2, tokeniserPattern.getIndexesToTest().get(1).intValue());
      assertEquals(3, tokeniserPattern.getIndexesToTest().get(2).intValue());
      assertEquals(4, tokeniserPattern.getIndexesToTest().get(3).intValue());
    } else if (i == 2) {
      assertEquals(".+", parsedPattern.get(0).pattern());
      assertEquals("\\.", parsedPattern.get(1).pattern());
      assertEquals(".+", parsedPattern.get(2).pattern());
    } else if (i == 3) {
      assertEquals("\\d+", parsedPattern.get(0).pattern());
      assertEquals(" ", parsedPattern.get(1).pattern());
      assertEquals("\\d+", parsedPattern.get(2).pattern());
    } else if (i == 4) {
      assertEquals("[lL]ors", parsedPattern.get(0).pattern());
      assertEquals(" ", parsedPattern.get(1).pattern());
      assertEquals("(de|du|des|d)", parsedPattern.get(2).pattern());
    } else if (i == 5) {
      assertEquals("([^cdjlmnst]|..+)", parsedPattern.get(0).pattern());
      assertEquals("'", parsedPattern.get(1).pattern());
      assertEquals(".+", parsedPattern.get(2).pattern());
    } else if (i == 6) {
      assertEquals(".+", parsedPattern.get(0).pattern());
      assertEquals("-", parsedPattern.get(1).pattern());
      assertEquals("t", parsedPattern.get(2).pattern());
      assertEquals("-", parsedPattern.get(3).pattern());
      assertEquals("elle", parsedPattern.get(4).pattern());
      assertEquals(3, tokeniserPattern.getIndexesToTest().size());
      assertEquals(1, tokeniserPattern.getIndexesToTest().get(0).intValue());
      assertEquals(2, tokeniserPattern.getIndexesToTest().get(1).intValue());
      assertEquals(4, tokeniserPattern.getIndexesToTest().get(2).intValue());
    }
    i++;
  }
}