diff --git a/src/main/java/spoon/support/util/RtHelper.java b/src/main/java/spoon/support/util/RtHelper.java index 714cf43d8aa..ff4d6d96a62 100644 --- a/src/main/java/spoon/support/util/RtHelper.java +++ b/src/main/java/spoon/support/util/RtHelper.java @@ -22,12 +22,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; /** * This class is a helper for runtime reflection. @@ -50,7 +45,9 @@ public static Field[] getAllFields(Class c) { private static void addAllFields(Class c, List fields) { if (c != null && c != Object.class) { - Collections.addAll(fields, c.getDeclaredFields()); + Field[] declaredFields = c.getDeclaredFields(); + Arrays.sort(declaredFields, Comparator.comparing(Field::getName)); + Collections.addAll(fields, declaredFields); addAllFields(c.getSuperclass(), fields); for (Class iface : c.getInterfaces()) { addAllFields(iface, fields); diff --git a/src/test/java/spoon/test/imports/ImportTest.java b/src/test/java/spoon/test/imports/ImportTest.java index bdb66eec107..2de63358c20 100644 --- a/src/test/java/spoon/test/imports/ImportTest.java +++ b/src/test/java/spoon/test/imports/ImportTest.java @@ -89,6 +89,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -1877,6 +1878,7 @@ void staticImports_ofNestedTypes_shouldBeRecorded(CtModel model) { // assert List imports = mainType.getPosition().getCompilationUnit().getImports(); + imports.sort(Comparator.comparing(importElement -> importElement.getReference().getSimpleName())); assertThat(imports, hasSize(2)); CtImport import0 = imports.get(0); @@ -1894,6 +1896,7 @@ void staticTypeAndMethodImport_importShouldAppearOnlyOnceIfTheirSimpleNamesAreEq // assert List imports = mainType.getPosition().getCompilationUnit().getImports(); assertThat(imports, hasSize(2)); + imports.sort(Comparator.comparing(importElement -> importElement.getImportKind().toString())); CtImport import0 = imports.get(0); assertThat(import0.getImportKind(), is(CtImportKind.METHOD)); diff --git a/src/test/java/spoon/test/position/PositionTest.java b/src/test/java/spoon/test/position/PositionTest.java index 6a8e108d801..0186de90aff 100644 --- a/src/test/java/spoon/test/position/PositionTest.java +++ b/src/test/java/spoon/test/position/PositionTest.java @@ -19,6 +19,7 @@ import java.io.File; import java.io.IOException; +import java.util.Comparator; import java.util.Iterator; import java.util.List; @@ -806,6 +807,8 @@ public void testPositionOfCtImport() throws Exception { AnnonymousClassNewIface.class); String originSources = foo.getPosition().getCompilationUnit().getOriginalSourceCode(); List imports = foo.getPosition().getCompilationUnit().getImports(); + // Sorting using position of import element so that they are sorted in the order they are imported + imports.sort(Comparator.comparing(importElement -> importElement.getPosition().getSourceStart())); assertEquals(2, imports.size()); Iterator iter = imports.iterator(); { diff --git a/src/test/java/spoon/test/template/SubstitutionTest.java b/src/test/java/spoon/test/template/SubstitutionTest.java index 6cc606b6104..76de99c0563 100644 --- a/src/test/java/spoon/test/template/SubstitutionTest.java +++ b/src/test/java/spoon/test/template/SubstitutionTest.java @@ -176,8 +176,12 @@ public void testCreateTypeFromTemplate() { assertNotNull(genEnum); assertSame(genEnum, factory.Type().get("generated.GenEnum")); assertEquals(2, genEnum.getEnumValues().size()); - assertEquals("GOOD", genEnum.getEnumValues().get(0).getSimpleName()); - assertEquals("BETTER", genEnum.getEnumValues().get(1).getSimpleName()); + List enumValueNames = genEnum.getEnumValues().stream() + .map(CtEnumValue::getSimpleName) + .sorted() + .toList(); + assertEquals("GOOD", enumValueNames.get(1)); + assertEquals("BETTER", enumValueNames.get(0)); } @Test