package org.reldb.rel.tests.main;
import org.junit.After;
import org.junit.Test;
import org.reldb.rel.tests.BaseOfTest;
import org.reldb.rel.v0.values.*;
public class TestComplexExpression3 extends BaseOfTest {
@Test
public void testComplexExpression3() {
String src =
"begin;" +
" operator go() returns RELATION {x INTEGER, a INTEGER, c TUPLE {x INTEGER, y RATIONAL}};" +
" begin;" +
" var myvar private relation {x INTEGER} key{x};" +
" myvar := RELATION {x INTEGER} {" +
" TUPLE {x 1}," +
" TUPLE {x 2}," +
" TUPLE {x 3}" +
" };" +
" operator blah(q integer, p tuple {x integer, y rational}) " +
" returns relation {x integer, a integer, c tuple {x integer, y rational}};" +
" return extend myvar : {a := q, c := p};" +
" end operator;" +
" return blah(5, tuple {x 1, y 2.3});" +
" end;" +
" end operator;" +
"end;" +
"go()";
String expected =
"RELATION {x INTEGER, a INTEGER, c TUPLE {x INTEGER, y RATIONAL}} {" +
"\n\tTUPLE {x 1, a 5, c TUPLE {x 1, y 2.3}}," +
"\n\tTUPLE {x 2, a 5, c TUPLE {x 1, y 2.3}}," +
"\n\tTUPLE {x 3, a 5, c TUPLE {x 1, y 2.3}}" +
"\n}";
testEquals(expected, src);
}
@After
public void testComplexExpression3_cleanup() {
String src =
"BEGIN;" +
" DROP OPERATOR go();" +
"END;" +
"true";
assertValueEquals(ValueBoolean.select(generator, true), testEvaluate(src).getValue());
}
}