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 TestTupleStar extends BaseOfTest { @BeforeClass public static void testSetup() { String src = "begin;" + " VAR myvar REAL RELATION{x INTEGER, c CHARACTER} KEY {x};\n" + " myvar := RELATION {\n" + " TUPLE {x 1, c 'A'},\n" + " TUPLE {x 2, c 'A'},\n" + " TUPLE {x 3, c 'B'},\n" + " TUPLE {x 4, c 'B'},\n" + " TUPLE {x 5, c 'B'},\n" + " TUPLE {x 10, c 'D'},\n" + " TUPLE {x 12, c 'D'}\n" + " };\n" + "end;" + "true"; String expected = "true"; testEquals(expected, src); } @Test public void testTupleStar00() { String src = "SUMMARIZE myvar: {x := UNION(REL{TUP{*}} MINUS REL{TUP{*}})}"; String expected = "RELATION {x RELATION {x INTEGER, c CHARACTER}} {\n" + "\tTUPLE {x RELATION {x INTEGER, c CHARACTER} {\n" + "}}\n" + "}"; testEquals(expected, src); } @Test public void testTupleStar01() { String src = "UNION(myvar, REL{TUP{*}})"; String expected = "RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 1, c \"A\"},\n" + "\tTUPLE {x 2, c \"A\"},\n" + "\tTUPLE {x 3, c \"B\"},\n" + "\tTUPLE {x 4, c \"B\"},\n" + "\tTUPLE {x 5, c \"B\"},\n" + "\tTUPLE {x 10, c \"D\"},\n" + "\tTUPLE {x 12, c \"D\"}\n" + "}"; testEquals(expected, src); } @Test public void testTupleStar02() { String src = "SUMMARIZE myvar: {x := UNION(REL{TUP{*}} INTERSECT REL{TUP{*}})}"; String expected = "RELATION {x RELATION {x INTEGER, c CHARACTER}} {\n" + "\tTUPLE {x RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 1, c \"A\"},\n" + "\tTUPLE {x 2, c \"A\"},\n" + "\tTUPLE {x 3, c \"B\"},\n" + "\tTUPLE {x 4, c \"B\"},\n" + "\tTUPLE {x 5, c \"B\"},\n" + "\tTUPLE {x 10, c \"D\"},\n" + "\tTUPLE {x 12, c \"D\"}\n" + "}}\n" + "}"; testEquals(expected, src); } @Test public void testTupleStar03() { String src = "myvar WHERE (x FROM TUP{*}) = 1"; String expected = "RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 1, c \"A\"}\n" + "}"; testEquals(expected, src); } @Test public void testTupleStar04() { String src = "EXTEND myvar: {t := REL{TUP{*}}}"; String expected = "RELATION {x INTEGER, c CHARACTER, t RELATION {x INTEGER, c CHARACTER}} {\n" + "\tTUPLE {x 1, c \"A\", t RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 1, c \"A\"}\n" + "}},\n" + "\tTUPLE {x 2, c \"A\", t RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 2, c \"A\"}\n" + "}},\n" + "\tTUPLE {x 3, c \"B\", t RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 3, c \"B\"}\n" + "}},\n" + "\tTUPLE {x 4, c \"B\", t RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 4, c \"B\"}\n" + "}},\n" + "\tTUPLE {x 5, c \"B\", t RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 5, c \"B\"}\n" + "}},\n" + "\tTUPLE {x 10, c \"D\", t RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 10, c \"D\"}\n" + "}},\n" + "\tTUPLE {x 12, c \"D\", t RELATION {x INTEGER, c CHARACTER} {\n" + "\tTUPLE {x 12, c \"D\"}\n" + "}}\n" + "}"; testEquals(expected, src); } @Test public void testTupleStar05() { String src = "IMAGE_IN(myvar, TUP {c 'A'})"; String expected = "RELATION {x INTEGER} {\n" + "\tTUPLE {x 1},\n" + "\tTUPLE {x 2}\n" + "}"; testEquals(expected, src); } @Test public void testTupleStar06() { String src = "!!(myvar, TUP {c 'A'})"; String expected = "RELATION {x INTEGER} {\n" + "\tTUPLE {x 1},\n" + "\tTUPLE {x 2}\n" + "}"; testEquals(expected, src); } @Test public void testTupleStar07() { String src = "‼(myvar, TUP {c 'A'})"; String expected = "RELATION {x INTEGER} {\n" + "\tTUPLE {x 1},\n" + "\tTUPLE {x 2}\n" + "}"; testEquals(expected, src); } @AfterClass public static void testSummarizeComplexTeardown() { String src = "begin;" + " DROP VAR myvar;" + "end;" + "true"; String expected = "true"; testEquals(expected, src); } }