Skip to content

Commit 70155fd

Browse files
authored
Merge pull request #234 from darya-vv/fix/issues-172-field-info-equals
Fix FieldInfo.equals() issue
2 parents fb4bc62 + 2e8a806 commit 70155fd

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

  • aether-datafixers-schema-tools/src
    • main/java/de/splatgames/aether/datafixers/schematools/introspection
    • test/java/de/splatgames/aether/datafixers/schematools/introspection

aether-datafixers-schema-tools/src/main/java/de/splatgames/aether/datafixers/schematools/introspection/FieldInfo.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,8 @@ public boolean equals(final Object obj) {
240240
return this.optional == other.optional
241241
&& this.name.equals(other.name)
242242
&& this.path.equals(other.path)
243-
&& this.fieldType.reference().equals(other.fieldType.reference());
243+
&& this.fieldType.reference().equals(other.fieldType.reference())
244+
&& this.fieldType.codec().equals(other.fieldType.codec());
244245
}
245246

246247
/**

aether-datafixers-schema-tools/src/test/java/de/splatgames/aether/datafixers/schematools/introspection/FieldInfoTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
package de.splatgames.aether.datafixers.schematools.introspection;
2424

25+
import de.splatgames.aether.datafixers.api.codec.Codecs;
2526
import de.splatgames.aether.datafixers.api.type.Type;
2627
import org.junit.jupiter.api.DisplayName;
2728
import org.junit.jupiter.api.Nested;
@@ -183,6 +184,26 @@ void equalsReturnsTrueForSameInstance() {
183184

184185
assertThat(field).isEqualTo(field);
185186
}
187+
188+
@Test
189+
@DisplayName("equals returns false for different Type.codec")
190+
void equalsReturnsFalseForDifferentTypeCodec() {
191+
var falseCodecStringType = Type.primitive("string", Codecs.INT);
192+
final FieldInfo field1 = FieldInfo.create("health", false, falseCodecStringType, "player.health");
193+
final FieldInfo field2 = FieldInfo.create("health", false, Type.STRING, "player.health");
194+
195+
assertThat(field1).isNotEqualTo(field2);
196+
}
197+
198+
@Test
199+
@DisplayName("equals returns false for different Type.ref and Type.describe")
200+
void equalsReturnsFalseForDifferentTypeDescribe() {
201+
var falseNameStringType = Type.primitive("int", Codecs.STRING);
202+
final FieldInfo field1 = FieldInfo.create("health", false, falseNameStringType, "player.health");
203+
final FieldInfo field2 = FieldInfo.create("health", false, Type.STRING, "player.health");
204+
205+
assertThat(field1).isNotEqualTo(field2);
206+
}
186207
}
187208

188209
@Nested

0 commit comments

Comments
 (0)