Skip to content

Commit f093f7a

Browse files
committed
#63 Fix FieldUtils tests to account for synthetic fields
1 parent a057e6a commit f093f7a

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

src/test/java/ch/jalu/typeresolver/FieldUtilsTest.java

+22-8
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,27 @@ void shouldGetFieldsIncludingParents() throws NoSuchFieldException {
4747
List<Field> allFields = FieldUtils.getFieldsIncludingParents(Class3.class);
4848

4949
// then
50-
assertThat(allFields, hasSize(6));
51-
assertThat(allFields.get(0), equalTo(Class1.class.getDeclaredField("C1A")));
52-
assertThat(allFields.get(1), equalTo(Class1.class.getDeclaredField("c1b")));
53-
assertThat(allFields.get(2), equalTo(Class2.class.getDeclaredField("c2a")));
54-
assertThat(allFields.get(3), equalTo(Class2.class.getDeclaredField("c2b")));
55-
assertThat(allFields.get(4), equalTo(Class3.class.getDeclaredField("c3a")));
56-
assertThat(allFields.get(5), equalTo(Class3.class.getDeclaredField("c3b")));
50+
assertThat(allFields.size(), greaterThanOrEqualTo(6));
51+
List<Field> expectedFields = new ArrayList<>();
52+
expectedFields.add(Class1.class.getDeclaredField("C1A"));
53+
expectedFields.add(Class1.class.getDeclaredField("c1b"));
54+
expectedFields.add(Class2.class.getDeclaredField("c2a"));
55+
expectedFields.add(Class2.class.getDeclaredField("c2b"));
56+
expectedFields.add(Class3.class.getDeclaredField("c3a"));
57+
expectedFields.add(Class3.class.getDeclaredField("c3b"));
58+
59+
Iterator<Field> expectedFieldsIterator = expectedFields.iterator();
60+
Field expectedField = expectedFieldsIterator.next();
61+
for (Field field : allFields) {
62+
if (field.equals(expectedField)) {
63+
expectedField = expectedFieldsIterator.hasNext() ? expectedFieldsIterator.next() : null;
64+
}
65+
}
66+
67+
if (expectedFieldsIterator.hasNext()) {
68+
throw new IllegalStateException("Could not match all fields!\nExpected: " + expectedFields
69+
+ "\nActual: " + allFields);
70+
}
5771
}
5872

5973
@Test
@@ -74,7 +88,7 @@ void shouldGetAllFieldsSatisfyingFilter() throws NoSuchFieldException {
7488
void shouldGetAllFieldsWithFilterAndParentsLast() throws NoSuchFieldException {
7589
// given / when
7690
List<Field> allFields = FieldUtils.getFieldsIncludingParents(Class3.class,
77-
field -> !field.getName().endsWith("a"), false);
91+
field -> !field.getName().endsWith("a") && !field.isSynthetic(), false);
7892

7993
// then
8094
assertThat(allFields, hasSize(4));

0 commit comments

Comments
 (0)