|
8 | 8 |
|
9 | 9 | import static org.junit.Assert.assertEquals;
|
10 | 10 | import static org.junit.Assert.assertFalse;
|
| 11 | +import static org.junit.Assert.assertThat; |
11 | 12 | import static org.junit.Assert.assertTrue;
|
| 13 | +import static org.junit.matchers.JUnitMatchers.containsString; |
12 | 14 |
|
13 | 15 | import java.util.List;
|
14 | 16 |
|
@@ -106,4 +108,47 @@ public void testCreateToStringFromFields() throws Exception
|
106 | 108 | assertTrue(javaClass.getMethod("toString").getBody().contains("return"));
|
107 | 109 | assertTrue(javaClass.getMethod("toString").getBody().contains("firstName != null"));
|
108 | 110 | }
|
| 111 | + |
| 112 | + @Test |
| 113 | + public void testCreateHashCodeAndEquals() throws Exception |
| 114 | + { |
| 115 | + Field<JavaClass> field = javaClass.getField("foo"); |
| 116 | + Refactory.createHashCodeAndEquals(javaClass, field); |
| 117 | + |
| 118 | + List<Method<JavaClass>> methods = javaClass.getMethods(); |
| 119 | + Method<JavaClass> equals = methods.get(0); |
| 120 | + Method<JavaClass> hashcode = methods.get(1); |
| 121 | + |
| 122 | + assertEquals("equals", equals.getName()); |
| 123 | + assertEquals(1, equals.getParameters().size()); |
| 124 | + assertThat(equals.getBody(), containsString("if (foo != that.foo) {\n return false;\n}")); |
| 125 | + |
| 126 | + assertEquals("hashCode", hashcode.getName()); |
| 127 | + assertEquals(0, hashcode.getParameters().size()); |
| 128 | + assertEquals("int", hashcode.getReturnType()); |
| 129 | + assertThat(hashcode.getBody(), containsString("result=prime * result + foo;")); |
| 130 | + } |
| 131 | + |
| 132 | + @Test |
| 133 | + public void testCreateHashCodeAndEqualsMultipleFields() throws Exception |
| 134 | + { |
| 135 | + Field<JavaClass> intField = javaClass.getField("foo"); |
| 136 | + Field<JavaClass> stringField = javaClass.getField("firstName"); |
| 137 | + Refactory.createHashCodeAndEquals(javaClass, intField, stringField); |
| 138 | + |
| 139 | + List<Method<JavaClass>> methods = javaClass.getMethods(); |
| 140 | + Method<JavaClass> equals = methods.get(0); |
| 141 | + Method<JavaClass> hashcode = methods.get(1); |
| 142 | + |
| 143 | + assertEquals("equals", equals.getName()); |
| 144 | + assertEquals(1, equals.getParameters().size()); |
| 145 | + assertThat(equals.getBody(), containsString("if (foo != that.foo) {\n return false;\n}")); |
| 146 | + assertThat(equals.getBody(), containsString("if (firstName != null) {\n return firstName.equals(((Foo)that).firstName);\n}")); |
| 147 | + |
| 148 | + assertEquals("hashCode", hashcode.getName()); |
| 149 | + assertEquals(0, hashcode.getParameters().size()); |
| 150 | + assertEquals("int", hashcode.getReturnType()); |
| 151 | + assertThat(hashcode.getBody(), containsString("result=prime * result + foo;")); |
| 152 | + assertThat(hashcode.getBody(), containsString("result=prime * result + ((firstName == null) ? 0 : firstName.hashCode());")); |
| 153 | + } |
109 | 154 | }
|
0 commit comments