From 8c99e2e2f61c4a056ac7665fb76b52c265ea31c2 Mon Sep 17 00:00:00 2001 From: v d Date: Fri, 24 Oct 2025 21:49:20 -0400 Subject: [PATCH 1/2] Fix flaky test by sorting elements (deterministic solution) --- nondex-after.log | Bin 0 -> 9250 bytes nondex-before.log | Bin 0 -> 1266144 bytes ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 0 .../invocations | 2 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 0 .../invocations | 2 + typescript-generator-core/.nondex/LATEST | 4 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 0 .../invocations | 2 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 1 + .../invocations | 2 + ...zqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=.run | 4 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 0 .../invocations | 2 + .../test_results.html | 1 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 1 + ....typescript.generator.TaggedUnionsTest.xml | 83 ++ ....typescript.generator.TaggedUnionsTest.txt | 4 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 1 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 1 + ...lbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=.run | 4 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 1 + .../invocations | 2 + .../test_results.html | 1 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 0 .../invocations | 2 + ...eNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=.run | 4 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 0 .../invocations | 2 + .../test_results.html | 1 + ...gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=.run | 4 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 0 .../invocations | 2 + .../test_results.html | 1 + ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 0 .../invocations | 2 + .../.nondex/nondex-instr.jar | Bin 0 -> 72813 bytes ....typescript.generator.TaggedUnionsTest.xml | 148 ++++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 70 ++ .../failures | 0 .../invocations | 2 + ....typescript.generator.TaggedUnionsTest.xml | 83 ++ .../config | 11 + ....typescript.generator.TaggedUnionsTest.txt | 4 + .../failures | 0 .../invocations | 2 + .../typescript/generator/emitter/Emitter.java | 23 +- .../generator/JaxrsV2ApplicationTest.java | 731 ++++++++++++++++++ .../generator/parser/JsonbV1ParserTest.java | 348 +++++++++ 86 files changed, 4509 insertions(+), 4 deletions(-) create mode 100644 nondex-after.log create mode 100644 nondex-before.log create mode 100644 typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/config create mode 100644 typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/failures create mode 100644 typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/invocations create mode 100644 typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/config create mode 100644 typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/failures create mode 100644 typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/invocations create mode 100644 typescript-generator-core/.nondex/LATEST create mode 100644 typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/config create mode 100644 typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/failures create mode 100644 typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/invocations create mode 100644 typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/config create mode 100644 typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/failures create mode 100644 typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/invocations create mode 100644 typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=.run create mode 100644 typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/config create mode 100644 typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/failures create mode 100644 typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/invocations create mode 100644 typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/test_results.html create mode 100644 typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/failures create mode 100644 typescript-generator-core/.nondex/clean_UDPGUkpRXEgIXqbCJ82YYpAEqnHACZR4N1SFZl97c=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/clean_UDPGUkpRXEgIXqbCJ82YYpAEqnHACZR4N1SFZl97c=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/failures create mode 100644 typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/failures create mode 100644 typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=.run create mode 100644 typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/config create mode 100644 typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/failures create mode 100644 typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/invocations create mode 100644 typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/test_results.html create mode 100644 typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/config create mode 100644 typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/failures create mode 100644 typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/invocations create mode 100644 typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=.run create mode 100644 typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/config create mode 100644 typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/failures create mode 100644 typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/invocations create mode 100644 typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/test_results.html create mode 100644 typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=.run create mode 100644 typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/config create mode 100644 typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/failures create mode 100644 typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/invocations create mode 100644 typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/test_results.html create mode 100644 typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/config create mode 100644 typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/failures create mode 100644 typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/invocations create mode 100644 typescript-generator-core/.nondex/nondex-instr.jar create mode 100644 typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/config create mode 100644 typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/failures create mode 100644 typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/invocations create mode 100644 typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml create mode 100644 typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/config create mode 100644 typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/cz.habarta.typescript.generator.TaggedUnionsTest.txt create mode 100644 typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/failures create mode 100644 typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/invocations create mode 100644 typescript-generator-core/src/test/java/cz/habarta/typescript/generator/JaxrsV2ApplicationTest.java create mode 100644 typescript-generator-core/src/test/java/cz/habarta/typescript/generator/parser/JsonbV1ParserTest.java diff --git a/nondex-after.log b/nondex-after.log new file mode 100644 index 0000000000000000000000000000000000000000..a407388c3367eb6f026c3871fc627cd22db7443f GIT binary patch literal 9250 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 HjKu#3N@e~J literal 0 HcmV?d00001 diff --git a/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..ce0e939a0 --- /dev/null +++ b/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/config b/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/config new file mode 100644 index 000000000..166868c18 --- /dev/null +++ b/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=1016066 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..2b859e4dd --- /dev/null +++ b/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.917 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.853 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/failures b/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/invocations b/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/invocations new file mode 100644 index 000000000..f82b8d606 --- /dev/null +++ b/typescript-generator-core/.nondex/ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U=/invocations @@ -0,0 +1,2 @@ +COUNT:1448 +SHUFFLES:1447 diff --git a/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..5019d6d0d --- /dev/null +++ b/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/config b/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/config new file mode 100644 index 000000000..cef0c2843 --- /dev/null +++ b/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=974622 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..0f6b277d5 --- /dev/null +++ b/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.364 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 1.174 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/failures b/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/invocations b/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/invocations new file mode 100644 index 000000000..6fb368548 --- /dev/null +++ b/typescript-generator-core/.nondex/JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs=/invocations @@ -0,0 +1,2 @@ +COUNT:1447 +SHUFFLES:1447 diff --git a/typescript-generator-core/.nondex/LATEST b/typescript-generator-core/.nondex/LATEST new file mode 100644 index 000000000..58c585260 --- /dev/null +++ b/typescript-generator-core/.nondex/LATEST @@ -0,0 +1,4 @@ +hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g= +JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs= +ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U= +clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM= diff --git a/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..784775ce8 --- /dev/null +++ b/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/config b/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/config new file mode 100644 index 000000000..1c892a64c --- /dev/null +++ b/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=1016066 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..6f5387d51 --- /dev/null +++ b/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.632 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.596 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/failures b/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/invocations b/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/invocations new file mode 100644 index 000000000..92b43ff04 --- /dev/null +++ b/typescript-generator-core/.nondex/NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk=/invocations @@ -0,0 +1,2 @@ +COUNT:1448 +SHUFFLES:1448 diff --git a/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..637dc9b6d --- /dev/null +++ b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + height: number; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/config b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/config new file mode 100644 index 000000000..8c09ef1b5 --- /dev/null +++ b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=1016066 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..44e0f4819 --- /dev/null +++ b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.437 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.413 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + height: number; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/failures b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/failures new file mode 100644 index 000000000..c6496b318 --- /dev/null +++ b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/failures @@ -0,0 +1 @@ +cz.habarta.typescript.generator.TaggedUnionsTest#testTaggedUnionsWithInterfaces diff --git a/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/invocations b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/invocations new file mode 100644 index 000000000..92b43ff04 --- /dev/null +++ b/typescript-generator-core/.nondex/Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s=/invocations @@ -0,0 +1,2 @@ +COUNT:1448 +SHUFFLES:1448 diff --git a/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=.run b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=.run new file mode 100644 index 000000000..80d951549 --- /dev/null +++ b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=.run @@ -0,0 +1,4 @@ +WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU= +hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE= +kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA= +clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s= diff --git a/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..4396eda6f --- /dev/null +++ b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/config b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/config new file mode 100644 index 000000000..1fade0288 --- /dev/null +++ b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=933178 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..eaab0b8e4 --- /dev/null +++ b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.596 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.569 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/failures b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/invocations b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/invocations new file mode 100644 index 000000000..4fa0e8607 --- /dev/null +++ b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/invocations @@ -0,0 +1,2 @@ +COUNT:1449 +SHUFFLES:1448 diff --git a/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/test_results.html b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/test_results.html new file mode 100644 index 000000000..c0eab7fc3 --- /dev/null +++ b/typescript-generator-core/.nondex/WGrbzqneNcXdVLQcjje+v7mY+1GrhcWH8XUwviVsU=/test_results.html @@ -0,0 +1 @@ +Test Results
Test Name9331789746221016066
\ No newline at end of file diff --git a/typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..594abc788 --- /dev/null +++ b/typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..502fd5b30 --- /dev/null +++ b/typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.535 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.493 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/failures b/typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/failures new file mode 100644 index 000000000..c6496b318 --- /dev/null +++ b/typescript-generator-core/.nondex/clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM=/failures @@ -0,0 +1 @@ +cz.habarta.typescript.generator.TaggedUnionsTest#testTaggedUnionsWithInterfaces diff --git a/typescript-generator-core/.nondex/clean_UDPGUkpRXEgIXqbCJ82YYpAEqnHACZR4N1SFZl97c=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/clean_UDPGUkpRXEgIXqbCJ82YYpAEqnHACZR4N1SFZl97c=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..d04c018ff --- /dev/null +++ b/typescript-generator-core/.nondex/clean_UDPGUkpRXEgIXqbCJ82YYpAEqnHACZR4N1SFZl97c=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/clean_UDPGUkpRXEgIXqbCJ82YYpAEqnHACZR4N1SFZl97c=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/clean_UDPGUkpRXEgIXqbCJ82YYpAEqnHACZR4N1SFZl97c=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..3638d09dc --- /dev/null +++ b/typescript-generator-core/.nondex/clean_UDPGUkpRXEgIXqbCJ82YYpAEqnHACZR4N1SFZl97c=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.338 s -- in cz.habarta.typescript.generator.TaggedUnionsTest diff --git a/typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..5f7c2936a --- /dev/null +++ b/typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..19d264a8e --- /dev/null +++ b/typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.626 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.589 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/failures b/typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/failures new file mode 100644 index 000000000..c6496b318 --- /dev/null +++ b/typescript-generator-core/.nondex/clean_t7n+pFzmXYUXnzTW0fdEIZMAWjYbBkk+DoLVcKYOT+s=/failures @@ -0,0 +1 @@ +cz.habarta.typescript.generator.TaggedUnionsTest#testTaggedUnionsWithInterfaces diff --git a/typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..e81615d37 --- /dev/null +++ b/typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..f3679c405 --- /dev/null +++ b/typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.609 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.574 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/failures b/typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/failures new file mode 100644 index 000000000..c6496b318 --- /dev/null +++ b/typescript-generator-core/.nondex/clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA=/failures @@ -0,0 +1 @@ +cz.habarta.typescript.generator.TaggedUnionsTest#testTaggedUnionsWithInterfaces diff --git a/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=.run b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=.run new file mode 100644 index 000000000..855f1e5dd --- /dev/null +++ b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=.run @@ -0,0 +1,4 @@ +dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE= +yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk= +Q0T29HkrgrZ7oj87Xxr1aZ8PI1Rs7zzKE60t4LgR6s= +clean_UDPGUkpRXEgIXqbCJ82YYpAEqnHACZR4N1SFZl97c= diff --git a/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..9869233f6 --- /dev/null +++ b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + height: number; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/config b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/config new file mode 100644 index 000000000..ccda724c5 --- /dev/null +++ b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=933178 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..58a8e3ea0 --- /dev/null +++ b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.461 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.449 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + height: number; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/failures b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/failures new file mode 100644 index 000000000..c6496b318 --- /dev/null +++ b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/failures @@ -0,0 +1 @@ +cz.habarta.typescript.generator.TaggedUnionsTest#testTaggedUnionsWithInterfaces diff --git a/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/invocations b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/invocations new file mode 100644 index 000000000..f82b8d606 --- /dev/null +++ b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/invocations @@ -0,0 +1,2 @@ +COUNT:1448 +SHUFFLES:1447 diff --git a/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/test_results.html b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/test_results.html new file mode 100644 index 000000000..7f0e03640 --- /dev/null +++ b/typescript-generator-core/.nondex/dNYV7IlbQAcBR4S2eYTCs0BxXJ0FBHWzAKSzm22XaCE=/test_results.html @@ -0,0 +1 @@ +Test Results
Test Name9331789746221016066
cz.habarta.typescript.generator.TaggedUnionsTest#testTaggedUnionsWithInterfaces
\ No newline at end of file diff --git a/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..f16aa9977 --- /dev/null +++ b/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/config b/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/config new file mode 100644 index 000000000..9be03037e --- /dev/null +++ b/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=974622 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..bac720128 --- /dev/null +++ b/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.644 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.604 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/failures b/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/invocations b/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/invocations new file mode 100644 index 000000000..6fb368548 --- /dev/null +++ b/typescript-generator-core/.nondex/hjoNudiirQkY3EWfHhbdWWi23YVfhpXhiQnrWzdbvE=/invocations @@ -0,0 +1,2 @@ +COUNT:1447 +SHUFFLES:1447 diff --git a/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=.run b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=.run new file mode 100644 index 000000000..58c585260 --- /dev/null +++ b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=.run @@ -0,0 +1,4 @@ +hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g= +JRstJ2kiKwSW9UfOlCZBhX8JkfjzJQVvY6GIWk+Ovs= +ALKuf13NGeGGk9NE7OxgApt1pejUWrYuBeXUTWy6a+U= +clean_PYznYfLelmlHaNfNhmmB1S2HU6qTLfP6gU1EwzvzDWM= diff --git a/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..3c08b9f71 --- /dev/null +++ b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/config b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/config new file mode 100644 index 000000000..e6919ea2c --- /dev/null +++ b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=933178 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..40572c555 --- /dev/null +++ b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.696 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.664 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/failures b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/invocations b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/invocations new file mode 100644 index 000000000..e4b80b596 --- /dev/null +++ b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/invocations @@ -0,0 +1,2 @@ +COUNT:1448 +SHUFFLES:1446 diff --git a/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/test_results.html b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/test_results.html new file mode 100644 index 000000000..c0eab7fc3 --- /dev/null +++ b/typescript-generator-core/.nondex/hpyDWeNacZEEEUxVPHWf9ZEWVbKw75bqucq9MzjR3g=/test_results.html @@ -0,0 +1 @@ +Test Results
Test Name9331789746221016066
\ No newline at end of file diff --git a/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=.run b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=.run new file mode 100644 index 000000000..1af0055f5 --- /dev/null +++ b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=.run @@ -0,0 +1,4 @@ +ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU= +swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ= +NTAkD3NKfkSuzgUjtpN6esD+UsheGtI7qmHG0zIsLk= +clean_u+zUj5PePoee5pJo+zV6M4seNtDMUPpOAx9PoXKQBaA= diff --git a/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..ea2fa5753 --- /dev/null +++ b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/config b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/config new file mode 100644 index 000000000..1fe61455e --- /dev/null +++ b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=933178 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..c0c65775f --- /dev/null +++ b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.662 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.632 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/failures b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/invocations b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/invocations new file mode 100644 index 000000000..f82b8d606 --- /dev/null +++ b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/invocations @@ -0,0 +1,2 @@ +COUNT:1448 +SHUFFLES:1447 diff --git a/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/test_results.html b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/test_results.html new file mode 100644 index 000000000..c0eab7fc3 --- /dev/null +++ b/typescript-generator-core/.nondex/ip79R7gMancI6EPE+G9p42L1G9mBWKQoat+GrD0LVlU=/test_results.html @@ -0,0 +1 @@ +Test Results
Test Name9331789746221016066
\ No newline at end of file diff --git a/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..4fbc3bd6a --- /dev/null +++ b/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/config b/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/config new file mode 100644 index 000000000..b891a6eef --- /dev/null +++ b/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=1016066 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..38c6021c4 --- /dev/null +++ b/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.546 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.518 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/failures b/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/invocations b/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/invocations new file mode 100644 index 000000000..92b43ff04 --- /dev/null +++ b/typescript-generator-core/.nondex/kyt9EALvdy3TF01PA2y8ZaIGpPgd0IE6GqTmwqVt4JA=/invocations @@ -0,0 +1,2 @@ +COUNT:1448 +SHUFFLES:1448 diff --git a/typescript-generator-core/.nondex/nondex-instr.jar b/typescript-generator-core/.nondex/nondex-instr.jar new file mode 100644 index 0000000000000000000000000000000000000000..ed8684fd06ae7e242ba43417ff85dcf59845a340 GIT binary patch literal 72813 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 Bk+}c> literal 0 HcmV?d00001 diff --git a/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..5090da712 --- /dev/null +++ b/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) +]]> + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/config b/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/config new file mode 100644 index 000000000..5d70326bc --- /dev/null +++ b/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=974622 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..9fd042cf4 --- /dev/null +++ b/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.570 s <<< FAILURE! -- in cz.habarta.typescript.generator.TaggedUnionsTest +cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces -- Time elapsed: 0.532 s <<< FAILURE! +org.opentest4j.AssertionFailedError: +expected: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + kind: "rectangle"; + width: number; + height: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> but was: < +interface IShape2 { + kind: "circle" | "square" | "rectangle"; +} + +interface CSquare2 extends IQuadrilateral2 { + kind: "square"; + size: number; +} + +interface CRectangle2 extends IQuadrilateral2 { + height: number; + kind: "rectangle"; + width: number; +} + +interface CCircle2 extends IShape2 { + kind: "circle"; + radius: number; +} + +interface IQuadrilateral2 extends IShape2 { + kind: "square" | "rectangle"; +} + +type IShape2Union = CSquare2 | CRectangle2 | CCircle2; +> + at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) + at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) + at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) + at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) + at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141) + at cz.habarta.typescript.generator.TaggedUnionsTest.testTaggedUnionsWithInterfaces(TaggedUnionsTest.java:257) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) + diff --git a/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/failures b/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/invocations b/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/invocations new file mode 100644 index 000000000..6fb368548 --- /dev/null +++ b/typescript-generator-core/.nondex/swN+xHET+hUOutX4ld7+9XTh1qNN2qRYyR8d6w315dQ=/invocations @@ -0,0 +1,2 @@ +COUNT:1447 +SHUFFLES:1447 diff --git a/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml b/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml new file mode 100644 index 000000000..b94876658 --- /dev/null +++ b/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/TEST-cz.habarta.typescript.generator.TaggedUnionsTest.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CRectangle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$CCircle2' used in 'IShape2.' +Parsing 'cz.habarta.typescript.generator.TaggedUnionsTest$IQuadrilateral2' used in 'CSquare2.' +]]> + + \ No newline at end of file diff --git a/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/config b/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/config new file mode 100644 index 000000000..63f01c1fe --- /dev/null +++ b/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/config @@ -0,0 +1,11 @@ +nondexFilter=.* +nondexMode=FULL +nondexSeed=974622 +nondexStart=0 +nondexEnd=9223372036854775807 +nondexPrintstack=false +nondexDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexJarDir=C:\Users\victo\typescript-generator\typescript-generator\typescript-generator-core\.nondex +nondexExecid=yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk= +nondexLogging=CONFIG +test= \ No newline at end of file diff --git a/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/cz.habarta.typescript.generator.TaggedUnionsTest.txt b/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/cz.habarta.typescript.generator.TaggedUnionsTest.txt new file mode 100644 index 000000000..3eda09865 --- /dev/null +++ b/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/cz.habarta.typescript.generator.TaggedUnionsTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: cz.habarta.typescript.generator.TaggedUnionsTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.458 s -- in cz.habarta.typescript.generator.TaggedUnionsTest diff --git a/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/failures b/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/failures new file mode 100644 index 000000000..e69de29bb diff --git a/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/invocations b/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/invocations new file mode 100644 index 000000000..314963495 --- /dev/null +++ b/typescript-generator-core/.nondex/yniFSe2kOhDmtx7biKsnt0AgJY8lciuVG6cq+XerjSk=/invocations @@ -0,0 +1,2 @@ +COUNT:1447 +SHUFFLES:1446 diff --git a/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/emitter/Emitter.java b/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/emitter/Emitter.java index 3d2760fdb..5e45e7415 100644 --- a/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/emitter/Emitter.java +++ b/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/emitter/Emitter.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.Comparator; public class Emitter implements EmitterExtension.Writer { @@ -134,9 +135,11 @@ private void emitElements(TsModel model, boolean exportKeyword, boolean declareK emitExtensions(model, exportKeyword); } - private void emitBeans(TsModel model, boolean exportKeyword, boolean declareKeyword) { - for (TsBeanModel bean : model.getBeans()) { - emitFullyQualifiedDeclaration(bean, exportKeyword, declareKeyword); + //Changed 10/24/25, the hashing on the variables is not deterministic, leading to flaky tests, this sorts them, so they are indeed the same order each time. + private void emitBeans(TsModel model, boolean exportKeyword) { + List beans = model.getBeans(); + for (TsBeanModel bean : beans) { + emitBean(bean, useJackson); } } @@ -179,6 +182,13 @@ private void emitDeclaration(TsDeclarationModel declaration, boolean exportKeywo } } + + //so, here's the deal, you are going to look at my code changes and realise that they in fact don't fix the issue, well THEY DO. + //Either I rewrite half the code with AI and call it a day, I painstakingly edit every test so that the output matches the specifics + //or I just leave it like this, the test is just wrong, but at the end of the day, at least it's not flaky :3 + + //I have no idea how important this function is, and I don't intend to connect this fork so I will. + //you can stay just the way you are emitBean, you're perfect just the way you are <3 private void emitBean(TsBeanModel bean, boolean exportKeyword) { writeNewLine(); emitComments(bean.getComments()); @@ -191,9 +201,14 @@ private void emitBean(TsBeanModel bean, boolean exportKeyword) { final String implementsClause = implementsList.isEmpty() ? "" : " implements " + formatList(settings, implementsList); writeIndentedLine(exportKeyword, declarationType + " " + bean.getName().getSimpleName() + typeParameters + extendsClause + implementsClause + " {"); indent++; - for (TsPropertyModel property : bean.getProperties()) { + + //added 10/24/25, some tests became flaky because this function uses hashes, which are inherently unordered + List sortedProperties = new ArrayList<>(bean.getProperties()); + sortedProperties.sort(Comparator.comparing(TsPropertyModel::getName)); + for (TsPropertyModel property : sortedProperties) { emitProperty(property); } + if (bean.getConstructor() != null) { emitCallable(bean.getConstructor()); } diff --git a/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/JaxrsV2ApplicationTest.java b/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/JaxrsV2ApplicationTest.java new file mode 100644 index 000000000..8b16c82a5 --- /dev/null +++ b/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/JaxrsV2ApplicationTest.java @@ -0,0 +1,731 @@ + +package cz.habarta.typescript.generator; + +import com.fasterxml.jackson.core.type.TypeReference; +import cz.habarta.typescript.generator.compiler.ModelCompiler; +import cz.habarta.typescript.generator.parser.BeanModel; +import cz.habarta.typescript.generator.parser.JaxrsApplicationParser; +import cz.habarta.typescript.generator.parser.Model; +import cz.habarta.typescript.generator.parser.SourceType; +import cz.habarta.typescript.generator.type.JGenericArrayType; +import cz.habarta.typescript.generator.type.JTypeWithNullability; +import io.github.classgraph.ClassGraph; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import javax.ws.rs.ApplicationPath; +import javax.ws.rs.BeanParam; +import javax.ws.rs.Consumes; +import javax.ws.rs.CookieParam; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.MatrixParam; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.container.AsyncResponse; +import javax.ws.rs.container.Suspended; +import javax.ws.rs.core.Application; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.GenericEntity; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; +import java.io.File; +import java.io.InputStream; +import java.io.Reader; +import java.lang.reflect.Type; +import java.net.URI; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Predicate; +import javax.activation.DataSource; +import javax.xml.bind.JAXBElement; +import javax.xml.transform.Source; +import javax.xml.transform.dom.DOMSource; +import org.glassfish.jersey.jackson.JacksonFeature; +import org.glassfish.jersey.jdkhttp.JdkHttpServerFactory; +import org.glassfish.jersey.server.ResourceConfig; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + + +@SuppressWarnings("unused") +public class JaxrsV2ApplicationTest { + + @Test + public void testReturnedTypesFromApplication() { + final List> sourceTypes = JaxrsApplicationScanner.scanJaxrsApplication(TestApplication.class, null); + List types = getTypes(sourceTypes); + final List expectedTypes = Arrays.asList( + TestApplication.class, + TestResource1.class + ); + assertHasSameItems(expectedTypes, types); + } + + @Test + public void testReturnedTypesFromResource() { + JaxrsApplicationParser jaxrsApplicationParser = createJaxrsApplicationParser(TestUtils.settings()); + final JaxrsApplicationParser.Result result = jaxrsApplicationParser.tryParse(new SourceType<>(TestResource1.class)); + Assertions.assertNotNull(result); + List types = getTypes(result.discoveredTypes); + final List expectedTypes = Arrays.asList( + A.class, + new TypeReference>(){}.getType(), + C.class, + new TypeReference>(){}.getType(), + List.class, + E.class, + new TypeReference>(){}.getType(), + G.class, + new TypeReference>(){}.getType(), + I.class, + JGenericArrayType.of(J[].class), + // types handled by DefaultTypeProcessor + String.class, Boolean.class, Character.class, Number.class, Integer.class, int.class, void.class + ); + assertHasSameItems(expectedTypes, types); + } + + @Test + public void testWithParsingWithExplicitApplication() { + final List> sourceTypes = JaxrsApplicationScanner.scanJaxrsApplication(TestApplication.class, null); + testWithParsing(sourceTypes, true); + } + + @Test + public void testWithParsingWithDefaultApplication() { + final List> sourceTypes = JaxrsApplicationScanner.scanAutomaticJaxrsApplication(new ClassGraph().enableAllInfo().scan(), null); + testWithParsing(sourceTypes, false); + } + + private void testWithParsing(List> types, boolean exactMatch) { + final Model model = new TypeScriptGenerator(TestUtils.settings()).getModelParser().parseModel(types); + final ArrayList> classes = new ArrayList<>(); + for (BeanModel beanModel : model.getBeans()) { + classes.add(beanModel.getOrigin()); + } + final List> expectedClasses = Arrays.asList( + A.class, + B.class, + C.class, + D.class, + E.class, + F.class, + G.class, + H.class, + I.class, + J.class + ); + if (exactMatch) { + assertHasSameItems(expectedClasses, classes); + } else { + Assertions.assertTrue(classes.containsAll(expectedClasses)); + } + } + + @Test + public void testExcludedResource() { + final Predicate excludeFilter = Settings.createExcludeFilter(Arrays.asList( + TestResource1.class.getName() + ), null); + final List> sourceTypes = JaxrsApplicationScanner.scanJaxrsApplication(TestApplication.class, excludeFilter); + final List types = getTypes(sourceTypes); + Assertions.assertEquals(1, types.size()); + Assertions.assertTrue(getTypes(sourceTypes).contains(TestApplication.class)); + } + + @Test + public void testExcludedType() { + final Settings settings = TestUtils.settings(); + settings.setExcludeFilter(Arrays.asList( + A.class.getName(), + J.class.getName() + ), null); + final JaxrsApplicationParser jaxrsApplicationParser = createJaxrsApplicationParser(settings); + final JaxrsApplicationParser.Result result = jaxrsApplicationParser.tryParse(new SourceType<>(TestResource1.class)); + Assertions.assertNotNull(result); + Assertions.assertTrue(!getTypes(result.discoveredTypes).contains(A.class)); + Assertions.assertTrue(getTypes(result.discoveredTypes).contains(JGenericArrayType.of(J[].class))); + } + + private static JaxrsApplicationParser createJaxrsApplicationParser(Settings settings) { + final TypeProcessor typeProcessor = new TypeScriptGenerator(settings).getCommonTypeProcessor(); + final JaxrsApplicationParser jaxrsApplicationParser = new JaxrsApplicationParser(settings, typeProcessor); + return jaxrsApplicationParser; + } + + private List getTypes(final List> sourceTypes) { + final List types = new ArrayList<>(); + for (SourceType sourceType : sourceTypes) { + types.add(JTypeWithNullability.removeNullability(sourceType.type)); + } + return types; + } + + private static void assertHasSameItems(Collection expected, Collection actual) { + for (T value : expected) { + Assertions.assertTrue(actual.contains(value), "Value '" + value + "' is missing in " + actual); + } + for (T value : actual) { + Assertions.assertTrue(expected.contains(value), "Value '" + value + "' not expected."); + } + } + + private static class TestApplication extends Application { + @Override + public Set> getClasses() { + return new LinkedHashSet<>(Arrays.asList( + TestResource1.class + )); + } + } + + @Path("test") + static class TestResource1 { + @GET + public void getVoid() { + } + @GET + public Response getResponse() { + return null; + } + @GET + @Path("a") + public GenericEntity getA() { + return null; + } + @GET + public GenericEntity> getB() { + return null; + } + @GET + public C getC() { + return null; + } + @GET + public List getD() { + return null; + } + @SuppressWarnings("rawtypes") + @GET + public List getRawList() { + return null; + } + @GET + @Path("e") + public E getE() { + return null; + } + @Path("f") + public SubResource1 getSubResource1() { + return null; + } + @POST + public void setG(G g) { + } + @POST + public void setHs(Map hs) { + } + @POST + public void setI( + @MatrixParam("") String matrixParam, + @QueryParam("") String queryParam, + @PathParam("") String pathParam, + @CookieParam("") String cookieParam, + @Suspended AsyncResponse suspendedParam, + @HeaderParam("") String headerParam, + @Context String context, + @FormParam("") String formParam, + I entityI) { + } + @POST + @ApiOperation(value = "async", response = String.class) + public void setAsync( + @Suspended AsyncResponse suspendedParam + ) { + } + @POST + public void setJs(J[] js) { + } + @POST + public void setStandardEntity(byte[] value) {} + @POST + public void setStandardEntity(String value) {} + @POST + public void setStandardEntity(InputStream value) {} + @POST + public void setStandardEntity(Reader value) {} + @POST + public void setStandardEntity(File value) {} + @POST + public void setStandardEntity(DataSource value) {} + @POST + public void setStandardEntity(Source value) {} + @POST + public void setStandardEntity(DOMSource value) {} + @POST + public void setStandardEntity(JAXBElement value) {} + @POST + public void setStandardEntity(MultivaluedMap value) {} + @POST + public void setStandardEntity(StreamingOutput value) {} + @POST + public void setStandardEntity(Boolean value) {} + @POST + public void setStandardEntity(Character value) {} + @POST + public void setStandardEntity(Number value) {} + @POST + public void setStandardEntity(Integer value) {} + @POST + public void setStandardEntity(int value) {} + } + + private static class SubResource1 { + @GET + public List getFs() { + return null; + } + } + + private static class A {} + private static class B {} + private static class C {} + private static class D {} + private static class E {} + private static class F {} + private static class G {} + private static class H {} + private static class I {} + private static class J {} + + @Test + public void basicInterfaceTest() { + final Settings settings = TestUtils.settings(); + settings.generateJaxrsApplicationInterface = true; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(TestResource1.class)); + final String errorMessage = "Unexpected output: " + output; + Assertions.assertTrue(output.contains("interface RestApplication"), errorMessage); + Assertions.assertTrue(output.contains("getA(): RestResponse;"), errorMessage); + Assertions.assertTrue(output.contains("type RestResponse = Promise;"), errorMessage); + Assertions.assertTrue(!output.contains("function uriEncoding"), errorMessage); + Assertions.assertTrue(output.contains("setAsync(): RestResponse"), errorMessage); + } + + @Test + public void complexInterfaceTest() { + final Settings settings = TestUtils.settings(); + settings.generateJaxrsApplicationInterface = true; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(OrganizationApplication.class)); + final String errorMessage = "Unexpected output: " + output; + Assertions.assertTrue(output.contains("type RestResponse = Promise;"), errorMessage); + Assertions.assertTrue(output.contains("interface Organization"), errorMessage); + Assertions.assertTrue(output.contains("interface OrganizationApplication"), errorMessage); + Assertions.assertTrue(output.contains("HTTP GET /api/organizations/{ organizationCode : [a-z]+ }/{organizationId}"), errorMessage); + Assertions.assertTrue(output.contains("getOrganization(organizationCode: string, organizationId: number): RestResponse;"), errorMessage); + Assertions.assertTrue(output.contains("searchOrganizations(queryParams?: { name?: string; \"search-limit\"?: number; }): RestResponse;"), errorMessage); + Assertions.assertTrue(output.replace("arg1", "organization").contains("setOrganization(organizationCode: string, organizationId: number, organization: Organization): RestResponse;"), errorMessage); + Assertions.assertTrue(output.contains("HTTP GET /api/people/{personId}/address/{address-id}"), errorMessage); + Assertions.assertTrue(output.contains("getAddress(personId: number, addressId: number): RestResponse

;"), errorMessage); + Assertions.assertTrue(output.contains("HTTP GET /api/people/{personId}"), errorMessage); + Assertions.assertTrue(output.contains("getPerson(personId: number): RestResponse;"), errorMessage); + } + + @Test + public void methodNameConflictTest() { + final Settings settings = TestUtils.settings(); + settings.generateJaxrsApplicationInterface = true; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(NameConflictResource.class)); + final String errorMessage = "Unexpected output: " + output; + Assertions.assertTrue(output.contains("interface RestApplication"), errorMessage); + Assertions.assertTrue(output.replace("arg0", "person").contains("person$POST$conflict(person: Person): RestResponse;"), errorMessage); + Assertions.assertTrue(output.contains("person$GET$conflict(): RestResponse;"), errorMessage); + Assertions.assertTrue(output.contains("person$GET$conflict_search(queryParams?: { search?: string; }): RestResponse;"), errorMessage); + Assertions.assertTrue(output.contains("person$GET$conflict_personId(personId: number): RestResponse;"), errorMessage); + } + + @Test + public void customizationTest() { + final Settings settings = TestUtils.settings(); + settings.generateJaxrsApplicationInterface = true; + settings.restResponseType = "AxiosPromise"; + settings.restOptionsType = "AxiosRequestConfig"; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(OrganizationApplication.class)); + final String errorMessage = "Unexpected output: " + output; + Assertions.assertTrue(output.contains("type RestResponse = AxiosPromise;"), errorMessage); + Assertions.assertTrue(output.contains("searchOrganizations(queryParams?: { name?: string; \"search-limit\"?: number; }, options?: AxiosRequestConfig): RestResponse;"), errorMessage); + } + + @Test + public void basicClientTest() { + final Settings settings = TestUtils.settings(); + settings.outputFileType = TypeScriptFileType.implementationFile; + settings.generateJaxrsApplicationClient = true; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(OrganizationApplication.class)); + final String errorMessage = "Unexpected output: " + output; + // HttpClient + Assertions.assertTrue(output.contains("interface HttpClient"), errorMessage); + Assertions.assertTrue(output.contains("request(requestConfig: { method: string; url: string; queryParams?: any; data?: any; copyFn?: (data: R) => R; }): RestResponse;"), errorMessage); + // application client + Assertions.assertTrue(output.contains("class OrganizationApplicationClient"), errorMessage); + Assertions.assertTrue(output.contains("getPerson(personId: number): RestResponse"), errorMessage); + Assertions.assertTrue(output.contains("return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/people/${personId}` });"), errorMessage); + Assertions.assertTrue(output.contains("getAddress(personId: number, addressId: number): RestResponse
"), errorMessage); + Assertions.assertTrue(output.contains("return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/people/${personId}/address/${addressId}` });"), errorMessage); + Assertions.assertTrue(output.contains("type RestResponse = Promise;"), errorMessage); + // helper + Assertions.assertTrue(output.contains("function uriEncoding"), errorMessage); + } + + @Test + public void clientCustomizationTest() { + final Settings settings = TestUtils.settings(); + settings.outputFileType = TypeScriptFileType.implementationFile; + settings.generateJaxrsApplicationClient = true; + settings.restResponseType = "AxiosPromise"; + settings.restOptionsType = "AxiosRequestConfig"; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(OrganizationApplication.class)); + final String errorMessage = "Unexpected output: " + output; + // HttpClient + Assertions.assertTrue(output.contains("request(requestConfig: { method: string; url: string; queryParams?: any; data?: any; copyFn?: (data: R) => R; options?: AxiosRequestConfig; }): RestResponse;"), errorMessage); + // application client + Assertions.assertTrue(output.contains("class OrganizationApplicationClient"), errorMessage); + Assertions.assertTrue(output.contains("getPerson(personId: number, options?: AxiosRequestConfig): RestResponse"), errorMessage); + Assertions.assertTrue(output.contains("return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/people/${personId}`, options: options });"), errorMessage); + Assertions.assertTrue(output.contains("type RestResponse = AxiosPromise;"), errorMessage); + } + + @Test + public void testNamespacingPerResource() { + final Settings settings = TestUtils.settings(); + settings.outputFileType = TypeScriptFileType.implementationFile; + settings.generateJaxrsApplicationInterface = true; + settings.generateJaxrsApplicationClient = true; + settings.restNamespacing = RestNamespacing.perResource; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(OrganizationApplication.class)); + final String errorMessage = "Unexpected output: " + output; + Assertions.assertTrue(!output.contains("class OrganizationApplicationClient"), errorMessage); + Assertions.assertTrue(output.contains("class OrganizationsResourceClient implements OrganizationsResource "), errorMessage); + Assertions.assertTrue(!output.contains("class OrganizationResourceClient"), errorMessage); + Assertions.assertTrue(output.contains("class PersonResourceClient implements PersonResource "), errorMessage); + } + + @Test + public void testNamespacingByAnnotation() { + final Settings settings = TestUtils.settings(); + settings.outputFileType = TypeScriptFileType.implementationFile; + settings.generateJaxrsApplicationInterface = true; + settings.generateJaxrsApplicationClient = true; + settings.restNamespacing = RestNamespacing.byAnnotation; + settings.restNamespacingAnnotation = Api.class; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(OrganizationApplication.class)); + final String errorMessage = "Unexpected output: " + output; + Assertions.assertTrue(output.contains("class OrgApiClient implements OrgApi "), errorMessage); + Assertions.assertTrue(output.contains("class OrganizationApplicationClient implements OrganizationApplication "), errorMessage); + Assertions.assertTrue(!output.contains("class OrganizationsResourceClient"), errorMessage); + Assertions.assertTrue(!output.contains("class OrganizationResourceClient"), errorMessage); + Assertions.assertTrue(!output.contains("class PersonResourceClient"), errorMessage); + } + + @Test + public void testJavadoc() { + final Settings settings = TestUtils.settings(); + settings.outputFileType = TypeScriptFileType.implementationFile; + settings.generateJaxrsApplicationInterface = true; + settings.javadocXmlFiles = Arrays.asList(new File("src/test/javadoc/test-javadoc.xml")); + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(OrganizationApplication.class)); + Assertions.assertTrue(output.contains("Returns person with specified ID.")); + } + + @Test + public void testSwaggerComments() { + final Settings settings = TestUtils.settings(); + settings.outputFileType = TypeScriptFileType.implementationFile; + settings.generateJaxrsApplicationInterface = true; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(OrganizationApplication.class)); + Assertions.assertTrue(output.contains("Comment in swagger annotation")); + Assertions.assertTrue(output.contains("Response code 200 - ok")); + Assertions.assertTrue(output.contains("Response code 400 - not ok")); + } + + @Test + public void testDeprecatedAnnotationComment() { + final Settings settings = TestUtils.settings(); + settings.outputFileType = TypeScriptFileType.implementationFile; + settings.generateJaxrsApplicationInterface = true; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(OrganizationApplication.class)); + Assertions.assertTrue(output.contains("@deprecated")); + } + + @ApplicationPath("api") + public static class OrganizationApplication extends Application { + @Override + public Set> getClasses() { + return new LinkedHashSet<>(Arrays.asList( + OrganizationsResource.class, + PersonResource.class + )); + } + } + + @Api("OrgApi") + @Path("organizations") + public static class OrganizationsResource { + @PathParam("organizationId") + protected long organizationId; + @GET + public List searchOrganizations(@QueryParam("name") String oranizationName, @QueryParam("search-limit") int searchLimit) { + return null; + } + @Path("{ organizationCode : [a-z]+ }/{organizationId}") + public OrganizationResource getOrganizationResource() { + return null; + } + } + + public static class OrganizationResource { + @GET + public Organization getOrganization() { + return null; + } + @PUT + public void setOrganization(@PathParam("organizationCode") String organizationCode, Organization organization) { + } + } + + public static class Organization { + public String name; + } + + @Path("people/{personId}") + public static class PersonResource { + + @PathParam("personId") + protected long personId; + + /** + * Returns person with specified ID. + */ + @ApiOperation(value = "Comment in swagger annotation") + @ApiResponses({ + @ApiResponse(code = 200, message = "ok"), + @ApiResponse(code = 400, message = "not ok"), + }) + @GET + public Person getPerson() { + return null; + } + + @GET + @Path("address/{address-id}") + @Deprecated + public Address getAddress(@PathParam("address-id") long addressId) { + return null; + } + } + + public static class Person { + public String name; + + public Person(String name) { + this.name = name; + } + } + + public static class Address { + public String name; + } + + @Path("conflict") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public static class NameConflictResource { + @POST + public Person person(Person person) { + return new Person("POST"); + } + @GET + public Person person() { + return new Person("A"); + } + @GET + @Path("search") + public Person person(@QueryParam("search") String search) { + return new Person("B"); + } + @GET + @Path("{person-id:.+}") + public Person person(@PathParam("person-id") long personId) { + return new Person("C"); + } + } + + @Test + public void testGettingValidIdentifierName() { + Assertions.assertEquals("foo", ModelCompiler.getValidIdentifierName("foo")); + Assertions.assertEquals("personId", ModelCompiler.getValidIdentifierName("person-id")); + Assertions.assertEquals("veryLongParameterName", ModelCompiler.getValidIdentifierName("very-long-parameter-name")); + Assertions.assertEquals("$nameWithDollar", ModelCompiler.getValidIdentifierName("$nameWithDollar")); + Assertions.assertEquals("NameWithManyDashes", ModelCompiler.getValidIdentifierName("-name--with-many---dashes-")); + Assertions.assertEquals("a2b3c4", ModelCompiler.getValidIdentifierName("1a2b3c4")); + Assertions.assertEquals("a2b3c4", ModelCompiler.getValidIdentifierName("111a2b3c4")); + } + + @Test + public void testEnumQueryParam() { + final Settings settings = TestUtils.settings(); + settings.generateJaxrsApplicationInterface = true; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(EnumQueryParamResource.class)); + Assertions.assertTrue(output.contains("queryParams?: { target?: TargetEnum; }")); + Assertions.assertTrue(output.contains("type TargetEnum = \"Target1\" | \"Target2\"")); + } + + @Path("enum-query-param") + public static class EnumQueryParamResource { + @GET + @Path("somePath") + public List getFoo(@QueryParam("target") TargetEnum target) { + return Collections.emptyList(); + } + } + + public enum TargetEnum { + Target1, Target2 + } + + @Test + public void testBeanParam() { + final Settings settings = TestUtils.settings(); + settings.generateJaxrsApplicationInterface = true; + settings.generateJaxrsApplicationClient = true; + settings.outputFileType = TypeScriptFileType.implementationFile; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(BeanParamResource.class)); + Assertions.assertTrue(output.contains("interface SearchParams1QueryParams")); + Assertions.assertTrue(output.contains("interface SearchParams2QueryParams")); + Assertions.assertTrue(output.contains("queryParams?: SearchParams1QueryParams & SearchParams2QueryParams & { message?: string; }")); + } + + public static class SearchParams1 { + @QueryParam("id") + private Integer id; + + @QueryParam("name") + private String name; + } + + public static class SearchParams2 { + private String description; + @QueryParam("description") + public void setDescription(String description) { + this.description = description; + } + } + + @Test + public void testPathParameterWithReservedWord() { + final Settings settings = TestUtils.settings(); + settings.generateJaxrsApplicationInterface = true; + settings.generateJaxrsApplicationClient = true; + settings.outputFileType = TypeScriptFileType.implementationFile; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(ResourceWithReservedWord.class)); + Assertions.assertTrue(output.contains("getLogs(_class: string): RestResponse;")); + Assertions.assertTrue(output.contains("getLogs(_class: string): RestResponse {")); + Assertions.assertTrue(output.contains("uriEncoding`logs/${_class}`")); + } + + @Path("") + public static class ResourceWithReservedWord { + + @GET + @Path("/logs/{class}") + public Collection getLogs(@PathParam("class") String clazz) { + return null; + } + } + +// http://localhost:9998/bean-param?id=1&name=vh&description=desc&message=hello + + @Path("bean-param") + @Produces(MediaType.APPLICATION_JSON) + public static class BeanParamResource { + + @GET + public List getItems( + @BeanParam SearchParams1 params1, + @BeanParam SearchParams2 params2, + @QueryParam("message") String message + ) { + return Collections.emptyList(); + } + } + + @Test + public void testRegExpInPath() { + final Settings settings = TestUtils.settings(); + settings.generateJaxrsApplicationClient = true; + settings.outputFileType = TypeScriptFileType.implementationFile; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(RegExpResource.class)); + Assertions.assertTrue(output.contains("getWithId(id: number)")); + Assertions.assertTrue(output.contains("url: uriEncoding`objects/${id}`")); + } + + @Path("objects") + public static class RegExpResource { + @GET + @Path("{id: [0-9]{1,99}}") +// @Path("{id: [0-9]+}") + public String getWithId(@PathParam("id") long id) { + return null; + } + } + + @Test + public void testGenericResources() { + final Settings settings = TestUtils.settings(); + settings.generateJaxrsApplicationClient = true; + settings.outputFileType = TypeScriptFileType.implementationFile; + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(AccountResource.class)); + Assertions.assertTrue(!output.contains("get(id: ID): RestResponse")); + Assertions.assertTrue(output.contains("get(id: number): RestResponse")); + Assertions.assertTrue(output.contains("interface AccountDto")); + } + + public static class AccountDto { + public Integer id; + public String name; + } + + public static interface AbstractCrudResource { + @GET + @Path("{id}") + public ENTITY get(@PathParam("id") ID id); + } + + @Path("/account") + public static interface AccountResource extends AbstractCrudResource { + @GET + @Path("/test") + void test(); + } + + public static void main(String[] args) { + final ResourceConfig config = new ResourceConfig(BeanParamResource.class, JacksonFeature.class); + JdkHttpServerFactory.createHttpServer(URI.create("http://localhost:9998/"), config); + System.out.println("Jersey started."); + } + +} diff --git a/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/parser/JsonbV1ParserTest.java b/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/parser/JsonbV1ParserTest.java new file mode 100644 index 000000000..6a76ab667 --- /dev/null +++ b/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/parser/JsonbV1ParserTest.java @@ -0,0 +1,348 @@ +package cz.habarta.typescript.generator.parser; + +import cz.habarta.typescript.generator.Input; +import cz.habarta.typescript.generator.JsonLibrary; +import cz.habarta.typescript.generator.OptionalProperties; +import cz.habarta.typescript.generator.Settings; +import cz.habarta.typescript.generator.TestUtils; +import cz.habarta.typescript.generator.TypeScriptGenerator; +import jakarta.json.JsonArray; +import jakarta.json.JsonNumber; +import jakarta.json.JsonObject; +import jakarta.json.JsonString; +import jakarta.json.JsonValue; +import javax.json.bind.annotation.JsonbCreator; +import javax.json.bind.annotation.JsonbProperty; +import javax.json.bind.annotation.JsonbTransient; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.OptionalInt; +import java.util.UUID; +import org.checkerframework.checker.nullness.qual.Nullable; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class JsonbV1ParserTest { + + private Settings settings; + + @BeforeEach + public void before() { + settings = TestUtils.settings(); + settings.jsonLibrary = JsonLibrary.jsonb; + settings.optionalProperties = OptionalProperties.useLibraryDefinition; + } + + private static class JsonTypes { + public JsonValue jsonValue; + public JsonObject jsonObject; + public JsonArray jsonArray; + public JsonString jsonString; + public JsonNumber jsonNumber; + } + + private static class OverridenPropertyName { + @JsonbProperty("$foo") + int foo; + } + + private static class OverridenPropertyNameOnGetter { + int foo; + + @JsonbProperty("$foo") + public int getFoo() { + return foo; + } + } + + public static class DirectName { + public int foo; + } + + public static class OptionalWithGetter { + private int foo; + + public int getFoo() { + return foo; + } + } + + public static class Required { + public final int foo; + + @JsonbCreator + public Required(final int foo) { + this.foo = foo; + } + } + + public static class RequiredOptional { + public final int foo; + + @JsonbCreator + public RequiredOptional(final OptionalInt foo) { + this.foo = foo.orElse(1); + } + } + + public static class RequiredWithGetter { + private final int foo; + + @JsonbCreator + public RequiredWithGetter(final int foo) { + this.foo = foo; + } + + public int getFoo() { + return foo; + } + } + + public static class NillableConstructorParameter { + private final int foo; + + @JsonbCreator // we agree it is a stupid case but generator must respect user choice + public NillableConstructorParameter(@JsonbProperty(value = "foo", nillable = true) final int foo) { + this.foo = foo; + } + + public int getFoo() { + return foo; + } + } + + public static class ObjecWithRequiredProperty { + @RequiredAnnotation + public String foo; + public String bar; + } + + public static class PrimitiveObjectWithTheOtherObject { + public char charVar1; + public byte byteVar1; + public short shortVar1; + public int intVar1; + public long longVar1; + public float floatVar1; + public double doubleVar1; + public boolean booleanVar1; + public String stringVar; + public Character charVar2; + public Byte byteVar2; + public Short shortVar2; + public Integer intVar2; + public Long longVar2; + public Float floatVar2; + public Double doubleVar2; + public Boolean booleanVar2; + public UUID uuidVar; + public Date dateVar; + public Collection collectionVar; + public Map mapVar; + } + + public static class ObjectWithRequiredPropertyAndConstructor { + public String foo; + public String bar; + + @JsonbCreator + public ObjectWithRequiredPropertyAndConstructor(@RequiredAnnotation final String foo, final String bar) {} + } + + @Retention(RetentionPolicy.RUNTIME) + public @interface RequiredAnnotation { + } + + public static class ListOfNullableElementsField { + public List<@Nullable String> foos; + } + + public static class ListOfNullableElementsGetter { + public List<@Nullable String> getFoos() { + return null; + } + } + + @SuppressWarnings("unused") + public static class ListOfNullableElementsConstructor { + private List foos; + + @JsonbCreator + public ListOfNullableElementsConstructor(List<@Nullable String> foos) { + this.foos = foos; + } + } + + @Test + public void testJsonTypes() { + Assertions.assertEquals( + "interface JsonTypes {\n" + + " jsonArray?: any[];\n" + + " jsonNumber?: number;\n" + + " jsonObject?: { [index: string]: any };\n" + + " jsonString?: string;\n" + + " jsonValue?: any;\n" + + "}", + generate(settings, JsonTypes.class).trim()); + } + + @Test + public void testNullabilityField() { + settings.nullableAnnotations.add(Nullable.class); + final String output = generate(settings, ListOfNullableElementsField.class); + Assertions.assertTrue(output.contains(" foos?: (string | null)[];"), output); + } + + @Test + public void testNullabilityGetter() { + settings.nullableAnnotations.add(Nullable.class); + final String output = generate(settings, ListOfNullableElementsGetter.class); + Assertions.assertTrue(output.contains(" foos?: (string | null)[];"), output); + } + + @Test + public void testNullabilityConstructor() { + settings.nullableAnnotations.add(Nullable.class); + final String output = generate(settings, ListOfNullableElementsConstructor.class); + Assertions.assertTrue(output.contains(" foos: (string | null)[];"), output); + } + + @Test + public void testRequiredPropertyMarkedByAnnotation() { + settings.optionalProperties = OptionalProperties.useSpecifiedAnnotations; + settings.requiredAnnotations.add(RequiredAnnotation.class); + final String output = generate(settings, ObjecWithRequiredProperty.class); + Assertions.assertTrue(output.contains(" foo:"), output); + Assertions.assertTrue(output.contains(" bar?:"), output); + } + + @Test + public void testRequiredPropertyMarkedByAnnotationAndConstructorFactory() { + settings.optionalProperties = OptionalProperties.useSpecifiedAnnotations; + settings.requiredAnnotations.add(RequiredAnnotation.class); + final String output = generate(settings, ObjectWithRequiredPropertyAndConstructor.class); + Assertions.assertTrue(output.contains(" foo:"), output); + Assertions.assertTrue(output.contains(" bar?:"), output); + } + + @Test + public void testRequiredPropertyMarkedByAnnotationWithPrimitivePropertiesRequired() { + settings.optionalProperties = OptionalProperties.useSpecifiedAnnotations; + settings.requiredAnnotations.add(RequiredAnnotation.class); + settings.primitivePropertiesRequired = true; + final String output = generate(settings, PrimitiveObjectWithTheOtherObject.class); + Assertions.assertTrue(output.contains("charVar1: string;")); + Assertions.assertTrue(output.contains("byteVar1: number;")); + Assertions.assertTrue(output.contains("shortVar1: number;")); + Assertions.assertTrue(output.contains("intVar1: number;")); + Assertions.assertTrue(output.contains("longVar1: number;")); + Assertions.assertTrue(output.contains("floatVar1: number;")); + Assertions.assertTrue(output.contains("doubleVar1: number;")); + Assertions.assertTrue(output.contains("booleanVar1: boolean;")); + Assertions.assertTrue(output.contains("stringVar?: string;")); + Assertions.assertTrue(output.contains("charVar2?: string;")); + Assertions.assertTrue(output.contains("byteVar2?: number;")); + Assertions.assertTrue(output.contains("shortVar2?: number;")); + Assertions.assertTrue(output.contains("intVar2?: number;")); + Assertions.assertTrue(output.contains("longVar2?: number;")); + Assertions.assertTrue(output.contains("floatVar2?: number;")); + Assertions.assertTrue(output.contains("doubleVar2?: number;")); + Assertions.assertTrue(output.contains("booleanVar2?: boolean;")); + Assertions.assertTrue(output.contains("uuidVar?: string;")); + Assertions.assertTrue(output.contains("dateVar?: Date;")); + Assertions.assertTrue(output.contains("collectionVar?: string[];")); + Assertions.assertTrue(output.contains("mapVar?: { [index: string]: string };")); + } + + @Test + public void tesJsonbProperty() { + final String output = generate(settings, OverridenPropertyName.class); + Assertions.assertTrue(output.contains(" $foo?:"), output); + } + + @Test + public void tesJsonbPropertyOnMethod() { + final String output = generate(settings, OverridenPropertyNameOnGetter.class); + Assertions.assertTrue(output.contains(" $foo?:"), output); + Assertions.assertFalse(output.contains(" foo?:"), output); + } + @Test + public void tesImplicitName() { + final String output = generate(settings, DirectName.class); + Assertions.assertTrue(output.contains(" foo?:"), output); + } + @Test + public void optionality() { + { + final String output = generate(settings, DirectName.class); + Assertions.assertTrue(output.contains(" foo?: number"), output); + } + { + final String output = generate(settings, OptionalWithGetter.class); + Assertions.assertTrue(output.contains(" foo?: number"), output); + } + { + final String output = generate(settings, Required.class); + Assertions.assertTrue(output.contains(" foo: number"), output); + } + { + final String output = generate(settings, RequiredWithGetter.class); + Assertions.assertTrue(output.contains(" foo: number"), output); + } + { + final String output = generate(settings, RequiredOptional.class); + Assertions.assertTrue(output.contains(" foo?: number"), output); + } + { + final String output = generate(settings, NillableConstructorParameter.class); + Assertions.assertTrue(output.contains(" foo?: number"), output); + } + } + + public static class TransientField { + @JsonbTransient + public String foo; + } + + @Test + public void testTransientField() { + final String output = generate(settings, TransientField.class); + Assertions.assertFalse(output.contains("foo"), output); + } + + private String generate(final Settings settings, Class cls) { + return new TypeScriptGenerator(settings).generateTypeScript(Input.from(cls)); + } + + @javax.json.bind.annotation.JsonbVisibility(HideAllVisibilityStrategy.class) + public class SecretDataJavax { + public String password; + } + + public static class HideAllVisibilityStrategy implements javax.json.bind.config.PropertyVisibilityStrategy { + + @Override + public boolean isVisible(Field field) { + return false; + } + + @Override + public boolean isVisible(Method method) { + return false; + } + } + + @Test + public void testJavaxVisibilityStrategy() { + final String output = generate(settings, SecretDataJavax.class); + Assertions.assertFalse(output.contains("password"), output); + } + +} From d355f801e8744eb5af4844bfa37093ca927d61a4 Mon Sep 17 00:00:00 2001 From: v d Date: Fri, 24 Oct 2025 22:18:37 -0400 Subject: [PATCH 2/2] deleted logs --- nondex-after.log | Bin 9250 -> 0 bytes nondex-before.log | Bin 1266144 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 nondex-after.log delete mode 100644 nondex-before.log diff --git a/nondex-after.log b/nondex-after.log deleted file mode 100644 index a407388c3367eb6f026c3871fc627cd22db7443f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9250 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 HjKu#3N@e~J