diff --git a/libs/relast.jar b/libs/relast.jar index b1a7542048dd1611db7f479307b0285efd8bb1f6..f71563319c89f149ab48a7f4d20bc4f663dafe9b 100644 Binary files a/libs/relast.jar and b/libs/relast.jar differ diff --git a/testDumper/src/main/jastadd/testDumper.relast b/testDumper/src/main/jastadd/testDumper.relast index b49a389c197d953eb47019e7759300ee94d9aa0e..487953442b55ff19aea891fef0030379afe80412 100644 --- a/testDumper/src/main/jastadd/testDumper.relast +++ b/testDumper/src/main/jastadd/testDumper.relast @@ -3,6 +3,7 @@ Root : Nameable ::= A B* [C] ; A : Nameable ::= B MyC:C ; B : Nameable ::= <OtherValue> ; C : Nameable ::= [A] <Unwanted:int> <RawReference:A> /Calculated:A/ /AlsoCalculated:B*/ ; +SubC : C ::= <RawReference:A> <Unwanted:int> [A] /Calculated:A/ /AlsoCalculated:B*/ ; rel B.oneA -> A ; rel B.maybeC? -> C ; diff --git a/testDumper/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java b/testDumper/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java index 9f45108fb7b6eaceb51424605e457d1e3efd052f..f4742747a7040dddd5b775c5a889dabaf4effdad 100644 --- a/testDumper/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java +++ b/testDumper/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java @@ -1,14 +1,15 @@ package de.tudresden.inf.st.jastadd.testDumper; import de.tudresden.inf.st.jastadd.dumpAst.ast.DumpNode; +import org.jastadd.testDumper.ast.C; import org.jastadd.testDumper.ast.Root; +import org.jastadd.testDumper.ast.SubC; import org.junit.jupiter.api.Test; import java.util.List; import static de.tudresden.inf.st.jastadd.testDumper.TestUtils.*; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.tuple; +import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.assertEquals; public class TestSimple { @@ -153,4 +154,22 @@ public class TestSimple { assertThatMapOf(referenceTokens(actualC)).containsExactlyInAnyOrder(tuple(TOKEN_LABEL_RAW_REFERENCE, A_NAME)); } + @Test + public void testChildrenReorder1() { + C subC = new SubC(); + subC.setName(C_NAME); + subC.setUnwanted(5); + Root root = createRoot(createA(A_NAME), subC, createB(B_NAME)); + + List<DumpNode> nodes = TestUtils.dumpModel(root); + assertThat(nodes).flatExtracting(NAME_EXTRACTOR).containsExactlyInAnyOrder(ROOT_NAME, A_NAME, B_NAME, C_NAME); + DumpNode actualRoot = TestUtils.findByName(nodes, ROOT_NAME); + assertEquals(1, actualRoot.getNumDumpToken()); + assertEquals(3, actualRoot.getNumDumpChildNode()); + assertEquals(0, actualRoot.getNumDumpRelation()); + assertThat(valueTokens(findByName(nodes, C_NAME))).containsOnly( + entry("Name", C_NAME), + entry(TOKEN_LABEL_UNWANTED, 5)); + } + }