Skip to content

Commit 85f5361

Browse files
authored
Merge pull request #695 from mattpapp/fix/recordtype-hashcode-equals-contract
fix: RecordType.hashCode() inconsistent with equals() (#694)
2 parents 8d8930a + aed2d1b commit 85f5361

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public boolean equals(Object o) {
6565

6666
@Override
6767
public int hashCode() {
68-
return Objects.hash(super.hashCode(), fieldNames);
68+
return Objects.hash(super.hashCode(), Arrays.hashCode(fieldNames));
6969
}
7070

7171
@Override

wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.wayang.core.types.DataSetType;
2323
import org.junit.jupiter.api.Test;
2424

25+
import static org.junit.jupiter.api.Assertions.assertEquals;
2526
import static org.junit.jupiter.api.Assertions.assertFalse;
2627
import static org.junit.jupiter.api.Assertions.assertTrue;
2728

@@ -45,4 +46,13 @@ void testSupertype() {
4546
assertTrue(t3.isSupertypeOf(t3));
4647
assertFalse(t3.isSupertypeOf(t2));
4748
}
49+
50+
@Test
51+
void testEqualInstancesHaveSameHashCode() {
52+
RecordType rt1 = new RecordType("x", "y", "z");
53+
RecordType rt2 = new RecordType("x", "y", "z");
54+
55+
assertEquals(rt1, rt2);
56+
assertEquals(rt1.hashCode(), rt2.hashCode());
57+
}
4858
}

0 commit comments

Comments
 (0)