diff options
author | rnveach <rveach02@gmail.com> | 2015-10-19 12:07:07 -0400 |
---|---|---|
committer | Roman Ivanov <ivanov-jr@mail.ru> | 2015-10-19 21:55:24 -0700 |
commit | f47587c9fb66cf46fbd2eb5691449cda6d551ecb (patch) | |
tree | 018ffdcab040aba9aa2301c44f66ddae0834972b /src/test/resources/com/puppycrawl/tools/checkstyle/checks/InputSemantic.java | |
parent | 9c488c1f512ffcc58af433842c992bd3f85b2d63 (diff) | |
download | checkstyle-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.java | 222 |
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 { + + } +} |