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 TestComplexExpression1 extends BaseOfTest { @Test public void testComplexExpression1() { String src = "begin;" + " operator go() returns RELATION {x INTEGER, y CHARACTER, z RATIONAL, a INTEGER, b RATIONAL, c TUPLE {x INTEGER, y RATIONAL}};" + " begin;" + " var myvar private relation {x INTEGER, y CHARACTER, z RATIONAL} key{x};" + " myvar := RELATION {x INTEGER, y CHARACTER, z RATIONAL} {" + " TUPLE {x 1, y \"zot\", z 3.4}," + " TUPLE {x 2, y \"zap\", z 3.5}," + " TUPLE {x 3, y \"zot\", z 3.4}" + " };" + " operator blah(q integer, r rational, p tuple {x integer, y rational}) " + " returns relation {x integer, y character, z rational, a integer, b rational, " + " c tuple {x integer, y rational}};" + " return extend myvar : {a := q, b := r, c := p};" + " end operator;" + " return blah(5, 3.2, tuple {x 1, y 2.3});" + " end;" + " end operator;" + "end;" + "go()"; String expected = "RELATION {x INTEGER, y CHARACTER, z RATIONAL, a INTEGER, b RATIONAL, c TUPLE {x INTEGER, y RATIONAL}} {" + "\n\tTUPLE {x 1, y \"zot\", z 3.4, a 5, b 3.2, c TUPLE {x 1, y 2.3}}," + "\n\tTUPLE {x 2, y \"zap\", z 3.5, a 5, b 3.2, c TUPLE {x 1, y 2.3}}," + "\n\tTUPLE {x 3, y \"zot\", z 3.4, a 5, b 3.2, c TUPLE {x 1, y 2.3}}" + "\n}"; testEquals(expected, src); } @After public void testComplexExpression1_cleanup() { String src = "BEGIN;" + " DROP OPERATOR go();" + "END;" + "true"; assertValueEquals(ValueBoolean.select(generator, true), testEvaluate(src).getValue()); } }