|
17 | 17 | package com.google.common.geometry; |
18 | 18 |
|
19 | 19 | import com.google.common.collect.Lists; |
20 | | -import com.google.testing.util.MoreAsserts; |
| 20 | + |
| 21 | +import junit.framework.Assert; |
21 | 22 |
|
22 | 23 | import java.util.List; |
23 | 24 |
|
@@ -105,16 +106,16 @@ public void testEqualsAndHashCode() { |
105 | 106 | S2Polyline line1 = new S2Polyline(vertices); |
106 | 107 | S2Polyline line2 = new S2Polyline(vertices); |
107 | 108 |
|
108 | | - MoreAsserts.checkEqualsAndHashCodeMethods(line1, line2, true); |
| 109 | + checkEqualsAndHashCodeMethods(line1, line2, true); |
109 | 110 |
|
110 | 111 | List<S2Point> moreVertices = Lists.newLinkedList(vertices); |
111 | 112 | moreVertices.remove(0); |
112 | 113 |
|
113 | 114 | S2Polyline line3 = new S2Polyline(moreVertices); |
114 | 115 |
|
115 | | - MoreAsserts.checkEqualsAndHashCodeMethods(line1, line3, false); |
116 | | - MoreAsserts.checkEqualsAndHashCodeMethods(line1, null, false); |
117 | | - MoreAsserts.checkEqualsAndHashCodeMethods(line1, "", false); |
| 116 | + checkEqualsAndHashCodeMethods(line1, line3, false); |
| 117 | + checkEqualsAndHashCodeMethods(line1, null, false); |
| 118 | + checkEqualsAndHashCodeMethods(line1, "", false); |
118 | 119 | } |
119 | 120 |
|
120 | 121 | public void testProject() { |
@@ -159,4 +160,44 @@ public void testProject() { |
159 | 160 | assertEquals(2, edgeIndex); |
160 | 161 | } |
161 | 162 |
|
| 163 | + /** |
| 164 | + * Utility for testing equals() and hashCode() results at once. |
| 165 | + * Tests that lhs.equals(rhs) matches expectedResult, as well as |
| 166 | + * rhs.equals(lhs). Also tests that hashCode() return values are |
| 167 | + * equal if expectedResult is true. (hashCode() is not tested if |
| 168 | + * expectedResult is false, as unequal objects can have equal hashCodes.) |
| 169 | + * |
| 170 | + * @param lhs An Object for which equals() and hashCode() are to be tested. |
| 171 | + * @param rhs As lhs. |
| 172 | + * @param expectedResult True if the objects should compare equal, |
| 173 | + * false if not. |
| 174 | + */ |
| 175 | + private static void checkEqualsAndHashCodeMethods(Object lhs, Object rhs, |
| 176 | + boolean expectedResult) { |
| 177 | + if ((lhs == null) && (rhs == null)) { |
| 178 | + Assert.assertTrue( |
| 179 | + "Your check is dubious...why would you expect null != null?", |
| 180 | + expectedResult); |
| 181 | + return; |
| 182 | + } |
| 183 | + |
| 184 | + if ((lhs == null) || (rhs == null)) { |
| 185 | + Assert.assertFalse( |
| 186 | + "Your check is dubious...why would you expect an object " |
| 187 | + + "to be equal to null?", expectedResult); |
| 188 | + } |
| 189 | + |
| 190 | + if (lhs != null) { |
| 191 | + assertEquals(expectedResult, lhs.equals(rhs)); |
| 192 | + } |
| 193 | + if (rhs != null) { |
| 194 | + assertEquals(expectedResult, rhs.equals(lhs)); |
| 195 | + } |
| 196 | + |
| 197 | + if (expectedResult) { |
| 198 | + String hashMessage = |
| 199 | + "hashCode() values for equal objects should be the same"; |
| 200 | + Assert.assertTrue(hashMessage, lhs.hashCode() == rhs.hashCode()); |
| 201 | + } |
| 202 | + } |
162 | 203 | } |
0 commit comments