blob: 77833fd61cddf5b428efa48f96ff7da3273a5682 [file] [log] [blame]
package com.siyeh.ipp;
import org.junit.Assert;
import java.io.EOFException;
import java.io.IOException;
import java.util.List;
import java.util.ArrayList;
// Note: this class never gets compiled. It's simply here to hold a
//bunch of manual test cases
public class ManualTestClass
{
int foo[];
int[] bar[];
public void testInteger()
{
// convert between octal, hex, and decimal
int foo = 31;
// convert between octal, hex, and decimal
long bar = 0x1fL;
// convert between octal, hex, and decimal
int foo2 = 02556055060602406713736772653302544613000000000000000;
// convert between octal, hex, and decimal
long bar2 = 31000000000000000000000000000000000000000000000L;
}
public void testFloat()
{
// convert between hex, and decimal
float foo = 0x1.fp4f;
double doubleFoo = 31.2;
}
public void testShift()
{
int x = 1;
int y = 2;
// test that this will go to shift and back
x = y * 8;
// test that this doesn't do anything
x = y * 7;
// test that this will go to shift and back
x *= 8;
// test that this doesn't do anything
x *= 7;
// test that this will go to shift and back
x = y / 8;
// test that this doesn't do anything
x = y / 7;
// test that this will go to shift and back
x /= 8;
// test that this doesn't do anything
x /= 7;
// test that this will go to shift and back
x = 3 + y * 8;
}
public void testFQNames()
{
// test that this will be transformed
java.util.HashMap hashMap = new java.util.HashMap();
}
public void testOpAssign()
{
int a = 0;
int[] b = new int[1];
// test that this will be shortened
a = a + 3;
// test that this will be shortened
a = a * 3;
// test that this will be shortened
a = a - 3;
// test that this will be shortened
a = a % 3;
// test that this will be shortened
a = a / 3;
// test that this will be shortened
a = (a) / 3;
// test that this will be shortened
b[a] = b[a] / 3;
// test that this will be shortened
b[a] = b[(a)] / 3;
// test that this does nothing
b[a++] = b[a++] / 3;
}
public void testAnd()
{
boolean foo = true;
boolean bar = true;
boolean baz = true;
// test that this will be changed
if(foo && bar)
{
}
// test that this will be changed
if(foo && bar && baz)
{
}
// test that this will be changed
if(!foo && bar && !baz)
{
}
// test both of these
if((foo && bar) && baz)
{
}
// test that this will be changed
if(3 < 4 && 5 != 2)
{
}
}
public void testOr()
{
boolean foo = true;
boolean bar = true;
boolean baz = true;
// test that this will be changed
if(foo || bar)
{
}
// test that this will be changed
if(foo || bar || baz)
{
}
// test that this will be changed
if(!foo || bar || !baz)
{
}
// test both of these
if((foo || bar) || baz)
{
}
}
public void testBoolEquality()
{
boolean foo = true;
// test that this collapses to if(foo)
if(foo == true)
{
} // test that this collapses to if(!foo)
if(foo == false)
{
} // test that this collapses to if(!foo)
if(foo != true)
{
} // test that this collapses to if(foo)
if(foo != false)
{
} // test that this collapses to if(foo)
if(true == foo)
{
}
// test that this collapses to if(!foo)
if(false == foo)
{
} // test that this collapses to if(!foo)
if(true != foo)
{
} // test that this collapses to if(foo)
if(false != foo)
{
}
// test that this collapses to if(foo)
if(true == 3 > 4)
{
}
// test that this collapses to if(foo)
if(true != 3 > 4)
{
}
}
public void testEquality()
{
String foo = "foo";
String bar = "bar";
int foo2 = 100;
int baz2 = 3;
// test turning this into .equals and back
if(foo == bar)
{
}
// test that this doesn't have a "change to equals" intention
if(foo2 == baz2)
{
}
// test that this does have a "change to equals" intention
if("foo" + "bar" == "bar" + "foo")
{
}
// test turning this into ! .equals and back
if(foo != bar)
{
}
// test that this doesn't have a "change to ! equals" intention
if(foo2 != baz2)
{
}
}
public void testFlipEquals()
{
String foo = "foo";
String bar = "bar";
// test flipping this
if(foo.equals(bar))
{
}
// test flipping this
if("foo".equals("foo" + "bar"))
{
}
// test flipping this
if(foo.equalsIgnoreCase(bar))
{
}
}
public void testJUnit()
{
boolean foo = true;
String bar = "foo";
// test changing this to assertEquals and back
Assert.assertTrue("foo", foo);
// test changing this to assertEquals and back
assertTrue(foo);
// test changing this to assertEquals and back
assertFalse("foo", foo);
// test changing this to assertEquals and back
assertEquals(false, foo);
// test changing this to assertEquals and back
assertNull("foo", bar);
// test changing this to assertEquals and back
assertNull(bar);
// test changing this to assertTrue and back
assertEquals("foo", true, foo);
// test changing this to assertTrue and back
assertEquals(true, foo);
// test changing this to assertNull and back
assertEquals("foo", null, bar);
// test changing this to assertNull and back
assertEquals(null, bar);
// test changing this to assertFalse and back
assertTrue(foo);
// test changing this to assertTrue and back
assertFalse("foo", foo);
String baz1 = "foo";
String baz2 = "bar";
// test changing this to assertTrue and back
assertEquals(baz1, baz2);
// test changing this to assertTrue and back
assertEquals("test", true, baz1.equals(baz2));
int int1 = 3;
int int2 = 4;
// test changing this to assertTrue and back
assertEquals(int1, int2);
// test changing this to assertTrue and back
assertEquals("test", int1, int2);
}
public void testMergeAndIf()
{
boolean foo = true;
boolean bar = true;
//test merge these
if(foo)
{
if(bar)
{
System.out.println("test2");
}
}
//test merge these
if(foo)
if(bar)
System.out.println("test2");
//test merge these
if(foo)
{
if(bar)
System.out.println("test2");
}
//test merge these
if(foo)
if(bar)
{
System.out.println("test2");
}
//test that these don't merge
if(foo)
{
if(bar)
{
System.out.println("test2");
}
else
{
System.out.println("test3");
}
}
//test that these don't merge
if(foo)
{
if(bar)
{
System.out.println("test2");
}
}
else
{
System.out.println("test3");
}
}
public void testMergeOrIf()
{
boolean foo = true;
boolean bar = true;
if(foo)
{
System.out.println("1");
}
else if(bar)
{
System.out.println("1");
}
else
{
System.out.println("2");
}
// test that these don't merge
if(foo)
{
System.out.println("1");
}
else if(bar)
{
System.out.println("3");
}
else
{
System.out.println("2");
}
// test that these don't merge
if(foo)
{
System.out.println("1");
}
else if(bar)
{
}
else
{
System.out.println("2");
}
if(foo)
{
System.out.println("2");
return;
}
if(bar)
{
System.out.println("2");
return;
}
if(foo)
{
System.out.println("1");
return;
}
if(bar)
{
System.out.println("1");
return;
}
else
{
System.out.println("2");
}
}
public void testFlipConditional()
{
boolean foo = true;
boolean bar = true;
int x = 3;
//test flipping this
x = foo?3:4;
System.out.println("x = " + x);
x = foo != bar?3:4;
System.out.println("x = " + x);
}
public void testSwitchToIf() throws InterruptedException
{
int x = 0;
// test changing this to if-else
switch(x)
{
case (3):
case (4):
System.out.println("3");
System.out.println("4");
break;
case (5):
case (6):
System.out.println("5");
System.out.println("6");
break;
}
// test changing this to if-else
switch(x)
{
case (3):
case (4):
System.out.println("3");
System.out.println("4");
break;
case (5):
case (6):
System.out.println("5");
System.out.println("6");
break;
default:
case (7):
System.out.println("default");
break;
}
// test changing this to if-else
switch(x)
{
case (3):
case (4):
//test comment
System.out.println("3");
//test comment3
System.out.println("4");
//test comment2
break;
default:
case (7):
System.out.println("default");
break;
case (5):
case (6):
System.out.println("5");
System.out.println("6");
break;
}
// test changing this to if-else (fallthrough)
switch(x)
{
case (3):
case (4):
System.out.println("3");
System.out.println("4");
case (5):
case (6):
System.out.println("5");
System.out.println("6");
break;
default:
case (7):
System.out.println("default");
break;
}
// test changing this to if-else (fallthrough)
switch(x)
{
case (3):
case (4):
System.out.println("3");
System.out.println("4");
break;
case (5):
case (6):
System.out.println("5");
System.out.println("6");
default:
case (7):
System.out.println("default");
break;
}
// test changing this to if-else (fallthrough)
switch(x)
{
case (3):
case (4):
System.out.println("3");
System.out.println("4");
case (5):
case (6):
System.out.println("5");
System.out.println("6");
default:
case (7):
System.out.println("default");
break;
}
// test changing this to if-else (side effect on switch expression)
int i;
Label:
switch(x++)
{
case (3):
case (4):
System.out.println("3");
System.out.println("4");
break;
case (5):
case (6):
System.out.println("5");
System.out.println("6");
break;
default:
case (7):
System.out.println("default");
break;
}
// test changing this to if-else (nested break)
switch(x)
{
case (3):
case (4):
System.out.println("3");
System.out.println("4");
if(true)
{
break;
}
break;
case (5):
case (6):
System.out.println("5");
System.out.println("6");
break;
default:
case (7):
System.out.println("default");
break;
}
// test changing this to if-else (declaration between branches)
switch(x)
{
case (3):
case (4):
int y;
Object foo;
System.out.println("3");
System.out.println("4");
break;
case (5):
case (6):
foo.wait(0);
System.out.println("5");
System.out.println("6");
break;
default:
case (7):
System.out.println("y = " + y);
System.out.println("default");
break;
}
}
public void testFlipComparison()
{
int foo = 3;
int bar = 4;
//flip this
if(3 > 4)
{
}
//flip this
if(3 >= 4)
{
}
//flip this
if(3 < 4)
{
}
//flip this
if(3 <= 4)
{
}
//flip this
if(3 == 4)
{
}
//flip this
if(3 != 4)
{
}
}
public void testNegateComparison()
{
int foo = 3;
int bar = 4;
//negate this
if(3 > 4)
{
}
//negate this
if(3 >= 4)
{
}
//negate this
if(3 < 4)
{
}
//negate this
if(3 <= 4)
{
}
//negate this
if(3 == 4)
{
}
//negate this
if(3 != 4)
{
}
}
public void testRemoveConditional()
{
boolean foo = true;
boolean baz = false;
// test removing this conditional
boolean bar = foo?true:false;
// test removing this conditional
bar = foo?false:true;
//test removing this conditional
bar = foo?(false):(true);
// test that this conditional can't be removed
bar = foo?true:true;
// test that this conditional can't be removed
bar = foo?false:false;
}
public void testRemoveIf()
{
boolean foo = false;
boolean bar = true;
// test removing this if
if(!foo)
{
bar = true;
}
else
{
bar = false;
}
// test removing this if
if(!foo)
{
bar = false;
}
else
{
bar = true;
}
// test that this if can't be removed
if(foo)
{
bar = true;
}
else
{
bar = true;
}
// test that this if can't be removed
if(!foo)
{
bar = false;
}
else
{
bar = false;
}
}
public boolean testRemoveIfReturn1()
{
boolean foo = true;
// test removing this
if(!foo)
{
return true;
}
else
{
return false;
}
}
public boolean testRemoveIfReturn2()
{
boolean foo = true;
// test removing this
if(!foo)
{
return false;
}
else
{
return true;
}
}
public boolean testRemoveIfReturn3()
{
boolean foo = true;
// test that this if can't be removed
if(!foo)
{
return true;
}
else
{
return true;
}
}
public boolean testRemoveIfReturn()
{
boolean foo = true;
// test that this if can't be removed
if(!foo)
{
return false;
}
else
{
return false;
}
}
public boolean testImplicitAssignIf()
{
boolean foo = true;
boolean bar;
// test that this if can't be removed
bar = false;
if(!foo)
{
bar = true;
}
return bar;
}
public boolean testImplicitAssignIfNegated()
{
boolean foo = true;
boolean bar;
// test that this if can't be removed
bar = true;
if(!foo)
{
bar = false;
}
return bar;
}
public boolean testRemoveIfImplicitReturn1()
{
boolean foo = true;
// test removing this
if(!foo)
{
return true;
}
return false;
}
public boolean testRemoveIfImplicitReturn2()
{
boolean foo = true;
// test removing this
if(!foo)
{
return false;
}
return true;
}
public boolean testRemoveIfImplicitReturn3()
{
boolean foo = true;
// test that this if can't be removed
if(!foo)
{
return true;
}
return true;
}
public boolean testRemoveIfImplicitReturn()
{
boolean foo = true;
// test that this if can't be removed
if(!foo)
{
return false;
}
return false;
}
public int testReplaceIfImplicitReturnWithConditional()
{
boolean foo = true;
if(!foo)
{
return 3;
}
return 4;
}
public void testReplaceConditionalWithIfAssign()
{
boolean foo = true;
int a;
// test replacing this with if-then, and back again
a = foo ? 3 : 4;
}
public void testReplaceConditionalWithIfDeclaration()
{
boolean foo = true;
// test replacing this with if-then
int a = foo?3:4;
}
public int testReplaceConditionalWithIfReturn()
{
boolean foo = true;
// test replacing this with if-then, and back again
return foo?3:4;
}
public void testIfToSwitch()
{
final int x = 2;
Label:
if(x == 4 || x == 3)
{
// test comment
System.out.println("1");
}
else if(x == 5 || x == 6)
{
System.out.println("2");
}
else
{
System.out.println("3");
}
// test that the first and ssecond blocks remain wrapped
if(x == 4 || x == 3)
{
int y = 3;
System.out.println("1");
}
else if(x == 5 || x == 6)
{
int y = 4;
System.out.println("2");
}
else
{
System.out.println("3");
}
// test that the first block remains wrapped, but the second doesn't
if(x == 4 || x == 3)
{
int y = 3;
System.out.println("1");
}
else if(x == 5 || x == 6)
{
for(int y = 0; y < 100; y++)
{
System.out.println("Barangus!");
}
System.out.println("2");
}
else
{
System.out.println("3");
}
for(; ;)
{
if(x == 4 || x == 3)
{
// test comment
System.out.println("1");
break;
}
else if(x == 5 || x == 6)
{
System.out.println("2");
}
else
{
System.out.println("3");
}
}
}
public void testIfToSwitchEnum()
{
final MyEnum x = MyEnum.Red;
if((x == MyEnum.Red))
{
// test comment
System.out.println("1");
}
else if((x == MyEnum.Blue) || x == MyEnum.Green)
{
System.out.println("2");
}
else
{
System.out.println("3");
}
}
public void testFlipAnd()
{
boolean foo = true;
boolean bar = false;
boolean baz = false;
// flip these
if(foo && bar)
{
System.out.println("1");
}
// flip these
if(foo && bar && baz)
{
System.out.println("1");
}
}
public void testFlipOr()
{
boolean foo = true;
boolean bar = false;
boolean baz = false;
// flip these
if(foo || bar)
{
System.out.println("1");
}
// flip these
if(foo || bar || baz)
{
System.out.println("1");
}
}
public void flipCommutative()
{
"bar".equals("foo");
"foo".equalsIgnoreCase("bar");
"foo".compareTo("bar");
}
public void testAssertToIf(boolean foo)
{
assert foo :"bar";
assert foo ;
assert !foo ;
}
public void testDetailException() throws IOException
{
// check that this is detailed
try
{
if(true)
{
throw new NullPointerException();
}
throw new ArrayIndexOutOfBoundsException();
}
catch(Exception e)
{
System.out.println("Barangus!");
}
// check that this is detailed, and the exceptions sorted correctly
try
{
if(true)
{
throw new IOException();
}
throw new EOFException();
}
catch(Exception e)
{
System.out.println("Barangus!");
}
// check that this gets no intention
try
{
if(true)
{
throw new NullPointerException();
}
throw new ArrayIndexOutOfBoundsException();
}
catch(NullPointerException e)
{
System.out.println("Barangus!");
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Barangus!");
}
// check that this doesn't get detailed
try
{
if(true)
{
throw new IOException();
}
throw new EOFException();
}
catch(Error e)
{
System.out.println("Barangus!");
}
}
public void testDetailMethodExceptions()
{
try
{
if(true)
{
foo();
}
throw new ArrayIndexOutOfBoundsException();
}
catch(Exception e)
{
System.out.println("Barangus!");
}
}
private void foo() throws IOException
{
throw new IOException();
}
public void testSimplifyDeclaration()
{
// test simplifying this
int foo[];
// test simplifying this
int bar[] = new int[3];
// test simplifying this
int[] baz[] = new int[3][];
// test simplifying this
int bar2[] = new int[3], bar3[] = new int[4];
// test simplifying this
int baz2[] = new int[3], baz3[];
// test that this doesn't simplify
int baz4[] = new int[3], baz5;
}
public void testSimplifyParam(int foo[], int[] bar[], int[] baz)
{
}
public void testConstantExpression()
{
int x = 60 * 60;
}
public void testConstantSubExpression()
{
int x = 3 * 60 * 60;
}
public void testConditionalDeclaration()
{
boolean foo = bar()?true:false;
}
public boolean bar()
{
return true;
}
public void testConcatenation()
{
System.out.println("foo" + "bar" + "baz");
final String fooString = "foo";
System.out.println(fooString + "bar" + "baz");
System.out.println(fooString + "bar" + 'b');
System.out.println(fooString + 1 + 2);
System.out.println((fooString + 1) + 2);
System.out.println(fooString + (1 + 2));
final StringBuffer buffer = new StringBuffer();
buffer.append("foo" + "bar" + "baz");
}
public void testStringBufferSequencing()
{
StringBuffer buf = new StringBuffer();
buf.append("foo").append("bar").append("baz");
StringBuffer buf2;
buf2 = new StringBuffer().append("foo").append("bar").append("baz");
final StringBuffer buf3 = new StringBuffer().append("foo").append("bar").append("baz");
}
public boolean testExpandBoolean()
{
boolean foo = true;
boolean bar = false;
bar = foo;
return bar;
}
public void testSplitElseIf()
{
if (bar()) {
System.out.println("1");
} else if (!bar()) {
System.out.println("2");
}
if(bar())
{
System.out.println("1");
}
else if(!bar())
{
System.out.println("2");
}
else if(!bar() && bar())
{
System.out.println("3");
}
if(bar())
{
System.out.println("1");
}
else
{
System.out.println("2");
}
}
public void testCharToString()
{
String foo = "b" + 'c';
foo +='d';
StringBuffer bar = new StringBuffer();
bar.append('c');
bar.append('\'');
bar.append('"');
}
public void testStringToChar()
{
String foo = "b" + "foo";
foo +="d";
StringBuffer bar = new StringBuffer();
bar.append("c");
bar.append("\'");
bar.append("\"");
}
public void testMergeParallelIfs()
{
boolean b = bar();
if(b)
System.out.println("1");
if(b)
System.out.println("2");
else
System.out.println("3");
}
public void testMergeParallelIfsCascaded()
{
boolean b = bar();
boolean c = bar();
if(b)
System.out.println("1");
else if(c)
System.out.println("4");
if(b)
System.out.println("2");
else if(c)
System.out.println("5");
else
System.out.println("3");
}
public void testConvertToOldForLoop()
{
List<String> locations = new ArrayList<String>();
for (final String location1 : locations) {
System.out.println(location1);
}
}
public void testMergeParallelIfsWitDecls()
{
boolean b = bar();
if(b)
{
int i;
System.out.println("1");
}
if(b)
{
int j;
System.out.println("2");
}else
System.out.println("3");
}
private void assertNull(Object s, String value)
{
boolean a = bar();
boolean b = bar();
if(!(((a || b))))
{
// Do something
}
}
public void testMergeForLoops()
{
int a = 3;
for (int i = 0; i < a; i++) {
System.out.println(i);
}
for (int i = 0; i < a; i++)
System.out.println(i * 2);
}
private void assertNull(Object value)
{
}
private void assertEquals(String s, Object b, Object foo)
{
}
private void assertEquals(Object b, Object foo)
{
}
private void assertEquals(String s, boolean b, boolean foo)
{
}
private void assertEquals(boolean b, boolean foo)
{
}
private void assertTrue(String message, boolean b)
{
}
private void assertTrue(boolean b)
{
}
private void assertFalse(String message, boolean b)
{
}
private void assertFalse(boolean b)
{
}
private void assertEquals(int int1, int int2)
{
}
private void assertEquals(String message, int int1, int int2)
{
}
}