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 TestSummarizeComplex extends BaseOfTest { @BeforeClass public static void testSummarizeComplexSetup() { String src = "begin;" + " VAR BirdTrack REAL RELATION {date CHAR, location CHAR, species CHAR, cnt INTEGER} KEY {date, location, species};" + " BirdTrack := RELATION {date CHAR, location CHAR, species CHAR, cnt INTEGER} {" + " TUPLE {date \"20071119\", location \"SP26DW\", species \"Blue Tit\", cnt 5}," + " TUPLE {date \"20071119\", location \"SP26DW\", species \"Jackdaw\", cnt 6}," + " TUPLE {date \"20071120\", location \"SP26DX\", species \"Sparrow\", cnt 3}," + " TUPLE {date \"20071121\", location \"SP26DY\", species \"Finch\", cnt 2}," + " TUPLE {date \"20071122\", location \"SP26DZ\", species \"Hawk\", cnt 1}," + " TUPLE {date \"20071119\", location \"SP26DW\", species \"Carrion Crow\", cnt 5}};" + " VAR PossibleSpecies REAL RELATION {species CHAR} KEY {species};" + " PossibleSpecies := BirdTrack {species};" + " VAR PartialResult VIRTUAL summarize BirdTrack per(PossibleSpecies) : {VisitsSeenOn := count()};" + "end;" + "true"; String expected = "true"; testEquals(expected, src); } @Test public void testSummarizeComplex01() { String src = "extend (PartialResult) : {NoOfVisits := count(BirdTrack{date})}"; String expected = "RELATION {species CHARACTER, VisitsSeenOn INTEGER, NoOfVisits INTEGER} {" + "\n\tTUPLE {species \"Blue Tit\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Carrion Crow\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Finch\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Hawk\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Jackdaw\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Sparrow\", VisitsSeenOn 1, NoOfVisits 4}" + "\n}"; testEquals(expected, src); } @Test public void testSummarizeComplex02() { String src = "extend (summarize BirdTrack per(PossibleSpecies) : {VisitsSeenOn := count()}) : {NoOfVisits := count(BirdTrack{date})}"; String expected = "RELATION {species CHARACTER, VisitsSeenOn INTEGER, NoOfVisits INTEGER} {" + "\n\tTUPLE {species \"Blue Tit\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Carrion Crow\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Finch\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Hawk\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Jackdaw\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Sparrow\", VisitsSeenOn 1, NoOfVisits 4}" + "\n}"; testEquals(expected, src); } @Test public void testSummarizeComplex03() { String src = "extend (summarize BirdTrack per(PossibleSpecies) : {VisitsSeenOn := count()}) : {NoOfVisits := 4}"; String expected = "RELATION {species CHARACTER, VisitsSeenOn INTEGER, NoOfVisits INTEGER} {" + "\n\tTUPLE {species \"Blue Tit\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Carrion Crow\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Finch\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Hawk\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Jackdaw\", VisitsSeenOn 1, NoOfVisits 4}," + "\n\tTUPLE {species \"Sparrow\", VisitsSeenOn 1, NoOfVisits 4}" + "\n}"; testEquals(expected, src); } @Test public void testSummarizeComplex04() { String src = "extend (summarize BirdTrack : {VisitsSeenOn := count()}) : {NoOfVisits := 1}"; String expected = "RELATION {VisitsSeenOn INTEGER, NoOfVisits INTEGER} {" + "\n\tTUPLE {VisitsSeenOn 6, NoOfVisits 1}" + "\n}"; testEquals(expected, src); } @AfterClass public static void testSummarizeComplexTeardown() { String src = "begin;" + " DROP VAR PartialResult;" + " DROP VAR BirdTrack;" + " DROP VAR PossibleSpecies;" + "end;" + "true"; String expected = "true"; testEquals(expected, src); } }