]> source.dussan.org Git - sonarqube.git/blob
6a4b69b6667ada7541f225044e9744139a50df8b
[sonarqube.git] /
1 /*
2  * SonarQube, open source software quality management tool.
3  * Copyright (C) 2008-2014 SonarSource
4  * mailto:contact AT sonarsource DOT com
5  *
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.
10  *
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.
15  *
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.
19  */
20 package org.sonar.plugins.core.issue.tracking;
21
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;
27
28 import static org.fest.assertions.Assertions.assertThat;
29
30 public class RollingHashSequenceTest {
31
32   @Test
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);
38
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);
43   }
44
45   @Test
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);
51
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();
55   }
56
57 }