2 * SonarQube, open source software quality management tool.
3 * Copyright (C) 2008-2014 SonarSource
4 * mailto:contact AT sonarsource DOT com
6 * SonarQube is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 3 of the License, or (at your option) any later version.
11 * SonarQube is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 package org.sonar.plugins.core.issue.tracking;
22 import org.junit.Test;
23 import org.sonar.plugins.core.issue.tracking.RollingHashSequence;
24 import org.sonar.plugins.core.issue.tracking.RollingHashSequenceComparator;
25 import org.sonar.plugins.core.issue.tracking.StringText;
26 import org.sonar.plugins.core.issue.tracking.StringTextComparator;
28 import static org.fest.assertions.Assertions.assertThat;
30 public class RollingHashSequenceTest {
33 public void test_hash() {
34 StringText seq = new StringText("line0 \n line1 \n line2");
35 StringTextComparator cmp = StringTextComparator.IGNORE_WHITESPACE;
36 RollingHashSequence<StringText> seq2 = RollingHashSequence.wrap(seq, cmp, 1);
37 RollingHashSequenceComparator<StringText> cmp2 = new RollingHashSequenceComparator<StringText>(cmp);
39 assertThat(seq2.length()).isEqualTo(3);
40 assertThat(cmp2.hash(seq2, 0)).isEqualTo(cmp.hash(seq, 0) * 31 + cmp.hash(seq, 1));
41 assertThat(cmp2.hash(seq2, 1)).isEqualTo((cmp.hash(seq, 0) * 31 + cmp.hash(seq, 1)) * 31 + cmp.hash(seq, 2));
42 assertThat(cmp2.hash(seq2, 2)).isEqualTo((cmp.hash(seq, 1) * 31 + cmp.hash(seq, 2)) * 31);
46 public void test_equals() {
47 StringTextComparator baseCmp = StringTextComparator.IGNORE_WHITESPACE;
48 RollingHashSequence<StringText> a = RollingHashSequence.wrap(new StringText("line0 \n line1 \n line2"), baseCmp, 1);
49 RollingHashSequence<StringText> b = RollingHashSequence.wrap(new StringText("line0 \n line1 \n line2 \n line3"), baseCmp, 1);
50 RollingHashSequenceComparator<StringText> cmp = new RollingHashSequenceComparator<StringText>(baseCmp);
52 assertThat(cmp.equals(a, 0, b, 0)).isTrue();
53 assertThat(cmp.equals(a, 1, b, 1)).isTrue();
54 assertThat(cmp.equals(a, 2, b, 2)).isFalse();