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 TestLambda2 extends BaseOfTest { @BeforeClass public static void testLambda2_before() { String src = "BEGIN;" + "VAR myvar REAL RELATION {y OPERATOR (INTEGER, INTEGER) RETURNS INTEGER} KEY {y};" + "INSERT myvar RELATION {" + " TUPLE {y OPERATOR (a INTEGER, b INTEGER) RETURNS INTEGER; RETURN a + b; END OPERATOR}," + " TUPLE {y OPERATOR (a INTEGER, b INTEGER) RETURNS INTEGER; RETURN a - b; END OPERATOR}," + " TUPLE {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 testLambda2() { String src = "EXTEND myvar : {p := (y) (2, 3)}"; testEquals( "RELATION {y OPERATOR (INTEGER, INTEGER) RETURNS INTEGER, p INTEGER} {\n" + "\tTUPLE {y \"OPERATOR ( a INTEGER , b INTEGER ) RETURNS INTEGER ; RETURN a * b ; END OPERATOR\", p 6},\n" + "\tTUPLE {y \"OPERATOR ( a INTEGER , b INTEGER ) RETURNS INTEGER ; RETURN a + b ; END OPERATOR\", p 5},\n" + "\tTUPLE {y \"OPERATOR ( a INTEGER , b INTEGER ) RETURNS INTEGER ; RETURN a - b ; END OPERATOR\", p -1}\n" + "}" , src); } @AfterClass public static void testLambda2_after() { String src = "BEGIN;" + " DROP VAR myvar;" + "END;" + "true"; assertValueEquals(ValueBoolean.select(generator, true), testEvaluate(src).getValue()); } }