package org.reldb.rel.tests.main; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.reldb.rel.tests.BaseOfTest; import org.reldb.rel.v0.values.*; public class TestLambda3 extends BaseOfTest { @BeforeClass public static void testLambda3_before() { String src = "BEGIN;" + "VAR myvar REAL RELATION {x INTEGER, y OPERATOR (INTEGER, INTEGER) RETURNS INTEGER} KEY {x};" + "INSERT myvar RELATION {" + " TUPLE {x 1, y OPERATOR (a INTEGER, b INTEGER) RETURNS INTEGER; RETURN a + b; END OPERATOR}," + " TUPLE {x 2, y OPERATOR (a INTEGER, b INTEGER) RETURNS INTEGER; RETURN a - b; END OPERATOR}," + " TUPLE {x 3, y OPERATOR (a INTEGER, b INTEGER) RETURNS INTEGER; RETURN a * b; END OPERATOR}" + "};" + "END;" + "true"; assertValueEquals(ValueBoolean.select(generator, true), testEvaluate(src).getValue()); } @Test public void testLambda3() { String src = "EXTEND myvar : {p := (y) (x, 3)}"; testEquals( "RELATION {x INTEGER, y OPERATOR (INTEGER, INTEGER) RETURNS INTEGER, p INTEGER} {\n" + "\tTUPLE {x 1, y \"OPERATOR ( a INTEGER , b INTEGER ) RETURNS INTEGER ; RETURN a + b ; END OPERATOR\", p 4},\n" + "\tTUPLE {x 2, y \"OPERATOR ( a INTEGER , b INTEGER ) RETURNS INTEGER ; RETURN a - b ; END OPERATOR\", p -1},\n" + "\tTUPLE {x 3, y \"OPERATOR ( a INTEGER , b INTEGER ) RETURNS INTEGER ; RETURN a * b ; END OPERATOR\", p 9}\n" + "}" , src); } @AfterClass public static void testLambda3_after() { String src = "BEGIN;" + " DROP VAR myvar;" + "END;" + "true"; assertValueEquals(ValueBoolean.select(generator, true), testEvaluate(src).getValue()); } }