public void testCaseInsensitive() {

    // 2. Case insensitive tests.
    matcher = new ApproximateMatcher();
    assertEquals(3, matcher.match("AbcD", "ABcdx"));
    matcher.setIgnoreCase(true);
    assertEquals(1, matcher.match(matcher.process("AbcD"), matcher.process("ABcdx")));
  }
  public void testFractionalMatching() {

    // 3. Fractional matching.
    matcher = new ApproximateMatcher();
    assertTrue(matcher.matches("abcd", "abxy", 0.f));
    assertTrue(matcher.matches("abcd", "abxy", 0.5f));
    assertTrue(!matcher.matches("abcd", "abxy", 1.f));
    assertTrue(matcher.matches("01234567890123456789", "01234X67890123456789", 0.5f));
    assertTrue(matcher.matches("01234567890123456789", "01234X67890123456789", 0.9f));
    assertTrue(!matcher.matches("01234567890123456789", "01234X67890123456789", 1.f));
  }
  private static void scan(String s1, String s2, int expected) {
    // Match forward and backwards
    ApproximateMatcher matcher = null;
    matcher = new ApproximateMatcher(5); // reuse buffer for some,not all
    matcher.setCompareBackwards(true);
    assertEquals(expected, matcher.match(matcher.process(s1), matcher.process(s2)));
    matcher.setCompareBackwards(false);
    assertEquals(expected, matcher.match(s1, s2));

    // Bounded match
    for (int i = -1; i < expected; i++) {
      assertTrue(
          "i=" + i + ", expected=" + expected + " match=" + matcher.match(s1, s2),
          !matcher.matches(s1, s2, i));
    }
    assertTrue(matcher.matches(s1, s2, expected));
    assertTrue(matcher.matches(s1, s2, expected + 1));
  }
  public void testWhitespace() {

    // 4. Whitespace
    matcher = new ApproximateMatcher();
    assertEquals(2, matcher.match(" a_", "_a "));
    matcher.setIgnoreWhitespace(true);
    assertEquals(0, matcher.match(matcher.process(" a_"), matcher.process("_a ")));

    matcher = new ApproximateMatcher();
    assertEquals(1, matcher.match("a b", "ab"));
    matcher.setIgnoreWhitespace(true);
    assertEquals(0, matcher.match(matcher.process("a b"), matcher.process("ab")));

    matcher = new ApproximateMatcher();
    assertEquals(1, matcher.match("ab", "a_b"));
    matcher.setIgnoreWhitespace(true);
    assertEquals(0, matcher.match(matcher.process("ab"), matcher.process("a_b")));
  }