@Test
public void testReplace() throws Exception {

  Diacriticizer diacriticizer = mock(Diacriticizer.class);
  when(diacriticizer.diacriticize("J'")).thenReturn(new HashSet<>(Arrays.asList("j'")));
  when(diacriticizer.diacriticize("Il")).thenReturn(new HashSet<>(Arrays.asList("il")));
  System.setProperty("config.file", "src/test/resources/test.conf");
  ConfigFactory.invalidateCaches();
  final Config config = ConfigFactory.load();
  final String sessionId = "test";
  TalismaneSession.get(sessionId).setDiacriticizer(diacriticizer);
  LowercaseKnownFirstWordFilter filter = new LowercaseKnownFirstWordFilter(sessionId);
  String text = "J'avais oublié : Il est Malade.";
  Sentence sentence = new Sentence(text, sessionId);
  TokenSequence tokenSequence = new TokenSequence(sentence, sessionId);
  tokenSequence.addToken("".length(), "J'".length());
  tokenSequence.addToken("J'".length(), "J'avais".length());
  tokenSequence.addToken("J'avais ".length(), "J'avais oublié".length());
  tokenSequence.addToken("J'avais oublié ".length(), "J'avais oublié :".length());
  tokenSequence.addToken("J'avais oublié : ".length(), "J'avais oublié : Il".length());
  tokenSequence.addToken("J'avais oublié : Il ".length(), "J'avais oublié : Il est".length());
  tokenSequence.addToken("J'avais oublié : Il est ".length(), "J'avais oublié : Il est Malade".length());
  tokenSequence.addToken("J'avais oublié : Il est Malade".length(), "J'avais oublié : Il est Malade.".length());
  filter.apply(tokenSequence);
  System.out.println(tokenSequence);
  StringBuilder sb = new StringBuilder();
  for (Token token : tokenSequence) {
    sb.append(token.getText());
    sb.append('|');
  }
  assertEquals("j'|avais|oublié|:|il|est|Malade|.|", sb.toString());
}