package org.reldb.rel.tests.main; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.reldb.rel.tests.BaseOfTest; public class TestRelvar36 extends BaseOfTest { @BeforeClass public static void testBefore() { String src = "BEGIN;\n" + " VAR S BASE RELATION { SNO CHAR, SNAME CHAR, STATUS INTEGER, CITY CHAR } KEY {SNO};" + " INSERT S RELATION {TUPLE {SNO 'S2', SNAME 'Dave', STATUS 2, CITY 'Derby'}, TUPLE {SNO 'S3', SNAME 'Bob', STATUS 3, CITY 'London'}};" + " VAR SP BASE RELATION { SNO CHAR, PNO CHAR, QTY INTEGER } KEY {SNO, PNO};" + " INSERT SP RELATION {TUPLE {SNO 'S2', PNO 'P1', QTY 100}, TUPLE {SNO 'S3', PNO 'P2', QTY 200}};" + " VAR SPQ BASE INIT(EXTEND S: {PQ := RELATION {TUPLE {SNO SNO}} COMPOSE SP}) KEY{SNO};" + "END;\n" + "true"; testEquals("true", src); } @Test public void test03() { String src = "BEGIN;\n" + " UPDATE SPQ WHERE SNO = 'S2': {INSERT PQ RELATION {TUPLE {PNO \"P5\", QTY 500}}};" + " UPDATE SPQ WHERE SNO = 'S2': {UPDATE PQ WHERE PNO='P5': {QTY := 250}};" + " UPDATE SPQ WHERE SNO = 'S2': {DELETE PQ WHERE PNO='P5'};" + "END;\n" + "SPQ"; String expected = "RELATION {SNO CHARACTER, SNAME CHARACTER, STATUS INTEGER, CITY CHARACTER, PQ RELATION {PNO CHARACTER, QTY INTEGER}} {\n" + "\tTUPLE {SNO \"S2\", SNAME \"Dave\", STATUS 2, CITY \"Derby\", PQ RELATION {PNO CHARACTER, QTY INTEGER} {\n" + "\tTUPLE {PNO \"P1\", QTY 100}\n" + "}},\n" + "\tTUPLE {SNO \"S3\", SNAME \"Bob\", STATUS 3, CITY \"London\", PQ RELATION {PNO CHARACTER, QTY INTEGER} {\n" + "\tTUPLE {PNO \"P2\", QTY 200}\n" + "}}\n" + "}"; testEquals(expected, src); } @Test public void testRelvar04() { String src = "SPQ = SPQ"; String expected = "true"; testEquals(expected, src); } @AfterClass public static void testRelvar37() { String src = "BEGIN;\n" + "DROP VAR S;" + "DROP VAR SP;" + "DROP VAR SPQ;" + "END;\n" + "true"; String expected = "true"; testEquals(expected, src); } }