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 TestOverload extends BaseOfTest {
@Test
public void testOverload() {
String src =
"BEGIN;" +
"OPERATOR overload(p integer, q char) RETURNS integer;" +
" RETURN 10;" +
"END OPERATOR;" +
"OPERATOR overload(p rational, q integer) RETURNS integer;" +
" RETURN 5;" +
"END OPERATOR;" +
"OPERATOR overload(p boolean, q rational) RETURNS integer;" +
" RETURN 2;" +
"END OPERATOR;" +
"END;" +
"overload(5, 'test') - overload(1.2, 3) - overload(true, 1.8)";
assertValueEquals(ValueInteger.select(generator, 3), testEvaluate(src).getValue());
}
@After
public void testNestedOverload_cleanup() {
String src =
"BEGIN;" +
" DROP OPERATOR overload(integer, char);" +
" DROP OPERATOR overload(rational, integer);" +
" DROP OPERATOR overload(boolean, rational);" +
"END;" +
"true";
assertValueEquals(ValueBoolean.select(generator, true), testEvaluate(src).getValue());
}
}