diff options
Diffstat (limited to 'sonar-plugin-api/src/test/java/org/sonar')
4 files changed, 153 insertions, 14 deletions
diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/AndPredicateTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/AndPredicateTest.java new file mode 100644 index 00000000000..de23d2e96fc --- /dev/null +++ b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/AndPredicateTest.java @@ -0,0 +1,75 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.api.batch.fs.internal; + +import org.junit.Test; +import org.sonar.api.batch.fs.FilePredicate; + +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +public class AndPredicateTest { + + @Test + public void flattenNestedAnd() { + PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); + PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); + PathPatternPredicate pathPatternPredicate3 = new PathPatternPredicate(PathPattern.create("foo3/**")); + FilePredicate andPredicate = AndPredicate.create(Arrays.<FilePredicate>asList(pathPatternPredicate1, + AndPredicate.create(Arrays.<FilePredicate>asList(pathPatternPredicate2, pathPatternPredicate3)))); + assertThat(((AndPredicate) andPredicate).predicates()).containsExactly(pathPatternPredicate1, pathPatternPredicate2, pathPatternPredicate3); + } + + @Test + public void sortPredicatesByPriority() { + PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); + PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); + RelativePathPredicate relativePathPredicate = new RelativePathPredicate("foo"); + FilePredicate andPredicate = AndPredicate.create(Arrays.<FilePredicate>asList(pathPatternPredicate1, + relativePathPredicate, pathPatternPredicate2)); + assertThat(((AndPredicate) andPredicate).predicates()).containsExactly(relativePathPredicate, pathPatternPredicate1, pathPatternPredicate2); + } + + @Test + public void simplifyAndExpressionsWhenEmpty() { + FilePredicate andPredicate = AndPredicate.create(Arrays.<FilePredicate>asList()); + assertThat(andPredicate).isEqualTo(TruePredicate.TRUE); + } + + @Test + public void simplifyAndExpressionsWhenTrue() { + PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); + PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); + FilePredicate andPredicate = AndPredicate.create(Arrays.<FilePredicate>asList(pathPatternPredicate1, + TruePredicate.TRUE, pathPatternPredicate2)); + assertThat(((AndPredicate) andPredicate).predicates()).containsExactly(pathPatternPredicate1, pathPatternPredicate2); + } + + @Test + public void simplifyAndExpressionsWhenFalse() { + PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); + PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); + FilePredicate andPredicate = AndPredicate.create(Arrays.<FilePredicate>asList(pathPatternPredicate1, + FalsePredicate.FALSE, pathPatternPredicate2)); + assertThat(andPredicate).isEqualTo(FalsePredicate.FALSE); + } + +} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFilePredicatesTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFilePredicatesTest.java index 95a1775a822..a9ae07f0b80 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFilePredicatesTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFilePredicatesTest.java @@ -41,10 +41,11 @@ public class DefaultFilePredicatesTest { public TemporaryFolder temp = new TemporaryFolder(); DefaultInputFile javaFile; - FilePredicates predicates = new DefaultFilePredicates(); + FilePredicates predicates; @Before public void before() throws IOException { + predicates = new DefaultFilePredicates(temp.newFolder()); javaFile = new DefaultInputFile("foo", "src/main/java/struts/Action.java") .setFile(temp.newFile("Action.java")) .setLanguage("java") diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFileSystemTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFileSystemTest.java index 577ae843eb0..6f118683460 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFileSystemTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFileSystemTest.java @@ -19,6 +19,7 @@ */ package org.sonar.api.batch.fs.internal; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -37,12 +38,18 @@ public class DefaultFileSystemTest { @Rule public ExpectedException thrown = ExpectedException.none(); + private DefaultFileSystem fs; + + private File basedir; + + @Before + public void prepare() throws Exception { + basedir = temp.newFolder(); + fs = new DefaultFileSystem(basedir); + } + @Test public void test_directories() throws Exception { - DefaultFileSystem fs = new DefaultFileSystem(); - - File basedir = temp.newFolder(); - fs.setBaseDir(basedir); assertThat(fs.baseDir()).isAbsolute().isDirectory().exists(); assertThat(fs.baseDir().getCanonicalPath()).isEqualTo(basedir.getCanonicalPath()); @@ -54,8 +61,6 @@ public class DefaultFileSystemTest { @Test public void test_encoding() throws Exception { - DefaultFileSystem fs = new DefaultFileSystem(); - assertThat(fs.isDefaultJvmEncoding()).isTrue(); assertThat(fs.encoding()).isEqualTo(Charset.defaultCharset()); @@ -66,8 +71,6 @@ public class DefaultFileSystemTest { @Test public void add_languages() throws Exception { - DefaultFileSystem fs = new DefaultFileSystem(); - assertThat(fs.languages()).isEmpty(); fs.addLanguages("java", "php", "cobol"); @@ -76,8 +79,6 @@ public class DefaultFileSystemTest { @Test public void files() throws Exception { - DefaultFileSystem fs = new DefaultFileSystem(); - assertThat(fs.inputFiles(fs.predicates().all())).isEmpty(); fs.add(new DefaultInputFile("foo", "src/Foo.php").setLanguage("php").setFile(temp.newFile())); @@ -108,7 +109,6 @@ public class DefaultFileSystemTest { @Test public void input_file_returns_null_if_file_not_found() throws Exception { - DefaultFileSystem fs = new DefaultFileSystem(); assertThat(fs.inputFile(fs.predicates().hasRelativePath("src/Bar.java"))).isNull(); assertThat(fs.inputFile(fs.predicates().hasLanguage("cobol"))).isNull(); } @@ -118,7 +118,6 @@ public class DefaultFileSystemTest { thrown.expect(IllegalArgumentException.class); thrown.expectMessage("expected one element"); - DefaultFileSystem fs = new DefaultFileSystem(); fs.add(new DefaultInputFile("foo", "src/Bar.java").setLanguage("java").setFile(temp.newFile())); fs.add(new DefaultInputFile("foo", "src/Baz.java").setLanguage("java").setFile(temp.newFile())); @@ -127,7 +126,6 @@ public class DefaultFileSystemTest { @Test public void input_file_supports_non_indexed_predicates() throws Exception { - DefaultFileSystem fs = new DefaultFileSystem(); fs.add(new DefaultInputFile("foo", "src/Bar.java").setLanguage("java").setFile(temp.newFile())); // it would fail if more than one java file diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/OrPredicateTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/OrPredicateTest.java new file mode 100644 index 00000000000..1616f84e497 --- /dev/null +++ b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/OrPredicateTest.java @@ -0,0 +1,65 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.api.batch.fs.internal; + +import org.junit.Test; +import org.sonar.api.batch.fs.FilePredicate; + +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +public class OrPredicateTest { + + @Test + public void flattenNestedOr() { + PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); + PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); + PathPatternPredicate pathPatternPredicate3 = new PathPatternPredicate(PathPattern.create("foo3/**")); + FilePredicate orPredicate = OrPredicate.create(Arrays.<FilePredicate>asList(pathPatternPredicate1, + OrPredicate.create(Arrays.<FilePredicate>asList(pathPatternPredicate2, pathPatternPredicate3)))); + assertThat(((OrPredicate) orPredicate).predicates()).containsExactly(pathPatternPredicate1, pathPatternPredicate2, pathPatternPredicate3); + } + + @Test + public void simplifyOrExpressionsWhenEmpty() { + FilePredicate orPredicate = OrPredicate.create(Arrays.<FilePredicate>asList()); + assertThat(orPredicate).isEqualTo(TruePredicate.TRUE); + } + + @Test + public void simplifyOrExpressionsWhenFalse() { + PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); + PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); + FilePredicate andPredicate = OrPredicate.create(Arrays.<FilePredicate>asList(pathPatternPredicate1, + FalsePredicate.FALSE, pathPatternPredicate2)); + assertThat(((OrPredicate) andPredicate).predicates()).containsExactly(pathPatternPredicate1, pathPatternPredicate2); + } + + @Test + public void simplifyAndExpressionsWhenTrue() { + PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); + PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); + FilePredicate andPredicate = OrPredicate.create(Arrays.<FilePredicate>asList(pathPatternPredicate1, + TruePredicate.TRUE, pathPatternPredicate2)); + assertThat(andPredicate).isEqualTo(TruePredicate.TRUE); + } + +} |