@Test
  public void test_equals() {
    StringTextComparator baseCmp = StringTextComparator.IGNORE_WHITESPACE;
    RollingHashSequence<StringText> a =
        RollingHashSequence.wrap(new StringText("line0 \n line1 \n line2"), baseCmp, 1);
    RollingHashSequence<StringText> b =
        RollingHashSequence.wrap(new StringText("line0 \n line1 \n line2 \n line3"), baseCmp, 1);
    RollingHashSequenceComparator<StringText> cmp =
        new RollingHashSequenceComparator<StringText>(baseCmp);

    assertThat(cmp.equals(a, 0, b, 0)).isTrue();
    assertThat(cmp.equals(a, 1, b, 1)).isTrue();
    assertThat(cmp.equals(a, 2, b, 2)).isFalse();
  }
  @Test
  public void test_hash() {
    StringText seq = new StringText("line0 \n line1 \n line2");
    StringTextComparator cmp = StringTextComparator.IGNORE_WHITESPACE;
    RollingHashSequence<StringText> seq2 = RollingHashSequence.wrap(seq, cmp, 1);
    RollingHashSequenceComparator<StringText> cmp2 =
        new RollingHashSequenceComparator<StringText>(cmp);

    assertThat(seq2.length()).isEqualTo(3);
    assertThat(cmp2.hash(seq2, 0)).isEqualTo(cmp.hash(seq, 0) * 31 + cmp.hash(seq, 1));
    assertThat(cmp2.hash(seq2, 1))
        .isEqualTo((cmp.hash(seq, 0) * 31 + cmp.hash(seq, 1)) * 31 + cmp.hash(seq, 2));
    assertThat(cmp2.hash(seq2, 2)).isEqualTo((cmp.hash(seq, 1) * 31 + cmp.hash(seq, 2)) * 31);
  }