### Question:
UnicodeNormalizer implements TextProcessor { @Override public List<String> preprocess(final List<String> tokens) { return tokens.stream() .map((s) -> Normalizer.normalize(s, normalForm)) .collect(Collectors.toList()); } UnicodeNormalizer(final Normalizer.Form normalForm);  UnicodeNormalizer(); static String normalizeDefault(final String s); @Override List<String> preprocess(final List<String> tokens); static final Normalizer.Form DEFAULT_FORM; }### Answer:
@Test public void testDefaultNormalization() { final String sentence = "Unicode A\u0308A\uff21\uD835\uDC00\u00A01²₃\ufb01"; final String expected = "Unicode \u00c4AAA 123fi"; final SimpleTokenizer tokenizer = new SimpleTokenizer(); final List<String> tokens = tokenizer.tokenize(sentence); final UnicodeNormalizer unicodeNormalizer = new UnicodeNormalizer(); final List<String> processedTokens = unicodeNormalizer.preprocess(tokens); Assert.assertEquals(tokenizer.buildSentence(processedTokens), expected); }