Skip to content
Snippets Groups Projects
Commit 66f9729b authored by Johannes Mey's avatar Johannes Mey
Browse files

move multiple files test to junit/gradle

parent bb92be21
No related branches found
No related tags found
1 merge request!1Mquat2
...@@ -9,3 +9,5 @@ src/test/jastadd/relations/Relations.ast ...@@ -9,3 +9,5 @@ src/test/jastadd/relations/Relations.ast
src/test/jastadd/relations/Relations.jadd src/test/jastadd/relations/Relations.jadd
src/test/jastadd/lowerbounds/LowerBounds.ast src/test/jastadd/lowerbounds/LowerBounds.ast
src/test/jastadd/lowerbounds/LowerBounds.jadd src/test/jastadd/lowerbounds/LowerBounds.jadd
src/test/jastadd/multiple/Multiple.ast
src/test/jastadd/multiple/Multiple.jadd
\ No newline at end of file
...@@ -157,13 +157,41 @@ task compileLowerBoundsTest(type: JavaExec, group: 'verification') { ...@@ -157,13 +157,41 @@ task compileLowerBoundsTest(type: JavaExec, group: 'verification') {
args '--o=src/test/java-gen/', '--package=lowerbounds.ast', 'src/test/jastadd/lowerbounds/LowerBounds.ast', 'src/test/jastadd/lowerbounds/LowerBounds.jadd', 'src/test/jastadd/Utils.jadd' args '--o=src/test/java-gen/', '--package=lowerbounds.ast', 'src/test/jastadd/lowerbounds/LowerBounds.ast', 'src/test/jastadd/lowerbounds/LowerBounds.jadd', 'src/test/jastadd/Utils.jadd'
} }
task preprocessMultipleTest(type: JavaExec, group: 'verification') {
doFirst {
delete 'src/test/jastadd/multiple/Multiple.ast', 'src/test/jastadd/multiple/Multiple.jadd'
}
classpath = sourceSets.main.runtimeClasspath
main = 'org.jastadd.relast.compiler.Compiler'
args 'src/test/jastadd/multiple/Part1.relast', 'src/test/jastadd/multiple/Part2.relast', 'src/test/jastadd/multiple/Part3.relast', '--file', '--grammarName=src/test/jastadd/multiple/Multiple'
}
task compileMultipleTest(type: JavaExec, group: 'verification') {
doFirst {
delete 'src/test/java-gen/multiple'
}
classpath = sourceSets.main.runtimeClasspath
main = 'org.jastadd.JastAdd'
args '--o=src/test/java-gen/', '--package=multiple.ast', 'src/test/jastadd/multiple/Multiple.ast', 'src/test/jastadd/multiple/Multiple.jadd', 'src/test/jastadd/Utils.jadd'
}
test { test {
outputs.upToDateWhen { false } outputs.upToDateWhen { false }
useJUnitPlatform() useJUnitPlatform()
} }
test.dependsOn compileRelationTest test.dependsOn compileRelationTest
test.dependsOn compileLowerBoundsTest
doublePreprocessRelationTest.dependsOn preprocessRelationTest
compileRelationTest.dependsOn doublePreprocessRelationTest compileRelationTest.dependsOn doublePreprocessRelationTest
doublePreprocessRelationTest.dependsOn preprocessRelationTest
test.dependsOn compileLowerBoundsTest
compileLowerBoundsTest.dependsOn preprocessLowerBoundsTest compileLowerBoundsTest.dependsOn preprocessLowerBoundsTest
test.dependsOn compileMultipleTest
compileMultipleTest.dependsOn preprocessMultipleTest
\ No newline at end of file
package org.jastadd.relast.tests;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import relations.ast.A;
import relations.ast.B;
import relations.ast.Root;
import java.util.Arrays;
import static org.junit.jupiter.api.Assertions.*;
@SuppressWarnings("ArraysAsListWithZeroOrOneArgument")
class MultipleFiles {
private Root r;
private A a1;
private A a2;
private A a3;
private B b1;
private B b2;
private B b3;
/**
* rel A.Di1 -> B;
*/
@Test
void testDi1() {
setup();
a1.setDi1(b2);
a2.setDi1(b1);
assertSame(a1.getDi1(), b2);
assertSame(a2.getDi1(), b1);
a2.setDi1(b2);
assertSame(a1.getDi1(), b2);
assertSame(a2.getDi1(), b2);
try {
a3.setDi1(null);
fail("should throw an exception");
} catch (Exception e) {
// OK
}
}
/**
* rel A.Di2? -> B;
*/
@Test
void testDi2() {
setup();
a1.setDi2(b2);
a2.setDi2(b1);
assertSame(a1.getDi2(), b2);
assertSame(a2.getDi2(), b1);
a2.setDi2(b2);
assertSame(a1.getDi2(), b2);
assertSame(a2.getDi2(), b2);
a2.clearDi2();
assertSame(a1.getDi2(), b2);
assertNull(a2.getDi2());
assertTrue(a1.hasDi2());
assertFalse(a2.hasDi2());
assertFalse(a3.hasDi2());
}
/**
* rel A.Di3* -> B;
*/
@Test
void testDi3() {
setup();
a1.addDi3(b1);
a1.addDi3(b2);
a1.addDi3(b3);
a2.addDi3(b2);
assertEquals(a1.getDi3s(), Arrays.asList(b1, b2, b3));
assertEquals(a1.getDi3List(), Arrays.asList(b1, b2, b3));
assertEquals(a2.getDi3s(), Arrays.asList(b2));
assertEquals(a2.getDi3List(), Arrays.asList(b2));
assertEquals(a3.getDi3s(), Arrays.asList());
assertEquals(a3.getDi3List(), Arrays.asList());
a1.addDi3(b1);
a2.addDi3(b1);
a2.addDi3(b2);
assertEquals(a1.getDi3s(), Arrays.asList(b1, b2, b3, b1));
assertEquals(a1.getDi3List(), Arrays.asList(b1, b2, b3, b1));
assertEquals(a2.getDi3s(), Arrays.asList(b2, b1, b2));
assertEquals(a2.getDi3List(), Arrays.asList(b2, b1, b2));
assertEquals(a3.getDi3s(), Arrays.asList());
assertEquals(a3.getDi3List(), Arrays.asList());
a1.removeDi3(b1);
a2.removeDi3(b2);
assertEquals(a1.getDi3s(), Arrays.asList(b2, b3, b1));
assertEquals(a1.getDi3List(), Arrays.asList(b2, b3, b1));
assertEquals(a2.getDi3s(), Arrays.asList(b1, b2));
assertEquals(a2.getDi3List(), Arrays.asList(b1, b2));
assertEquals(a3.getDi3s(), Arrays.asList());
assertEquals(a3.getDi3List(), Arrays.asList());
}
/**
* rel A.Bi1 <-> B.Bi1;
*/
@Test
void testBi11() {
// Init
setup();
a1.setBi1(b1);
a2.setBi1(b2);
// Change
a2.setBi1(b1);
assertNull(a1.getBi1());
assertSame(a2.getBi1(), b1);
assertSame(b1.getBi1(), a2);
assertNull(b2.getBi1());
}
@Test
void testBi12() {
// Init
setup();
a1.setBi1(b2);
// Change
a2.setBi1(b2);
assertNull(a1.getBi1());
assertSame(a2.getBi1(), b2);
assertNull(b1.getBi1());
assertSame(b2.getBi1(), a2);
}
/**
* rel A.Bi2 <-> B.Bi2?;
*/
@Test
void testBi21() {
// Init
setup();
a1.setBi2(b1);
a2.setBi2(b2);
// Change
a2.setBi2(b1);
assertNull(a1.getBi2());
assertSame(a2.getBi2(), b1);
assertSame(b1.getBi2(), a2);
assertNull(b2.getBi2());
}
@Test
void testBi22() {
// Init
setup();
a1.setBi2(b2);
// Change
a2.setBi2(b2);
assertNull(a1.getBi2());
assertSame(a2.getBi2(), b2);
assertNull(b1.getBi2());
assertSame(b2.getBi2(), a2);
}
/**
* rel A.Bi3 <-> B.Bi3*;
*/
@Test
void testBi3() {
setup();
a2.setBi3(b2);
assertNull(a1.getBi3());
assertSame(a2.getBi3(), b2);
assertEquals(b1.getBi3s(), Arrays.asList());
assertEquals(b1.getBi3List(), Arrays.asList());
assertEquals(b2.getBi3s(), Arrays.asList(a2));
assertEquals(b2.getBi3List(), Arrays.asList(a2));
assertEquals(b3.getBi3s(), Arrays.asList());
assertEquals(b3.getBi3List(), Arrays.asList());
a2.setBi3(b3);
assertNull(a1.getBi3());
assertSame(a2.getBi3(), b3);
assertEquals(b1.getBi3s(), Arrays.asList());
assertEquals(b1.getBi3List(), Arrays.asList());
assertEquals(b2.getBi3s(), Arrays.asList());
assertEquals(b2.getBi3List(), Arrays.asList());
assertEquals(b3.getBi3s(), Arrays.asList(a2));
assertEquals(b3.getBi3List(), Arrays.asList(a2));
a1.setBi3(b3);
a3.setBi3(b3);
assertSame(a1.getBi3(), b3);
assertSame(a2.getBi3(), b3);
assertSame(a3.getBi3(), b3);
assertEquals(b1.getBi3s(), Arrays.asList());
assertEquals(b1.getBi3List(), Arrays.asList());
assertEquals(b2.getBi3s(), Arrays.asList());
assertEquals(b2.getBi3List(), Arrays.asList());
assertEquals(b3.getBi3s(), Arrays.asList(a2, a1, a3));
assertEquals(b3.getBi3List(), Arrays.asList(a2, a1, a3));
a2.setBi3(b1);
assertSame(a1.getBi3(), b3);
assertSame(a2.getBi3(), b1);
assertSame(a3.getBi3(), b3);
assertEquals(b1.getBi3s(), Arrays.asList(a2));
assertEquals(b1.getBi3List(), Arrays.asList(a2));
assertEquals(b2.getBi3s(), Arrays.asList());
assertEquals(b2.getBi3List(), Arrays.asList());
assertEquals(b3.getBi3s(), Arrays.asList(a1, a3));
assertEquals(b3.getBi3List(), Arrays.asList(a1, a3));
try {
a2.setBi3(null);
fail("should throw an exception");
} catch (Exception e) {
// OK
}
}
/**
* rel A.Bi4? <-> B.Bi4;
*/
@Test
void testBi41() {
// Init
setup();
a1.setBi4(b1);
a2.setBi4(b2);
// Change
a2.setBi4(b1);
assertNull(a1.getBi4());
assertSame(a2.getBi4(), b1);
assertSame(b1.getBi4(), a2);
assertNull(b2.getBi4());
}
@Test
void testBi42() {
// Init
setup();
a1.setBi4(b2);
// Change
a2.setBi4(b2);
assertNull(a1.getBi4());
assertSame(a2.getBi4(), b2);
assertNull(b1.getBi4());
assertSame(b2.getBi4(), a2);
}
/**
* rel A.Bi5? <-> B.Bi5?;
*/
@Test
void testBi51() {
// Init
setup();
a1.setBi5(b1);
a2.setBi5(b2);
// Change
a2.setBi5(b1);
assertNull(a1.getBi5());
assertSame(a2.getBi5(), b1);
assertSame(b1.getBi5(), a2);
assertNull(b2.getBi5());
}
@Test
void testBi52() {
// Init
setup();
a1.setBi5(b2);
// Change
a2.setBi5(b2);
assertNull(a1.getBi5());
assertSame(a2.getBi5(), b2);
assertNull(b1.getBi5());
assertSame(b2.getBi5(), a2);
}
/**
* rel A.Bi6? <-> B.Bi6*;
*/
@Test
void testBi6() {
setup();
a2.setBi6(b2);
assertNull(a1.getBi6());
assertSame(a2.getBi6(), b2);
assertEquals(b1.getBi6s(), Arrays.asList());
assertEquals(b1.getBi6List(), Arrays.asList());
assertEquals(b2.getBi6s(), Arrays.asList(a2));
assertEquals(b2.getBi6List(), Arrays.asList(a2));
assertEquals(b3.getBi6s(), Arrays.asList());
assertEquals(b3.getBi6List(), Arrays.asList());
a2.setBi6(b3);
assertNull(a1.getBi6());
assertSame(a2.getBi6(), b3);
assertEquals(b1.getBi6s(), Arrays.asList());
assertEquals(b1.getBi6List(), Arrays.asList());
assertEquals(b2.getBi6s(), Arrays.asList());
assertEquals(b2.getBi6List(), Arrays.asList());
assertEquals(b3.getBi6s(), Arrays.asList(a2));
assertEquals(b3.getBi6List(), Arrays.asList(a2));
a1.setBi6(b3);
a3.setBi6(b3);
assertSame(a1.getBi6(), b3);
assertSame(a2.getBi6(), b3);
assertSame(a3.getBi6(), b3);
assertEquals(b1.getBi6s(), Arrays.asList());
assertEquals(b1.getBi6List(), Arrays.asList());
assertEquals(b2.getBi6s(), Arrays.asList());
assertEquals(b2.getBi6List(), Arrays.asList());
assertEquals(b3.getBi6s(), Arrays.asList(a2, a1, a3));
assertEquals(b3.getBi6List(), Arrays.asList(a2, a1, a3));
a2.setBi6(b1);
assertSame(a1.getBi6(), b3);
assertSame(a2.getBi6(), b1);
assertSame(a3.getBi6(), b3);
assertEquals(b1.getBi6s(), Arrays.asList(a2));
assertEquals(b1.getBi6List(), Arrays.asList(a2));
assertEquals(b2.getBi6s(), Arrays.asList());
assertEquals(b2.getBi6List(), Arrays.asList());
assertEquals(b3.getBi6s(), Arrays.asList(a1, a3));
assertEquals(b3.getBi6List(), Arrays.asList(a1, a3));
a2.clearBi6();
assertSame(a1.getBi6(), b3);
assertNull(a2.getBi6());
assertSame(a3.getBi6(), b3);
assertEquals(b1.getBi6s(), Arrays.asList());
assertEquals(b1.getBi6List(), Arrays.asList());
assertEquals(b2.getBi6s(), Arrays.asList());
assertEquals(b2.getBi6List(), Arrays.asList());
assertEquals(b3.getBi6s(), Arrays.asList(a1, a3));
assertEquals(b3.getBi6List(), Arrays.asList(a1, a3));
assertTrue(a1.hasBi6());
assertFalse(a2.hasBi6());
assertTrue(a3.hasBi6());
}
/**
* rel A.Bi7* <-> B.Bi7;
*/
@Test
void testBi7() {
setup();
a2.addBi7(b2);
assertEquals(a1.getBi7s(), Arrays.asList());
assertEquals(a1.getBi7List(), Arrays.asList());
assertEquals(a2.getBi7s(), Arrays.asList(b2));
assertEquals(a2.getBi7List(), Arrays.asList(b2));
assertNull(b1.getBi7());
assertSame(b2.getBi7(), a2);
assertNull(b3.getBi7());
a2.addBi7(b3);
a1.addBi7(b2);
assertEquals(a1.getBi7s(), Arrays.asList(b2));
assertEquals(a1.getBi7List(), Arrays.asList(b2));
assertEquals(a2.getBi7s(), Arrays.asList(b3));
assertEquals(a2.getBi7List(), Arrays.asList(b3));
assertNull(b1.getBi7());
assertSame(b2.getBi7(), a1);
assertSame(b3.getBi7(), a2);
a1.addBi7(b1);
assertEquals(a1.getBi7s(), Arrays.asList(b2, b1));
assertEquals(a1.getBi7List(), Arrays.asList(b2, b1));
assertEquals(a2.getBi7s(), Arrays.asList(b3));
assertEquals(a2.getBi7List(), Arrays.asList(b3));
assertSame(b1.getBi7(), a1);
assertSame(b2.getBi7(), a1);
assertSame(b3.getBi7(), a2);
a1.addBi7(b1);
assertEquals(a1.getBi7s(), Arrays.asList(b2, b1));
assertEquals(a1.getBi7List(), Arrays.asList(b2, b1));
assertEquals(a2.getBi7s(), Arrays.asList(b3));
assertEquals(a2.getBi7List(), Arrays.asList(b3));
assertSame(b1.getBi7(), a1);
assertSame(b2.getBi7(), a1);
assertSame(b3.getBi7(), a2);
a1.removeBi7(b1);
assertEquals(a1.getBi7s(), Arrays.asList(b2));
assertEquals(a1.getBi7List(), Arrays.asList(b2));
assertEquals(a2.getBi7s(), Arrays.asList(b3));
assertEquals(a2.getBi7List(), Arrays.asList(b3));
assertNull(b1.getBi7());
assertSame(b2.getBi7(), a1);
assertSame(b3.getBi7(), a2);
}
/**
* rel A.Bi8* <-> B.Bi8?;
*/
@Test
void testBi8() {
setup();
a2.addBi8(b2);
assertEquals(a1.getBi8s(), Arrays.asList());
assertEquals(a1.getBi8List(), Arrays.asList());
assertEquals(a2.getBi8s(), Arrays.asList(b2));
assertEquals(a2.getBi8List(), Arrays.asList(b2));
assertNull(b1.getBi8());
assertSame(b2.getBi8(), a2);
assertNull(b3.getBi8());
a2.addBi8(b3);
a1.addBi8(b2);
assertEquals(a1.getBi8s(), Arrays.asList(b2));
assertEquals(a1.getBi8List(), Arrays.asList(b2));
assertEquals(a2.getBi8s(), Arrays.asList(b3));
assertEquals(a2.getBi8List(), Arrays.asList(b3));
assertNull(b1.getBi8());
assertSame(b2.getBi8(), a1);
assertSame(b3.getBi8(), a2);
a1.addBi8(b1);
assertEquals(a1.getBi8s(), Arrays.asList(b2, b1));
assertEquals(a1.getBi8List(), Arrays.asList(b2, b1));
assertEquals(a2.getBi8s(), Arrays.asList(b3));
assertEquals(a2.getBi8List(), Arrays.asList(b3));
assertSame(b1.getBi8(), a1);
assertSame(b2.getBi8(), a1);
assertSame(b3.getBi8(), a2);
a1.addBi8(b1);
assertEquals(a1.getBi8s(), Arrays.asList(b2, b1));
assertEquals(a1.getBi8List(), Arrays.asList(b2, b1));
assertEquals(a2.getBi8s(), Arrays.asList(b3));
assertEquals(a2.getBi8List(), Arrays.asList(b3));
assertSame(b1.getBi8(), a1);
assertSame(b2.getBi8(), a1);
assertSame(b3.getBi8(), a2);
a1.removeBi8(b1);
assertEquals(a1.getBi8s(), Arrays.asList(b2));
assertEquals(a1.getBi8List(), Arrays.asList(b2));
assertEquals(a2.getBi8s(), Arrays.asList(b3));
assertEquals(a2.getBi8List(), Arrays.asList(b3));
assertNull(b1.getBi8());
assertSame(b2.getBi8(), a1);
assertSame(b3.getBi8(), a2);
}
/**
* rel A.Bi9* <-> B.Bi9*;
*/
@Test
void testBi9() {
setup();
a1.addBi9(b1);
a1.addBi9(b2);
assertEquals(a1.getBi9s(), Arrays.asList(b1, b2));
assertEquals(a1.getBi9List(), Arrays.asList(b1, b2));
assertEquals(a2.getBi9s(), Arrays.asList());
assertEquals(a2.getBi9List(), Arrays.asList());
assertEquals(a3.getBi9s(), Arrays.asList());
assertEquals(a3.getBi9List(), Arrays.asList());
assertEquals(b1.getBi9s(), Arrays.asList(a1));
assertEquals(b1.getBi9List(), Arrays.asList(a1));
assertEquals(b2.getBi9s(), Arrays.asList(a1));
assertEquals(b2.getBi9List(), Arrays.asList(a1));
assertEquals(b3.getBi9s(), Arrays.asList());
assertEquals(b3.getBi9List(), Arrays.asList());
b3.addBi9(a1);
b3.addBi9(a3);
b3.addBi9(a1);
assertEquals(a1.getBi9s(), Arrays.asList(b1, b2, b3, b3));
assertEquals(a1.getBi9List(), Arrays.asList(b1, b2, b3, b3));
assertEquals(a2.getBi9s(), Arrays.asList());
assertEquals(a2.getBi9List(), Arrays.asList());
assertEquals(a3.getBi9s(), Arrays.asList(b3));
assertEquals(a3.getBi9List(), Arrays.asList(b3));
assertEquals(b1.getBi9s(), Arrays.asList(a1));
assertEquals(b1.getBi9List(), Arrays.asList(a1));
assertEquals(b2.getBi9s(), Arrays.asList(a1));
assertEquals(b2.getBi9List(), Arrays.asList(a1));
assertEquals(b3.getBi9s(), Arrays.asList(a1, a3, a1));
assertEquals(b3.getBi9List(), Arrays.asList(a1, a3, a1));
b3.removeBi9(a1);
assertEquals(a1.getBi9s(), Arrays.asList(b1, b2, b3));
assertEquals(a1.getBi9List(), Arrays.asList(b1, b2, b3));
assertEquals(a2.getBi9s(), Arrays.asList());
assertEquals(a2.getBi9List(), Arrays.asList());
assertEquals(a3.getBi9s(), Arrays.asList(b3));
assertEquals(a3.getBi9List(), Arrays.asList(b3));
assertEquals(b1.getBi9s(), Arrays.asList(a1));
assertEquals(b1.getBi9List(), Arrays.asList(a1));
assertEquals(b2.getBi9s(), Arrays.asList(a1));
assertEquals(b2.getBi9List(), Arrays.asList(a1));
assertEquals(b3.getBi9s(), Arrays.asList(a3, a1));
assertEquals(b3.getBi9List(), Arrays.asList(a3, a1));
}
@Test
void testImmutableList() {
setup();
a1.addDi3(b1);
a1.addDi3(b2);
try {
a1.getDi3s().add(b3);
fail("should throw an exception");
} catch (Exception e) {
// OK
}
a1.addBi7(b1);
a1.addBi7(b2);
try {
a1.getBi7s().add(b3);
fail("should throw an exception");
} catch (Exception e) {
// OK
}
a1.addBi9(b1);
a1.addBi9(b2);
try {
a1.getBi9s().add(b3);
fail("should throw an exception");
} catch (Exception e) {
// OK
}
}
@BeforeEach
void setup() {
r = new Root();
a1 = new A("a1");
a2 = new A("a2");
a3 = new A("a3");
b1 = new B("b1");
b2 = new B("b2");
b3 = new B("b3");
r.addA(a1);
r.addA(a2);
r.addA(a3);
r.addB(b1);
r.addB(b2);
r.addB(b3);
}
}
AST/*
Relations.ast
Relations.jadd
AllGen.jadd
AllGen.ast
\ No newline at end of file
public class AbstractTests {
protected void assertException() {
check(false, "should throw exception");
}
protected void assertTrue(boolean b) {
check(b, "value should be true (is false)");
}
protected void assertFalse(boolean b) {
check(!b, "value should be flase (is true)");
}
protected void assertNull(Object obj) {
check(obj == null, "Object not null: " + obj);
}
protected void assertSame(Object o1, Object o2) {
check(o1 == o2, "Objects not same: " + o1 + ", " + o2);
}
protected void assertEquals(Object o1, Object o2) {
check(o1.equals(o2), "Objects not equals: " + o1 + ", " + o2);
}
protected void check(boolean b, String message) {
if (!b) {
throw new RuntimeException(message);
}
}
}
\ No newline at end of file
B ::= <Name:String> <_impl_Bi9:ArrayList<A>> <_impl_Bi4:A> <_impl_Bi5:A> <_impl_Bi1:A> <_impl_Bi8:A> <_impl_Bi7:A> <_impl_Bi2:A> <_impl_Bi3:ArrayList<A>> <_impl_Bi6:ArrayList<A>>;
Root ::= A* B*;
A ::= <Name:String> <_impl_Bi1:B> <_impl_Bi7:ArrayList<B>> <_impl_Bi5:B> <_impl_Di1:B> <_impl_Bi3:B> <_impl_Di3:ArrayList<B>> <_impl_Bi8:ArrayList<B>> <_impl_Di2:B> <_impl_Bi2:B> <_impl_Bi9:ArrayList<B>> <_impl_Bi6:B> <_impl_Bi4:B>;
import java.util.ArrayList;
import java.util.Collections;
aspect RelAstAPI {
public B.B(String Name) {
setName(Name);
}
public A.A(String Name) {
setName(Name);
}
// rel A.Di1 -> B
public B A.getDi1() {
return get_impl_Di1();
}
public void A.setDi1(B o) {
assertNotNull(o);
set_impl_Di1(o);
}
// rel A.Di2? -> B
public B A.getDi2() {
return get_impl_Di2();
}
public void A.setDi2(B o) {
set_impl_Di2(o);
}
public boolean A.hasDi2() {
return getDi2() != null;
}
public void A.clearDi2() {
setDi2(null);
}
// rel A.Di3* -> B
public java.util.List<B> A.getDi3s() {
return getDi3List();
}
public java.util.List<B> A.getDi3List() {
ArrayList<B> l = get_impl_Di3();
return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();
}
public void A.addDi3(B o) {
assertNotNull(o);
ArrayList<B> list = get_impl_Di3();
if (list == null) {
list = new ArrayList<>();
}
list.add(o);
set_impl_Di3(list);
}
public void A.removeDi3(B o) {
assertNotNull(o);
ArrayList<B> list = get_impl_Di3();
if (list != null && list.remove(o)) {
set_impl_Di3(list);
}
}
// rel A.Bi1 <-> B.Bi1
public B A.getBi1() {
return get_impl_Bi1();
}
public void A.setBi1(B o) {
assertNotNull(o);
if (get_impl_Bi1() != null) {
get_impl_Bi1().set_impl_Bi1(null);
}
if (o != null && o.get_impl_Bi1() != null) {
o.get_impl_Bi1().set_impl_Bi1(null);
}
set_impl_Bi1(o);
o.set_impl_Bi1(this);
}
public A B.getBi1() {
return get_impl_Bi1();
}
public void B.setBi1(A o) {
assertNotNull(o);
if (get_impl_Bi1() != null) {
get_impl_Bi1().set_impl_Bi1(null);
}
if (o != null && o.get_impl_Bi1() != null) {
o.get_impl_Bi1().set_impl_Bi1(null);
}
set_impl_Bi1(o);
o.set_impl_Bi1(this);
}
// rel A.Bi2 <-> B.Bi2?
public B A.getBi2() {
return get_impl_Bi2();
}
public void A.setBi2(B o) {
assertNotNull(o);
if (get_impl_Bi2() != null) {
get_impl_Bi2().set_impl_Bi2(null);
}
if (o != null && o.get_impl_Bi2() != null) {
o.get_impl_Bi2().set_impl_Bi2(null);
}
set_impl_Bi2(o);
o.set_impl_Bi2(this);
}
public A B.getBi2() {
return get_impl_Bi2();
}
public void B.setBi2(A o) {
if (get_impl_Bi2() != null) {
get_impl_Bi2().set_impl_Bi2(null);
}
if (o != null && o.get_impl_Bi2() != null) {
o.get_impl_Bi2().set_impl_Bi2(null);
}
set_impl_Bi2(o);
if (o != null) {
o.set_impl_Bi2(this);
}
}
public boolean B.hasBi2() {
return getBi2() != null;
}
public void B.clearBi2() {
setBi2(null);
}
// rel A.Bi3 <-> B.Bi3*
public B A.getBi3() {
return get_impl_Bi3();
}
public void A.setBi3(B o) {
assertNotNull(o);
if (get_impl_Bi3() != null) {
ArrayList<A> list2 = get_impl_Bi3().get_impl_Bi3();
list2.remove(this);
get_impl_Bi3().set_impl_Bi3(list2);
}
set_impl_Bi3(o);
ArrayList<A> list = o.get_impl_Bi3();
if (list == null) {
list = new ArrayList<>();
}
list.add(this);
o.set_impl_Bi3(list);
}
public java.util.List<A> B.getBi3s() {
return getBi3List();
}
public java.util.List<A> B.getBi3List() {
ArrayList<A> l = get_impl_Bi3();
return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();
}
public void B.addBi3(A o) {
assertNotNull(o);
if (o != null && o.get_impl_Bi3() != null) {
ArrayList<A> list2 = o.get_impl_Bi3().get_impl_Bi3();
if (list2.remove(o))
o.get_impl_Bi3().set_impl_Bi3(list2);
}
ArrayList<A> list = get_impl_Bi3();
if (list == null) {
list = new ArrayList<>();
}
list.add(o);
set_impl_Bi3(list);
o.set_impl_Bi3(this);
}
public void B.removeBi3(A o) {
assertNotNull(o);
ArrayList<A> list = get_impl_Bi3();
if (list != null && list.remove(o)) {
set_impl_Bi3(list);
if (o.get_impl_Bi3() == this) {
o.set_impl_Bi3(null);
}
}
}
// rel A.Bi4? <-> B.Bi4
public B A.getBi4() {
return get_impl_Bi4();
}
public void A.setBi4(B o) {
if (get_impl_Bi4() != null) {
get_impl_Bi4().set_impl_Bi4(null);
}
if (o != null && o.get_impl_Bi4() != null) {
o.get_impl_Bi4().set_impl_Bi4(null);
}
set_impl_Bi4(o);
if (o != null) {
o.set_impl_Bi4(this);
}
}
public boolean A.hasBi4() {
return getBi4() != null;
}
public void A.clearBi4() {
setBi4(null);
}
public A B.getBi4() {
return get_impl_Bi4();
}
public void B.setBi4(A o) {
assertNotNull(o);
if (get_impl_Bi4() != null) {
get_impl_Bi4().set_impl_Bi4(null);
}
if (o != null && o.get_impl_Bi4() != null) {
o.get_impl_Bi4().set_impl_Bi4(null);
}
set_impl_Bi4(o);
o.set_impl_Bi4(this);
}
// rel A.Bi5? <-> B.Bi5?
public B A.getBi5() {
return get_impl_Bi5();
}
public void A.setBi5(B o) {
if (get_impl_Bi5() != null) {
get_impl_Bi5().set_impl_Bi5(null);
}
if (o != null && o.get_impl_Bi5() != null) {
o.get_impl_Bi5().set_impl_Bi5(null);
}
set_impl_Bi5(o);
if (o != null) {
o.set_impl_Bi5(this);
}
}
public boolean A.hasBi5() {
return getBi5() != null;
}
public void A.clearBi5() {
setBi5(null);
}
public A B.getBi5() {
return get_impl_Bi5();
}
public void B.setBi5(A o) {
if (get_impl_Bi5() != null) {
get_impl_Bi5().set_impl_Bi5(null);
}
if (o != null && o.get_impl_Bi5() != null) {
o.get_impl_Bi5().set_impl_Bi5(null);
}
set_impl_Bi5(o);
if (o != null) {
o.set_impl_Bi5(this);
}
}
public boolean B.hasBi5() {
return getBi5() != null;
}
public void B.clearBi5() {
setBi5(null);
}
// rel A.Bi6? <-> B.Bi6*
public B A.getBi6() {
return get_impl_Bi6();
}
public void A.setBi6(B o) {
if (get_impl_Bi6() != null) {
ArrayList<A> list2 = get_impl_Bi6().get_impl_Bi6();
list2.remove(this);
get_impl_Bi6().set_impl_Bi6(list2);
}
set_impl_Bi6(o);
if (o != null) {
ArrayList<A> list = o.get_impl_Bi6();
if (list == null) {
list = new ArrayList<>();
}
list.add(this);
o.set_impl_Bi6(list);
}
}
public boolean A.hasBi6() {
return getBi6() != null;
}
public void A.clearBi6() {
setBi6(null);
}
public java.util.List<A> B.getBi6s() {
return getBi6List();
}
public java.util.List<A> B.getBi6List() {
ArrayList<A> l = get_impl_Bi6();
return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();
}
public void B.addBi6(A o) {
assertNotNull(o);
if (o != null && o.get_impl_Bi6() != null) {
ArrayList<A> list2 = o.get_impl_Bi6().get_impl_Bi6();
if (list2.remove(o))
o.get_impl_Bi6().set_impl_Bi6(list2);
}
ArrayList<A> list = get_impl_Bi6();
if (list == null) {
list = new ArrayList<>();
}
list.add(o);
set_impl_Bi6(list);
o.set_impl_Bi6(this);
}
public void B.removeBi6(A o) {
assertNotNull(o);
ArrayList<A> list = get_impl_Bi6();
if (list != null && list.remove(o)) {
set_impl_Bi6(list);
if (o.get_impl_Bi6() == this) {
o.set_impl_Bi6(null);
}
}
}
// rel A.Bi7* <-> B.Bi7
public java.util.List<B> A.getBi7s() {
return getBi7List();
}
public java.util.List<B> A.getBi7List() {
ArrayList<B> l = get_impl_Bi7();
return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();
}
public void A.addBi7(B o) {
assertNotNull(o);
if (o != null && o.get_impl_Bi7() != null) {
ArrayList<B> list2 = o.get_impl_Bi7().get_impl_Bi7();
if (list2.remove(o))
o.get_impl_Bi7().set_impl_Bi7(list2);
}
ArrayList<B> list = get_impl_Bi7();
if (list == null) {
list = new ArrayList<>();
}
list.add(o);
set_impl_Bi7(list);
o.set_impl_Bi7(this);
}
public void A.removeBi7(B o) {
assertNotNull(o);
ArrayList<B> list = get_impl_Bi7();
if (list != null && list.remove(o)) {
set_impl_Bi7(list);
if (o.get_impl_Bi7() == this) {
o.set_impl_Bi7(null);
}
}
}
public A B.getBi7() {
return get_impl_Bi7();
}
public void B.setBi7(A o) {
assertNotNull(o);
if (get_impl_Bi7() != null) {
ArrayList<B> list2 = get_impl_Bi7().get_impl_Bi7();
list2.remove(this);
get_impl_Bi7().set_impl_Bi7(list2);
}
set_impl_Bi7(o);
ArrayList<B> list = o.get_impl_Bi7();
if (list == null) {
list = new ArrayList<>();
}
list.add(this);
o.set_impl_Bi7(list);
}
// rel A.Bi8* <-> B.Bi8?
public java.util.List<B> A.getBi8s() {
return getBi8List();
}
public java.util.List<B> A.getBi8List() {
ArrayList<B> l = get_impl_Bi8();
return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();
}
public void A.addBi8(B o) {
assertNotNull(o);
if (o != null && o.get_impl_Bi8() != null) {
ArrayList<B> list2 = o.get_impl_Bi8().get_impl_Bi8();
if (list2.remove(o))
o.get_impl_Bi8().set_impl_Bi8(list2);
}
ArrayList<B> list = get_impl_Bi8();
if (list == null) {
list = new ArrayList<>();
}
list.add(o);
set_impl_Bi8(list);
o.set_impl_Bi8(this);
}
public void A.removeBi8(B o) {
assertNotNull(o);
ArrayList<B> list = get_impl_Bi8();
if (list != null && list.remove(o)) {
set_impl_Bi8(list);
if (o.get_impl_Bi8() == this) {
o.set_impl_Bi8(null);
}
}
}
public A B.getBi8() {
return get_impl_Bi8();
}
public void B.setBi8(A o) {
if (get_impl_Bi8() != null) {
ArrayList<B> list2 = get_impl_Bi8().get_impl_Bi8();
list2.remove(this);
get_impl_Bi8().set_impl_Bi8(list2);
}
set_impl_Bi8(o);
if (o != null) {
ArrayList<B> list = o.get_impl_Bi8();
if (list == null) {
list = new ArrayList<>();
}
list.add(this);
o.set_impl_Bi8(list);
}
}
public boolean B.hasBi8() {
return getBi8() != null;
}
public void B.clearBi8() {
setBi8(null);
}
// rel A.Bi9* <-> B.Bi9*
public java.util.List<B> A.getBi9s() {
return getBi9List();
}
public java.util.List<B> A.getBi9List() {
ArrayList<B> l = get_impl_Bi9();
return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();
}
public void A.addBi9(B o) {
assertNotNull(o);
ArrayList<B> list = get_impl_Bi9();
if (list == null) {
list = new ArrayList<>();
}
ArrayList<A> list2 = o.get_impl_Bi9();
if (list2 == null) {
list2 = new ArrayList<>();
}
list.add(o);
list2.add(this);
set_impl_Bi9(list);
o.set_impl_Bi9(list2);
}
public void A.removeBi9(B o) {
assertNotNull(o);
ArrayList<B> list = get_impl_Bi9();
if (list != null && list.remove(o)) {
ArrayList<A> list2 = o.get_impl_Bi9();
if (list2 != null) list2.remove(this);
set_impl_Bi9(list);
o.set_impl_Bi9(list2);
}
}
public java.util.List<A> B.getBi9s() {
return getBi9List();
}
public java.util.List<A> B.getBi9List() {
ArrayList<A> l = get_impl_Bi9();
return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();
}
public void B.addBi9(A o) {
assertNotNull(o);
ArrayList<A> list = get_impl_Bi9();
if (list == null) {
list = new ArrayList<>();
}
ArrayList<B> list2 = o.get_impl_Bi9();
if (list2 == null) {
list2 = new ArrayList<>();
}
list.add(o);
list2.add(this);
set_impl_Bi9(list);
o.set_impl_Bi9(list2);
}
public void B.removeBi9(A o) {
assertNotNull(o);
ArrayList<A> list = get_impl_Bi9();
if (list != null && list.remove(o)) {
ArrayList<B> list2 = o.get_impl_Bi9();
if (list2 != null) list2.remove(this);
set_impl_Bi9(list);
o.set_impl_Bi9(list2);
}
}
public boolean ASTNode.violatesLowerBounds() {
return !getLowerBoundsViolations().isEmpty();
}
public java.util.List<Pair<ASTNode, String>> ASTNode.getLowerBoundsViolations() {
ArrayList<Pair<ASTNode, String>> list = new ArrayList<>();
computeLowerBoundsViolations(list);
return list;
}
public void ASTNode.computeLowerBoundsViolations(java.util.List<Pair<ASTNode, String>> list) {
for (int i = 0; i < getNumChildNoTransform(); i++) {
getChildNoTransform(i).computeLowerBoundsViolations(list);
}
}
public void B.computeLowerBoundsViolations(java.util.List<Pair<ASTNode, String>> list) {
if (getBi4() == null) {
list.add(new Pair<>(this, "Bi4"));
}
if (getBi1() == null) {
list.add(new Pair<>(this, "Bi1"));
}
if (getBi7() == null) {
list.add(new Pair<>(this, "Bi7"));
}
super.computeLowerBoundsViolations(list);
}
public void A.computeLowerBoundsViolations(java.util.List<Pair<ASTNode, String>> list) {
if (getBi1() == null) {
list.add(new Pair<>(this, "Bi1"));
}
if (getDi1() == null) {
list.add(new Pair<>(this, "Di1"));
}
if (getBi3() == null) {
list.add(new Pair<>(this, "Bi3"));
}
if (getBi2() == null) {
list.add(new Pair<>(this, "Bi2"));
}
super.computeLowerBoundsViolations(list);
}
public class Pair<T1, T2> {
public final T1 _1;
public final T2 _2;
public Pair(T1 _1, T2 _2) {
ASTNode.assertNotNull(_1);
ASTNode.assertNotNull(_2);
this._1 = _1;
this._2 = _2;
}
public boolean equals(Object other) {
if (other instanceof Pair) {
Pair<?,?> p = (Pair<?,?>) other;
return _1.equals(p._1) && _2.equals(p._2);
} else {
return false;
}
}
public int hashCode() {
return 31*_1.hashCode() + _2.hashCode();
}
}
public static void ASTNode.assertNotNull(Object obj) {
if (obj == null) {
throw new NullPointerException();
}
}
}
import AST.*;
import java.util.*;
@SuppressWarnings("ArraysAsListWithZeroOrOneArgument")
public class All extends AbstractTests {
private Root r;
private A a1;
private A a2;
private A a3;
private B b1;
private B b2;
private B b3;
public static void main(String args[]) {
new All().test();
}
public void test() {
testDi1();
testDi2();
testDi3();
testBi1();
testBi2();
testBi3();
testBi4();
testBi5();
testBi6();
testBi7();
testBi8();
testBi9();
testImmutableList();
}
/**
* rel A.Di1 -> B;
*/
private void testDi1() {
setup();
a1.setDi1(b2);
a2.setDi1(b1);
assertSame(a1.getDi1(), b2);
assertSame(a2.getDi1(), b1);
a2.setDi1(b2);
assertSame(a1.getDi1(), b2);
assertSame(a2.getDi1(), b2);
try {
a3.setDi1(null);
assertException();
} catch (Exception e) {
// OK
}
}
/**
* rel A.Di2? -> B;
*/
private void testDi2() {
setup();
a1.setDi2(b2);
a2.setDi2(b1);
assertSame(a1.getDi2(), b2);
assertSame(a2.getDi2(), b1);
a2.setDi2(b2);
assertSame(a1.getDi2(), b2);
assertSame(a2.getDi2(), b2);
a2.clearDi2();
assertSame(a1.getDi2(), b2);
assertNull(a2.getDi2());
assertTrue(a1.hasDi2());
assertFalse(a2.hasDi2());
assertFalse(a3.hasDi2());
}
/**
* rel A.Di3* -> B;
*/
private void testDi3() {
setup();
a1.addDi3(b1);
a1.addDi3(b2);
a1.addDi3(b3);
a2.addDi3(b2);
assertEquals(a1.getDi3s(), Arrays.asList(b1, b2, b3));
assertEquals(a1.getDi3List(), Arrays.asList(b1, b2, b3));
assertEquals(a2.getDi3s(), Arrays.asList(b2));
assertEquals(a2.getDi3List(), Arrays.asList(b2));
assertEquals(a3.getDi3s(), Arrays.asList());
assertEquals(a3.getDi3List(), Arrays.asList());
a1.addDi3(b1);
a2.addDi3(b1);
a2.addDi3(b2);
assertEquals(a1.getDi3s(), Arrays.asList(b1, b2, b3, b1));
assertEquals(a1.getDi3List(), Arrays.asList(b1, b2, b3, b1));
assertEquals(a2.getDi3s(), Arrays.asList(b2, b1, b2));
assertEquals(a2.getDi3List(), Arrays.asList(b2, b1, b2));
assertEquals(a3.getDi3s(), Arrays.asList());
assertEquals(a3.getDi3List(), Arrays.asList());
a1.removeDi3(b1);
a2.removeDi3(b2);
assertEquals(a1.getDi3s(), Arrays.asList(b2, b3, b1));
assertEquals(a1.getDi3List(), Arrays.asList(b2, b3, b1));
assertEquals(a2.getDi3s(), Arrays.asList(b1, b2));
assertEquals(a2.getDi3List(), Arrays.asList(b1, b2));
assertEquals(a3.getDi3s(), Arrays.asList());
assertEquals(a3.getDi3List(), Arrays.asList());
}
/**
* rel A.Bi1 <-> B.Bi1;
*/
private void testBi1() {
testBi11();
testBi12();
}
private void testBi11() {
// Init
setup();
a1.setBi1(b1);
a2.setBi1(b2);
// Change
a2.setBi1(b1);
assertNull(a1.getBi1());
assertSame(a2.getBi1(), b1);
assertSame(b1.getBi1(), a2);
assertNull(b2.getBi1());
}
private void testBi12() {
// Init
setup();
a1.setBi1(b2);
// Change
a2.setBi1(b2);
assertNull(a1.getBi1());
assertSame(a2.getBi1(), b2);
assertNull(b1.getBi1());
assertSame(b2.getBi1(), a2);
}
/**
* rel A.Bi2 <-> B.Bi2?;
*/
private void testBi2() {
testBi21();
testBi22();
}
private void testBi21() {
// Init
setup();
a1.setBi2(b1);
a2.setBi2(b2);
// Change
a2.setBi2(b1);
assertNull(a1.getBi2());
assertSame(a2.getBi2(), b1);
assertSame(b1.getBi2(), a2);
assertNull(b2.getBi2());
}
private void testBi22() {
// Init
setup();
a1.setBi2(b2);
// Change
a2.setBi2(b2);
assertNull(a1.getBi2());
assertSame(a2.getBi2(), b2);
assertNull(b1.getBi2());
assertSame(b2.getBi2(), a2);
}
/**
* rel A.Bi3 <-> B.Bi3*;
*/
private void testBi3() {
setup();
a2.setBi3(b2);
assertNull(a1.getBi3());
assertSame(a2.getBi3(), b2);
assertEquals(b1.getBi3s(), Arrays.asList());
assertEquals(b1.getBi3List(), Arrays.asList());
assertEquals(b2.getBi3s(), Arrays.asList(a2));
assertEquals(b2.getBi3List(), Arrays.asList(a2));
assertEquals(b3.getBi3s(), Arrays.asList());
assertEquals(b3.getBi3List(), Arrays.asList());
a2.setBi3(b3);
assertNull(a1.getBi3());
assertSame(a2.getBi3(), b3);
assertEquals(b1.getBi3s(), Arrays.asList());
assertEquals(b1.getBi3List(), Arrays.asList());
assertEquals(b2.getBi3s(), Arrays.asList());
assertEquals(b2.getBi3List(), Arrays.asList());
assertEquals(b3.getBi3s(), Arrays.asList(a2));
assertEquals(b3.getBi3List(), Arrays.asList(a2));
a1.setBi3(b3);
a3.setBi3(b3);
assertSame(a1.getBi3(), b3);
assertSame(a2.getBi3(), b3);
assertSame(a3.getBi3(), b3);
assertEquals(b1.getBi3s(), Arrays.asList());
assertEquals(b1.getBi3List(), Arrays.asList());
assertEquals(b2.getBi3s(), Arrays.asList());
assertEquals(b2.getBi3List(), Arrays.asList());
assertEquals(b3.getBi3s(), Arrays.asList(a2, a1, a3));
assertEquals(b3.getBi3List(), Arrays.asList(a2, a1, a3));
a2.setBi3(b1);
assertSame(a1.getBi3(), b3);
assertSame(a2.getBi3(), b1);
assertSame(a3.getBi3(), b3);
assertEquals(b1.getBi3s(), Arrays.asList(a2));
assertEquals(b1.getBi3List(), Arrays.asList(a2));
assertEquals(b2.getBi3s(), Arrays.asList());
assertEquals(b2.getBi3List(), Arrays.asList());
assertEquals(b3.getBi3s(), Arrays.asList(a1, a3));
assertEquals(b3.getBi3List(), Arrays.asList(a1, a3));
try {
a2.setBi3(null);
assertException();
} catch (Exception e) {
// OK
}
}
/**
* rel A.Bi4? <-> B.Bi4;
*/
private void testBi4() {
testBi41();
testBi42();
}
private void testBi41() {
// Init
setup();
a1.setBi4(b1);
a2.setBi4(b2);
// Change
a2.setBi4(b1);
assertNull(a1.getBi4());
assertSame(a2.getBi4(), b1);
assertSame(b1.getBi4(), a2);
assertNull(b2.getBi4());
}
private void testBi42() {
// Init
setup();
a1.setBi4(b2);
// Change
a2.setBi4(b2);
assertNull(a1.getBi4());
assertSame(a2.getBi4(), b2);
assertNull(b1.getBi4());
assertSame(b2.getBi4(), a2);
}
/**
* rel A.Bi5? <-> B.Bi5?;
*/
private void testBi5() {
testBi51();
testBi52();
}
private void testBi51() {
// Init
setup();
a1.setBi5(b1);
a2.setBi5(b2);
// Change
a2.setBi5(b1);
assertNull(a1.getBi5());
assertSame(a2.getBi5(), b1);
assertSame(b1.getBi5(), a2);
assertNull(b2.getBi5());
}
private void testBi52() {
// Init
setup();
a1.setBi5(b2);
// Change
a2.setBi5(b2);
assertNull(a1.getBi5());
assertSame(a2.getBi5(), b2);
assertNull(b1.getBi5());
assertSame(b2.getBi5(), a2);
}
/**
* rel A.Bi6? <-> B.Bi6*;
*/
private void testBi6() {
setup();
a2.setBi6(b2);
assertNull(a1.getBi6());
assertSame(a2.getBi6(), b2);
assertEquals(b1.getBi6s(), Arrays.asList());
assertEquals(b1.getBi6List(), Arrays.asList());
assertEquals(b2.getBi6s(), Arrays.asList(a2));
assertEquals(b2.getBi6List(), Arrays.asList(a2));
assertEquals(b3.getBi6s(), Arrays.asList());
assertEquals(b3.getBi6List(), Arrays.asList());
a2.setBi6(b3);
assertNull(a1.getBi6());
assertSame(a2.getBi6(), b3);
assertEquals(b1.getBi6s(), Arrays.asList());
assertEquals(b1.getBi6List(), Arrays.asList());
assertEquals(b2.getBi6s(), Arrays.asList());
assertEquals(b2.getBi6List(), Arrays.asList());
assertEquals(b3.getBi6s(), Arrays.asList(a2));
assertEquals(b3.getBi6List(), Arrays.asList(a2));
a1.setBi6(b3);
a3.setBi6(b3);
assertSame(a1.getBi6(), b3);
assertSame(a2.getBi6(), b3);
assertSame(a3.getBi6(), b3);
assertEquals(b1.getBi6s(), Arrays.asList());
assertEquals(b1.getBi6List(), Arrays.asList());
assertEquals(b2.getBi6s(), Arrays.asList());
assertEquals(b2.getBi6List(), Arrays.asList());
assertEquals(b3.getBi6s(), Arrays.asList(a2, a1, a3));
assertEquals(b3.getBi6List(), Arrays.asList(a2, a1, a3));
a2.setBi6(b1);
assertSame(a1.getBi6(), b3);
assertSame(a2.getBi6(), b1);
assertSame(a3.getBi6(), b3);
assertEquals(b1.getBi6s(), Arrays.asList(a2));
assertEquals(b1.getBi6List(), Arrays.asList(a2));
assertEquals(b2.getBi6s(), Arrays.asList());
assertEquals(b2.getBi6List(), Arrays.asList());
assertEquals(b3.getBi6s(), Arrays.asList(a1, a3));
assertEquals(b3.getBi6List(), Arrays.asList(a1, a3));
a2.clearBi6();
assertSame(a1.getBi6(), b3);
assertNull(a2.getBi6());
assertSame(a3.getBi6(), b3);
assertEquals(b1.getBi6s(), Arrays.asList());
assertEquals(b1.getBi6List(), Arrays.asList());
assertEquals(b2.getBi6s(), Arrays.asList());
assertEquals(b2.getBi6List(), Arrays.asList());
assertEquals(b3.getBi6s(), Arrays.asList(a1, a3));
assertEquals(b3.getBi6List(), Arrays.asList(a1, a3));
assertTrue(a1.hasBi6());
assertFalse(a2.hasBi6());
assertTrue(a3.hasBi6());
}
/**
* rel A.Bi7* <-> B.Bi7;
*/
private void testBi7() {
setup();
a2.addBi7(b2);
assertEquals(a1.getBi7s(), Arrays.asList());
assertEquals(a1.getBi7List(), Arrays.asList());
assertEquals(a2.getBi7s(), Arrays.asList(b2));
assertEquals(a2.getBi7List(), Arrays.asList(b2));
assertNull(b1.getBi7());
assertSame(b2.getBi7(), a2);
assertNull(b3.getBi7());
a2.addBi7(b3);
a1.addBi7(b2);
assertEquals(a1.getBi7s(), Arrays.asList(b2));
assertEquals(a1.getBi7List(), Arrays.asList(b2));
assertEquals(a2.getBi7s(), Arrays.asList(b3));
assertEquals(a2.getBi7List(), Arrays.asList(b3));
assertNull(b1.getBi7());
assertSame(b2.getBi7(), a1);
assertSame(b3.getBi7(), a2);
a1.addBi7(b1);
assertEquals(a1.getBi7s(), Arrays.asList(b2, b1));
assertEquals(a1.getBi7List(), Arrays.asList(b2, b1));
assertEquals(a2.getBi7s(), Arrays.asList(b3));
assertEquals(a2.getBi7List(), Arrays.asList(b3));
assertSame(b1.getBi7(), a1);
assertSame(b2.getBi7(), a1);
assertSame(b3.getBi7(), a2);
a1.addBi7(b1);
assertEquals(a1.getBi7s(), Arrays.asList(b2, b1));
assertEquals(a1.getBi7List(), Arrays.asList(b2, b1));
assertEquals(a2.getBi7s(), Arrays.asList(b3));
assertEquals(a2.getBi7List(), Arrays.asList(b3));
assertSame(b1.getBi7(), a1);
assertSame(b2.getBi7(), a1);
assertSame(b3.getBi7(), a2);
a1.removeBi7(b1);
assertEquals(a1.getBi7s(), Arrays.asList(b2));
assertEquals(a1.getBi7List(), Arrays.asList(b2));
assertEquals(a2.getBi7s(), Arrays.asList(b3));
assertEquals(a2.getBi7List(), Arrays.asList(b3));
assertNull(b1.getBi7());
assertSame(b2.getBi7(), a1);
assertSame(b3.getBi7(), a2);
}
/**
* rel A.Bi8* <-> B.Bi8?;
*/
private void testBi8() {
setup();
a2.addBi8(b2);
assertEquals(a1.getBi8s(), Arrays.asList());
assertEquals(a1.getBi8List(), Arrays.asList());
assertEquals(a2.getBi8s(), Arrays.asList(b2));
assertEquals(a2.getBi8List(), Arrays.asList(b2));
assertNull(b1.getBi8());
assertSame(b2.getBi8(), a2);
assertNull(b3.getBi8());
a2.addBi8(b3);
a1.addBi8(b2);
assertEquals(a1.getBi8s(), Arrays.asList(b2));
assertEquals(a1.getBi8List(), Arrays.asList(b2));
assertEquals(a2.getBi8s(), Arrays.asList(b3));
assertEquals(a2.getBi8List(), Arrays.asList(b3));
assertNull(b1.getBi8());
assertSame(b2.getBi8(), a1);
assertSame(b3.getBi8(), a2);
a1.addBi8(b1);
assertEquals(a1.getBi8s(), Arrays.asList(b2, b1));
assertEquals(a1.getBi8List(), Arrays.asList(b2, b1));
assertEquals(a2.getBi8s(), Arrays.asList(b3));
assertEquals(a2.getBi8List(), Arrays.asList(b3));
assertSame(b1.getBi8(), a1);
assertSame(b2.getBi8(), a1);
assertSame(b3.getBi8(), a2);
a1.addBi8(b1);
assertEquals(a1.getBi8s(), Arrays.asList(b2, b1));
assertEquals(a1.getBi8List(), Arrays.asList(b2, b1));
assertEquals(a2.getBi8s(), Arrays.asList(b3));
assertEquals(a2.getBi8List(), Arrays.asList(b3));
assertSame(b1.getBi8(), a1);
assertSame(b2.getBi8(), a1);
assertSame(b3.getBi8(), a2);
a1.removeBi8(b1);
assertEquals(a1.getBi8s(), Arrays.asList(b2));
assertEquals(a1.getBi8List(), Arrays.asList(b2));
assertEquals(a2.getBi8s(), Arrays.asList(b3));
assertEquals(a2.getBi8List(), Arrays.asList(b3));
assertNull(b1.getBi8());
assertSame(b2.getBi8(), a1);
assertSame(b3.getBi8(), a2);
}
/**
* rel A.Bi9* <-> B.Bi9*;
*/
private void testBi9() {
setup();
a1.addBi9(b1);
a1.addBi9(b2);
assertEquals(a1.getBi9s(), Arrays.asList(b1, b2));
assertEquals(a1.getBi9List(), Arrays.asList(b1, b2));
assertEquals(a2.getBi9s(), Arrays.asList());
assertEquals(a2.getBi9List(), Arrays.asList());
assertEquals(a3.getBi9s(), Arrays.asList());
assertEquals(a3.getBi9List(), Arrays.asList());
assertEquals(b1.getBi9s(), Arrays.asList(a1));
assertEquals(b1.getBi9List(), Arrays.asList(a1));
assertEquals(b2.getBi9s(), Arrays.asList(a1));
assertEquals(b2.getBi9List(), Arrays.asList(a1));
assertEquals(b3.getBi9s(), Arrays.asList());
assertEquals(b3.getBi9List(), Arrays.asList());
b3.addBi9(a1);
b3.addBi9(a3);
b3.addBi9(a1);
assertEquals(a1.getBi9s(), Arrays.asList(b1, b2, b3, b3));
assertEquals(a1.getBi9List(), Arrays.asList(b1, b2, b3, b3));
assertEquals(a2.getBi9s(), Arrays.asList());
assertEquals(a2.getBi9List(), Arrays.asList());
assertEquals(a3.getBi9s(), Arrays.asList(b3));
assertEquals(a3.getBi9List(), Arrays.asList(b3));
assertEquals(b1.getBi9s(), Arrays.asList(a1));
assertEquals(b1.getBi9List(), Arrays.asList(a1));
assertEquals(b2.getBi9s(), Arrays.asList(a1));
assertEquals(b2.getBi9List(), Arrays.asList(a1));
assertEquals(b3.getBi9s(), Arrays.asList(a1, a3, a1));
assertEquals(b3.getBi9List(), Arrays.asList(a1, a3, a1));
b3.removeBi9(a1);
assertEquals(a1.getBi9s(), Arrays.asList(b1, b2, b3));
assertEquals(a1.getBi9List(), Arrays.asList(b1, b2, b3));
assertEquals(a2.getBi9s(), Arrays.asList());
assertEquals(a2.getBi9List(), Arrays.asList());
assertEquals(a3.getBi9s(), Arrays.asList(b3));
assertEquals(a3.getBi9List(), Arrays.asList(b3));
assertEquals(b1.getBi9s(), Arrays.asList(a1));
assertEquals(b1.getBi9List(), Arrays.asList(a1));
assertEquals(b2.getBi9s(), Arrays.asList(a1));
assertEquals(b2.getBi9List(), Arrays.asList(a1));
assertEquals(b3.getBi9s(), Arrays.asList(a3, a1));
assertEquals(b3.getBi9List(), Arrays.asList(a3, a1));
}
public void testImmutableList() {
setup();
a1.addDi3(b1);
a1.addDi3(b2);
try {
a1.getDi3s().add(b3);
assertException();
} catch (Exception e) {
// OK
}
a1.addBi7(b1);
a1.addBi7(b2);
try {
a1.getBi7s().add(b3);
assertException();
} catch (Exception e) {
// OK
}
a1.addBi9(b1);
a1.addBi9(b2);
try {
a1.getBi9s().add(b3);
assertException();
} catch (Exception e) {
// OK
}
}
private void setup() {
r = new Root();
a1 = new A("a1");
a2 = new A("a2");
a3 = new A("a3");
b1 = new B("b1");
b2 = new B("b2");
b3 = new B("b3");
r.addA(a1);
r.addA(a2);
r.addA(a3);
r.addB(b1);
r.addB(b2);
r.addB(b3);
}
}
all: build-jar test
test: clean test1
@echo "#"
@echo "# MULTIPLE FILES TESTS OK"
@echo "#"
build-jar:
(cd ../../ && ./gradlew jar)
test1:
java -jar ../../build/libs/relast.jar Rules1.relast Rules2.relast Rules3.relast --file --grammarName=Relations
java -jar ../../tools/jastadd2.jar --package=AST Relations.ast Relations.jadd Utils.jadd
javac AST/*.java Relations.java
java Relations
java -jar ../../build/libs/relast.jar Relations.ast --file --grammarName=AllGen
diff Relations.ast AllGen.ast
clean:
rm -rf AST
rm -f *.class
rm -f *.ast
\ No newline at end of file
aspect Utils {
public String A.toString() {
return getName();
}
public String B.toString() {
return getName();
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment