aboutsummaryrefslogtreecommitdiff
path: root/src/test/resources/com/puppycrawl/tools/checkstyle/checks/InputSemantic.java
diff options
context:
space:
mode:
authorrnveach <rveach02@gmail.com>2015-10-19 12:07:07 -0400
committerRoman Ivanov <ivanov-jr@mail.ru>2015-10-19 21:55:24 -0700
commitf47587c9fb66cf46fbd2eb5691449cda6d551ecb (patch)
tree018ffdcab040aba9aa2301c44f66ddae0834972b /src/test/resources/com/puppycrawl/tools/checkstyle/checks/InputSemantic.java
parent9c488c1f512ffcc58af433842c992bd3f85b2d63 (diff)
downloadcheckstyle-f47587c9fb66cf46fbd2eb5691449cda6d551ecb.tar.gz
Issue #2161: unify test input locations for checks package
Diffstat (limited to 'src/test/resources/com/puppycrawl/tools/checkstyle/checks/InputSemantic.java')
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/InputSemantic.java222
1 files changed, 222 insertions, 0 deletions
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/InputSemantic.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/InputSemantic.java
new file mode 100644
index 000000000..978963767
--- /dev/null
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/InputSemantic.java
@@ -0,0 +1,222 @@
+////////////////////////////////////////////////////////////////////////////////
+// Test case file for checkstyle.
+// Created: 2001
+////////////////////////////////////////////////////////////////////////////////
+package com.puppycrawl.tools.checkstyle.checks;
+
+import java.io.*; // star import for instantiation tests
+import java.awt.Dimension; // explicit import for instantiation tests
+import java.awt.Color;
+
+/**
+ * Test case for detecting simple semantic errors.
+ * @author Lars Kühne
+ **/
+class InputSemantic
+{
+ /* Boolean instantiation in a static initializer */
+ static {
+ Boolean x = new Boolean(true);
+ }
+
+ /* Boolean instantiation in a non-static initializer */
+ {
+ Boolean x = new Boolean(true);
+ Boolean[] y = new Boolean[]{Boolean.TRUE, Boolean.FALSE};
+ }
+
+ /** fully qualified Boolean instantiation in a method. **/
+ Boolean getBoolean()
+ {
+ return new java.lang.Boolean(true);
+ }
+
+ void otherInstantiations()
+ {
+ // instantiation of classes in the same package
+ Object o1 = new InputBraces();
+ Object o2 = new InputModifier();
+ // classes in another package with .* import
+ ByteArrayOutputStream s = new ByteArrayOutputStream();
+ File f = new File("/tmp");
+ // classes in another package with explicit import
+ Dimension dim = new Dimension();
+ Color col = new Color(0, 0, 0);
+ }
+
+ void exHandlerTest()
+ {
+ try {
+ ; // do stuff and don't handle exceptions in some cases
+ }
+ catch (IllegalStateException emptyCatchIsAlwaysAnError) {
+ }
+ catch (NullPointerException ex) {
+ // can never happen, but only commentig this is currently an error
+ // Possible future enhancement: allowEmptyCatch="commented"
+ }
+ catch (ArrayIndexOutOfBoundsException ex) {
+ ;
+ // can never happen, semicolon makes checkstyle happy
+ // this is a workaround for above problem
+ }
+ catch (NegativeArraySizeException ex) {
+ {
+ }
+ // can never happen, empty compound statement is another workaround
+ }
+ catch (UnsupportedOperationException handledException) {
+ System.out.println(handledException.getMessage());
+ }
+ catch (SecurityException ex) { /* hello */ }
+ catch (StringIndexOutOfBoundsException ex) {}
+ catch (IllegalArgumentException ex) { }
+
+ try {
+ }
+ finally {
+ }
+ try {
+ // something
+ }
+ finally {
+ // something
+ }
+ try {
+ ; // something
+ }
+ finally {
+ ; // statement
+ }
+ }
+
+ /** test **/
+ private static final long IGNORE = 666l + 666L;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ public class EqualsVsHashCode1
+ {
+ public boolean equals(int a) // wrong arg type, don't flag
+ {
+ return a == 1;
+ }
+ }
+
+ public class EqualsVsHashCode2
+ {
+ public boolean equals(String a) // flag
+ {
+ return true;
+ }
+ }
+
+ public class EqualsVsHashCode3
+ {
+ public boolean equals(Object a) // don't flag
+ {
+ return true;
+ }
+
+ public int hashCode()
+ {
+ return 0;
+ }
+ }
+
+ public class EqualsVsHashCode4
+ {
+ // in anon inner class
+ ByteArrayOutputStream bos1 = new ByteArrayOutputStream()
+ {
+ public boolean equals(Object a) // don't flag
+ {
+ return true;
+ }
+
+ public int hashCode()
+ {
+ return 0;
+ }
+ };
+
+ ByteArrayOutputStream bos2 = new ByteArrayOutputStream()
+ {
+ public boolean equals(Object a) // flag
+ {
+ return true;
+ }
+ };
+ }
+
+ public void triggerEmptyBlockWithoutBlock()
+ {
+ // an if statement without a block to increase test coverage
+ if (true)
+ return;
+ }
+
+ // empty instance initializer
+ {
+ }
+
+ public class EqualsVsHashCode5
+ {
+ public <A> boolean equals(int a) // wrong arg type, don't flag even with generics
+ {
+ return a == 1;
+ }
+ }
+
+ public class EqualsVsHashCode6
+ {
+ public <A> boolean equals(Comparable<A> a) // flag, weven with generics
+ {
+ return true;
+ }
+ }
+
+ private class InputBraces {
+
+ }
+
+ private class InputModifier {
+
+ }
+
+ synchronized void foo() {
+ synchronized (this) {} // not OK
+ synchronized (Class.class) { // OK
+ synchronized (new Object()) {
+ // not OK if checking statements
+ }
+ }
+ }
+
+
+ static {
+
+ int a = 0;}
+
+ static {
+
+ }
+}