]> source.dussan.org Git - sonarqube.git/commitdiff
Add utility class to simplify assertions in tests for checks
authorEvgeny Mandrikov <mandrikov@gmail.com>
Tue, 13 Dec 2011 13:27:40 +0000 (17:27 +0400)
committerEvgeny Mandrikov <mandrikov@gmail.com>
Tue, 13 Dec 2011 13:28:36 +0000 (17:28 +0400)
And update tests to use this new class.

14 files changed:
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/CheckMessages.java [new file with mode: 0644]
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/ast/check/BreakCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/ast/check/ContinueCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/ast/check/UndocumentedApiCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/bytecode/check/ArchitectureCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/bytecode/check/CallToDeprecatedMethodCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/bytecode/check/UnusedPrivateMethodCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/bytecode/check/UnusedProtectedMethodCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/squid/check/ClassComplexityCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/squid/check/CommentedOutCodeLineCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/squid/check/DITCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/squid/check/EmptyFileCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/squid/check/MethodComplexityCheckTest.java
plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/squid/check/NoSonarCheckTest.java

diff --git a/plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/CheckMessages.java b/plugins/sonar-squid-java-plugin/src/test/java/org/sonar/java/CheckMessages.java
new file mode 100644 (file)
index 0000000..326d069
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2008-2011 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar 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.
+ *
+ * Sonar 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 Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ */
+package org.sonar.java;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.sonar.squid.api.CheckMessage;
+import org.sonar.squid.api.SourceFile;
+
+import com.google.common.collect.Ordering;
+
+/**
+ * Utility class to simplify assertions in tests for checks.
+ * It can be used as following:
+ * <pre>
+ * CheckMessages = new CheckMessages(SourceFile);
+ * checkMessages.assertNext().atLine(1).withMessage("Message").withCost(1.0);
+ * checkMessages.assertNoMore();
+ * </pre>
+ * TODO Godin: I think that this class can be reused by consumers of sonar-squid, thus can be moved to test-library for sonar-squid.
+ */
+public class CheckMessages {
+
+  private final List<CheckMessage> findings;
+  private final Iterator<CheckMessage> findingsIterator;
+
+  public CheckMessages(SourceFile file) {
+    findings = CHECK_MESSAGE_ORDERING.immutableSortedCopy(file.getCheckMessages());
+    findingsIterator = findings.iterator();
+  }
+
+  private static final Ordering<CheckMessage> CHECK_MESSAGE_ORDERING = new Ordering<CheckMessage>() {
+    public int compare(CheckMessage o1, CheckMessage o2) {
+      return ObjectUtils.compare(o1.getLine(), o2.getLine());
+    }
+  };
+
+  public Next assertNext() {
+    assertTrue("There is no more violations", findingsIterator.hasNext());
+    return new Next(findingsIterator.next());
+  }
+
+  public void assertNoMore() {
+    assertFalse(findingsIterator.hasNext());
+  }
+
+  public static final class Next {
+    private final CheckMessage checkMessage;
+
+    private Next(CheckMessage checkMessage) {
+      this.checkMessage = checkMessage;
+    }
+
+    public Next atLine(Integer expected) {
+      assertThat(checkMessage.getLine(), is(expected));
+      return this;
+    }
+
+    public Next withMessage(String expected) {
+      assertThat(checkMessage.getText(Locale.getDefault()), equalTo(expected));
+      return this;
+    }
+
+    public Next withCost(double expected) {
+      assertThat(checkMessage.getCost(), is(expected));
+      return this;
+    }
+  }
+
+}
index 9ee98d5530e4acba8e2868cdff6acfa1bdafbc4f..8fed774a2cfb02bdd63e6b9d10fc940f0569f7a9 100644 (file)
 
 package org.sonar.java.ast.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
+import java.io.File;
+import java.util.Collection;
 
 import org.apache.commons.io.FileUtils;
 import org.junit.Before;
 import org.junit.Test;
 import org.sonar.api.resources.InputFileUtils;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 
-import java.io.File;
-import java.util.Collection;
-
 public class BreakCheckTest {
 
   private Squid squid;
@@ -54,16 +51,15 @@ public class BreakCheckTest {
 
   @Test
   public void testAvoidUsageOfBreakOutsideSwitch() {
-    SourceFile file = (SourceFile) squid.search("org/apache/commons/collections/map/LRUMap.java");
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(244));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("org/apache/commons/collections/map/LRUMap.java"));
+    checkMessages.assertNext().atLine(244);
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void testAlowUsageOfBreakInsideSwitch() {
-    SourceFile file = (SourceFile) squid.search("org/apache/commons/collections/map/Flat3Map.java");
-    assertThat(file.getCheckMessages().size(), is(0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("org/apache/commons/collections/map/Flat3Map.java"));
+    checkMessages.assertNoMore();
   }
 
 }
index 09bd0b5afac83be105c7f2385f0f05e23201bce5..c4f4d543e8a1984828511fdfcdbde60dd30ebdcf 100644 (file)
 
 package org.sonar.java.ast.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.junit.Before;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 
 public class ContinueCheckTest {
@@ -46,10 +43,9 @@ public class ContinueCheckTest {
 
   @Test
   public void testAvoidUsageOfContinue() {
-    SourceFile file = (SourceFile) squid.search("org/apache/commons/collections/ExtendedProperties.java");
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(566));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("org/apache/commons/collections/ExtendedProperties.java"));
+    checkMessages.assertNext().atLine(566);
+    checkMessages.assertNoMore();
   }
 
 }
index e83b3ce77c36ab0cddf169d83f06f4a1a3611996..a680aa7ac74a03caea380ad4ac182cd816437c14 100644 (file)
@@ -23,23 +23,17 @@ package org.sonar.java.ast.check;
 import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertThat;
 
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
 import org.junit.Before;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.java.squid.SquidScanner;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 import org.sonar.squid.measures.Metric;
 
-import com.google.common.collect.Lists;
-
 public class UndocumentedApiCheckTest {
 
   private Squid squid;
@@ -57,18 +51,12 @@ public class UndocumentedApiCheckTest {
   public void testUndocumentedApi() {
     SourceFile file = (SourceFile) squid.search("UndocumentedApi.java");
 
-    List<CheckMessage> messages = Lists.newArrayList(file.getCheckMessages());
-    Collections.sort(messages, new Comparator<CheckMessage>() {
-      public int compare(CheckMessage o1, CheckMessage o2) {
-        return o1.getLine() - o2.getLine();
-      }
-    });
-
     assertThat(file.getInt(Metric.PUBLIC_API) - file.getInt(Metric.PUBLIC_DOC_API), is(3));
-    assertThat(file.getCheckMessages().size(), is(3));
 
-    assertThat(messages.get(0).getLine(), is(10));
-    assertThat(messages.get(1).getLine(), is(14));
-    assertThat(messages.get(2).getLine(), is(17));
+    CheckMessages checkMessages = new CheckMessages(file);
+    checkMessages.assertNext().atLine(10);
+    checkMessages.assertNext().atLine(14);
+    checkMessages.assertNext().atLine(17);
+    checkMessages.assertNoMore();
   }
 }
index 4233312cb4882126d45c95641e978a21d3fd9ee1..686ef815ec7699bf12f37a08ec7e857eb760f8a3 100644 (file)
 package org.sonar.java.bytecode.check;
 
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.bytecode.BytecodeScanner;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-
 public class ArchitectureCheckTest {
 
   private Squid squid;
@@ -39,37 +36,36 @@ public class ArchitectureCheckTest {
   public void testDependencyCheckOneErrorMessage() {
     check("", "java.**.Pattern");
 
-    SourceFile file = (SourceFile) squid.search("ArchitectureCheckOneErrorMessage.java");
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getDefaultMessage(), is("ArchitectureCheckOneErrorMessage must not use java/util/regex/Pattern"));
-    assertThat(message.getLine(), is(6));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("ArchitectureCheckOneErrorMessage.java"));
+    checkMessages.assertNext().atLine(6).withMessage("ArchitectureCheckOneErrorMessage must not use java/util/regex/Pattern");
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void testDependencyCheckDateForbidden() {
     check("", "**.Date");
 
-    SourceFile file = (SourceFile) squid.search("ArchitectureCheckDateForbidden.java");
-    assertThat(file.getCheckMessages().size(), is(2));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("ArchitectureCheckDateForbidden.java"));
+    checkMessages.assertNext().atLine(7);
+    checkMessages.assertNext().atLine(9);
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void testDependencyCheckToSqlFromUI() {
     check("*UI", "java.sql.*");
 
-    SourceFile file = (SourceFile) squid.search("ArchitectureCheckToSqlFromUI.java");
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(4));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("ArchitectureCheckToSqlFromUI.java"));
+    checkMessages.assertNext().atLine(4);
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void testDependencyCheckOKFromClassesToClasses() {
     check("*SA", "java.sql.*");
 
-    SourceFile file = (SourceFile) squid.search("ArchitectureCheckToSqlFromUI.java");
-    assertThat(file.getCheckMessages().size(), is(0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("ArchitectureCheckToSqlFromUI.java"));
+    checkMessages.assertNoMore();
   }
 
   private void check(String fromClasses, String toClasses) {
index e6ed3f42bb9f299597423313e217c3061faf9498..8680d3a0e13b4dd800c41900b8cb4c2495484f4b 100644 (file)
  */
 package org.sonar.java.bytecode.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.bytecode.BytecodeScanner;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 
 public class CallToDeprecatedMethodCheckTest {
@@ -46,9 +43,8 @@ public class CallToDeprecatedMethodCheckTest {
 
   @Test
   public void testCallToDeprecatedMethod() {
-    SourceFile file = (SourceFile) squid.search("CallToDeprecatedMethod.java");
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(6));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("CallToDeprecatedMethod.java"));
+    checkMessages.assertNext().atLine(6);
+    checkMessages.assertNoMore();
   }
 }
index e1da2df5c0d4d71b2c8f8c2c6a0914b502e03839..0ce6d70b5da3910412415b2ab2cec75ef83e93ce 100644 (file)
  */
 package org.sonar.java.bytecode.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.bytecode.BytecodeScanner;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 
 public class UnusedPrivateMethodCheckTest {
@@ -46,30 +43,22 @@ public class UnusedPrivateMethodCheckTest {
 
   @Test
   public void testDetectUnusedPrivateMethod() {
-    SourceFile file = (SourceFile) squid.search("UnusedPrivateMethod.java");
-
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(33));
-    assertThat(message.getDefaultMessage(), is("Private method 'unusedPrivateMethod(...)' is never used."));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("UnusedPrivateMethod.java"));
+    checkMessages.assertNext().atLine(33).withMessage("Private method 'unusedPrivateMethod(...)' is never used.");
+    checkMessages.assertNoMore();
   }
   
   @Test
   public void testDetectUnusedGenericPrivateMethod() {
-    SourceFile file = (SourceFile) squid.search("UnusedGenericPrivateMethod.java");
-
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(7));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("UnusedGenericPrivateMethod.java"));
+    checkMessages.assertNext().atLine(7);
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void testDetectUnusedPrivateConstructor() {
-    SourceFile file = (SourceFile) squid.search("UnusedPrivateConstructor.java");
-
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(10));
-    assertThat(message.getDefaultMessage(), is("Private method '<init>(...)' is never used."));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("UnusedPrivateConstructor.java"));
+    checkMessages.assertNext().atLine(10).withMessage("Private method '<init>(...)' is never used.");
+    checkMessages.assertNoMore();
   }
 }
index b4573367a2fbe826193cbae9fbfc58e255475304..58d5b60b753fd1b3c98801a2c198f9555e0b19a2 100644 (file)
  */
 package org.sonar.java.bytecode.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.bytecode.BytecodeScanner;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 
 public class UnusedProtectedMethodCheckTest {
@@ -46,17 +43,14 @@ public class UnusedProtectedMethodCheckTest {
 
   @Test
   public void testDetectUnusedProtectedMethod() {
-    SourceFile file = (SourceFile) squid.search("UnusedProtectedMethod.java");
-
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(17));
-    assertThat(message.getDefaultMessage(), is("Protected method 'unusedProtectedMethod(...)' is never used."));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("UnusedProtectedMethod.java"));
+    checkMessages.assertNext().atLine(17).withMessage("Protected method 'unusedProtectedMethod(...)' is never used.");
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void testIgnoreUnusedProtectedMethodFromAbstractClass() {
-    SourceFile file = (SourceFile) squid.search("UnusedProtectedMethodFromAbstractClass.java");
-    assertThat(file.getCheckMessages().size(), is(0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("UnusedProtectedMethodFromAbstractClass.java"));
+    checkMessages.assertNoMore();
   }
 }
index 65cbb288f8d0fb173909acef7f6c2b44ea68c433..c8c90c8efbde013ec5ae8f0a29a35185b0a23483 100644 (file)
 
 package org.sonar.java.squid.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.junit.Before;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.java.squid.SquidScanner;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 import org.sonar.squid.measures.Metric;
 
@@ -53,17 +50,15 @@ public class ClassComplexityCheckTest {
 
   @Test
   public void testComplexityExceedsThreshold() {
-    SourceFile file = (SourceFile) squid.search("ComplexBranches.java");
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(3));
-    assertThat(message.getCost(), is(3.0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("ComplexBranches.java"));
+    checkMessages.assertNext().atLine(3).withCost(3.0);
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void testComplexityNotExceedsThreshold() {
-    SourceFile file = (SourceFile) squid.search("NoBranches.java");
-    assertThat(file.getCheckMessages().size(), is(0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("NoBranches.java"));
+    checkMessages.assertNoMore();
   }
 
 }
index aee6c74b360474770b0d8d4ed79fc4786fec3410..a479d3a409c4bda47c044d739fff06dafb3e7cbb 100644 (file)
  */
 package org.sonar.java.squid.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.*;
-
 import org.junit.Before;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.squid.JavaSquidConfiguration;
@@ -49,8 +47,12 @@ public class CommentedOutCodeLineCheckTest {
 
   @Test
   public void testDetection() {
-    SourceFile file = (SourceFile) squid.search("CommentedCode.java");
-    assertThat(file.getCheckMessages().size(), is(4));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("CommentedCode.java"));
+    checkMessages.assertNext().atLine(4);
+    checkMessages.assertNext().atLine(17);
+    checkMessages.assertNext().atLine(18);
+    checkMessages.assertNext().atLine(19);
+    checkMessages.assertNoMore();
   }
 
 }
index b74ffd8f49a9385d16bba56f3fe26eeab1129b36..3cdbc37ea64e3f2abeeb6d6c319d63218b0ed16c 100644 (file)
 
 package org.sonar.java.squid.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.bytecode.BytecodeScanner;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.java.squid.SquidScanner;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 
 public class DITCheckTest {
@@ -51,17 +48,15 @@ public class DITCheckTest {
 
   @Test
   public void testDepthOfInheritanceGreaterThanMaximum() {
-    SourceFile file = (SourceFile) squid.search("UnusedProtectedMethod.java");
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(7));
-    assertThat(message.getCost(), is(1.0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("UnusedProtectedMethod.java"));
+    checkMessages.assertNext().atLine(7).withCost(1.0);
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void testDepthOfInheritanceLowerThanMaximum() {
-    SourceFile file = (SourceFile) squid.search("Job.java");
-    assertThat(file.getCheckMessages().size(), is(0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("Job.java"));
+    checkMessages.assertNoMore();
   }
 
 }
index 358dc657b2902060dc73d6b8ecb350a2c217a80f..7820119d245ae6977896898eabef8e800da2054e 100644 (file)
 
 package org.sonar.java.squid.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.nullValue;
-import static org.junit.Assert.assertThat;
-
 import org.junit.Before;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.java.squid.SquidScanner;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 import org.sonar.squid.measures.Metric;
 
@@ -51,16 +47,14 @@ public class EmptyFileCheckTest {
 
   @Test
   public void shouldDetectEmptyFiles() {
-    SourceFile file = (SourceFile) squid.search("org/foo/CommentedOutFile.java");
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), nullValue());
-    assertThat(message.getDefaultMessage(), is("This Java file is empty"));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("org/foo/CommentedOutFile.java"));
+    checkMessages.assertNext().atLine(null).withMessage("This Java file is empty");
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void shouldNotLogOnCorrectFiles() {
-    SourceFile file = (SourceFile) squid.search("CommentedCode.java");
-    assertThat(file.getCheckMessages().size(), is(0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("CommentedCode.java"));
+    checkMessages.assertNoMore();
   }
 }
index f44ec36ef5f4a517fb18b71be3e0100a779fde6f..65c736232d1d020b85db5ded9bd8062086704522 100644 (file)
 
 package org.sonar.java.squid.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.junit.Before;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.squid.JavaSquidConfiguration;
 import org.sonar.java.squid.SquidScanner;
 import org.sonar.squid.Squid;
-import org.sonar.squid.api.CheckMessage;
 import org.sonar.squid.api.SourceFile;
 import org.sonar.squid.measures.Metric;
 
@@ -51,10 +48,8 @@ public class MethodComplexityCheckTest {
 
   @Test
   public void testMethodComplexityExceedsThreshold() {
-    SourceFile file = (SourceFile) squid.search("ComplexBranches.java");
-    assertThat(file.getCheckMessages().size(), is(1));
-    CheckMessage message = file.getCheckMessages().iterator().next();
-    assertThat(message.getLine(), is(10));
-    assertThat(message.getCost(), is(2.0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("ComplexBranches.java"));
+    checkMessages.assertNext().atLine(10).withCost(2.0);
+    checkMessages.assertNoMore();
   }
 }
index 0b36b69ba550fea682a46923a397edd18fae7825..3bef8f23249997726d25a6ecff6836fc4f512d7b 100644 (file)
  */
 package org.sonar.java.squid.check;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.junit.Before;
 import org.junit.Test;
+import org.sonar.java.CheckMessages;
 import org.sonar.java.ast.JavaAstScanner;
 import org.sonar.java.ast.SquidTestUtils;
 import org.sonar.java.squid.JavaSquidConfiguration;
@@ -50,14 +48,16 @@ public class NoSonarCheckTest {
 
   @Test
   public void testNoSonarTagDetection() {
-    SourceFile file = (SourceFile) squid.search("FileWithNOSONARTags.java");
-    assertThat(file.getCheckMessages().size(), is(2));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("FileWithNOSONARTags.java"));
+    checkMessages.assertNext().atLine(5);
+    checkMessages.assertNext().atLine(10);
+    checkMessages.assertNoMore();
   }
 
   @Test
   public void testNoSonarTagDetectionWhenNoTag() {
-    SourceFile file = (SourceFile) squid.search("FileWithoutNOSONARTags.java");
-    assertThat(file.getCheckMessages().size(), is(0));
+    CheckMessages checkMessages = new CheckMessages((SourceFile) squid.search("FileWithoutNOSONARTags.java"));
+    checkMessages.assertNoMore();
   }
 
 }