# This file is part of SECONDO. # # Copyright (C) 2004, University in Hagen, Department of Computer Science, # Database Systems for New Applications. # # SECONDO is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # SECONDO is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SECONDO; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # An example test spec for the Secondo TestRunner # run it with : # # TestRunner -i example.test # # By default a temporary database directory will be created. If you # want to use existing databases run # # TestRunner --no-tmp -i # # If one of your tests (say number N ) reports an error you can run # it directly by # # TestRunner -i -num N # # this is useful for debugging # A test specification consists of initial commands, a section of commands # setting up the test, a sequence of test cases, and a section of commands # cleaning up. The TestRunner uses directives to specify these sections. # directives are specified in comment lines, all comment lines beginning with a # directive are interpreted as commands to the TestRunner, non-comment lines are # passed to Secondo. The possible directives are SETUP, TESTCASE, YIELDS and # TEARDOWN (here i have written the directives in upper case to avoid confusion, # the real directives must be written in lower case). The meanings of those # directives are explained the following commented examples. # the SETUP directive may specify the name of the test and a # some algebra modules which are needed for it. # the SETUP directive must appear exactly once in a test spec #setup mainmemorytest StandardAlgebra RelationAlgebra MainMemoryAlgebra open database berlintest #testcase MemoryRelObject #yields success let t1 = ten feed mconsume; #testcase MemoryRelObject #yields success query t1; #testcase MemoryRelObject #yields success delete t1; #testcase meminit #yields error query meminit ("ssn"); #testcase meminit #yields (int 6000) query meminit (6000); #testcase memload1 #yields (bool TRUE) query memload ("ten"); #testcase mcreateAVLtree #yields (string "ten_No") query "ten" mcreateAVLtree ["No"]; #testcase matchbelow #yields ((rel(tuple((No int))))((10))) query "ten_No" "ten" matchbelow[11] consume #testcase matchbelow #yields ((rel(tuple((No int))))((1))) query "ten_No" "ten" matchbelow[1] consume #testcase matchbelow #yields ((rel(tuple((No int))))((5))) query "ten_No" "ten" matchbelow[5] consume #testcase matchbelow #yields ((rel(tuple((No int))))()) query "ten_No" "ten" matchbelow[0] consume #testcase memload2 #yields error query memload (3); #testcase memload3 #yields error query memload ("tendd"); #testcase memload4 #yields (bool TRUE) query memloadflob ("tiergarten"); #testcase memgetcatalog #yields (int 3) query memgetcatalog() count; #testcase memload4 #yields (bool TRUE) query memload ("strassen"); close database; open database nrw; #testcase strassenAccessible #yields error query "strassen" mfeed consume; #testcase memgetcatalog #yields (int 4) query memgetcatalog() count; close database; open database berlintest; #testcase memdelete #yields (bool TRUE) query memdelete("strassen"); #testcase memloadflob4 #yields (bool TRUE) query memloadflob ("strassen"); close database; open database nrw; #testcase strassenAccessible #yields @../Algebras/MainMemory/mm.result5 query "strassen" mfeed letmconsume ["strassenTest"]; #testcase memload5 #yields (bool TRUE) query memload ("Roads"); #testcase memload6 #yields error query memloadflob ("Roads"); #testcase memload7 #yields error query memloadflob (3); #testcase memload8 #yields error query memloadflob ("tendd"); #testcase meminit #yields (int 980) query meminit (200); #testcase meminit #yields (int 6096) query meminit (8000); #testcase mfeed #yields error query "keinElement" mfeed count #testcase mfeed #yields error query "ten" mfeed consume #testcase mfeed #yields (int 3212) query "strassenTest" mfeed count; #testcase mfeed #yields error query 3 mfeed count; #testcase letmconsume #yields error query "keinStream" letmconsume ["zehn"]; #testcase letmconsume #yields @../Algebras/MainMemory/mm.result6 query "strassenTest" mfeed letmconsume ["ten"]; #testcase letmconsume #yields @../Algebras/MainMemory/mm.result4 query Roads feed head[7] letmconsume ["Roads7"]; #testcase memdelete #yields error query memdelete (); #testcase memdelete #yields error query memdelete ("nicht vorhanden"); #testcase memdelete #yields error query memdelete (7); #testcase memdelete #yields (bool TRUE) query memdelete ("Roads7"); #testcase memobject #yields error query memobject ("nichtvorhanden"); #testcase memobject #yields error query memobject (1); #testcase memobject #yields @../Algebras/MainMemory/mm.result1 query memobject ("tiergarten"); #testcase memgetcatalog #yields error query memgetcatalog(tiergarten) count; #testcase memgetcatalog #yields error query memgetcatalog(3) count; #testcase memgetcatalog #yields error query memgetcatalog("test") count; #testcase memgetcatalog() #yields (int 6) query memgetcatalog() count; #testcase memlet #yields error query memlet("Roads6", Roads feed head[6], 3); #testcase memlet #yields error query memlet("Roads6", nichtvorhanden); #testcase memlet #yields (bool TRUE) query memlet("Roads6", Roads feed head[6]); #testcase memlet #yields error query memlet("Roads6", Roads feed head[8]); #testcase memgetcatalog() #yields (int 7) query memgetcatalog() count; #testcase memlet #yields (bool TRUE) query memlet("tiergartenmm", tiergarten); #testcase memletflob #yields error query memletflob("Roads20", Roads feed head[6], 3); #testcase memletflob #yields error query memlet("Roads20", nichtvorhanden); #testcase memletflob #yields (bool TRUE) query memletflob("Roads20", Roads feed head[20]); #testcase memletflob #yields error query memletflob("Roads20", Roads feed head[8]); #testcase memgetcatalog() #yields (int 9) query memgetcatalog() count; #testcase memletflob #yields (bool TRUE) query memletflob("tiergartenmmflob", tiergarten); #testcase memupdate #yields error query memupdate("Roads6", Buildings feed head[8]); #testcase memgetcatalog() #yields (int 10) query memgetcatalog() count #testcase memupdate #yields error query memupdate("tiergarten", Roads feed head[8]); #testcase memupdate #yields error query memupdate("tiergarten", testrectangle); #testcase memupdate #yields (bool TRUE) query memupdate("tiergarten", testregion); #testcase memupdate #yields error query memupdate("nichtVorhanden", Roads feed head[8]); #testcase memupdate #yields (bool TRUE) query memupdate("Roads6", Roads feed head[8]); #testcase mcreateRtree #yields error query "nichtVorhanden" mcreateRtree ["GeoData"]; #testcase mcreateRtree #yields error query "Roads" mcreateRtree ["Name"]; #testcase mcreateRtree #yields error query "Roads" mcreateRtree ["noAttribute"]; #testcase mcreateRtree #yields error query "Roads" mcreateRtree [7]; #testcase mcreateRtree #yields error query "Roads" mcreateRtree ["GeoData", "Name"]; #testcase mcreateRtree #yields (string "Roads_GeoData") query "Roads" mcreateRtree ["GeoData"]; #testcase mcreateRtree2 #yields (string "Roads_GeoData_2") query "Roads" mfeed projectextend [Name,Type, GeoData; TID: tupleid(.)] mcreateRtree2 [GeoData, "Roads_GeoData_2"]; #testcase mwindowintersects #yields (int 74583) query mwindowintersects ("Roads_GeoData_2", "Roads", testrectangle) count; #testcase mcreateRtree #yields (string "Waterways_GeoData") query Waterways feed letmconsume ["Waterways"] mcreateRtree ["GeoData"]; #testcase memdelete #yields (bool TRUE) query memdelete ("Waterways"); #testcase memsize #yields error query memsize("test"); #testcase memsize #yields error query memsize(300); #testcase memsize #yields (int 6096) query memsize(); #testcase minsert.... #yields error query minsert (Railways feed head [5], "Roads20") count #testcase minsert.... #yields error query minsert (Roads feed head [5], "Roa") count #testcase minsert.... #yields error query minsert (Roads feed head [5], 7) count #testcase minsert.... #yields error query minsert (Roads, "Roads20") count #testcase minsert.... #yields (int 25) query minsert (Roads feed head [5], "Roads20") count #testcase mwindowintersects #yields (int 14671) query mwindowintersects ("Roads_GeoData", "Roads", bbox(testregion)) count; #testcase mwindowintersects #yields (int 74583) query mwindowintersects ("Roads_GeoData", "Roads", bbox(testrectangle)) count; #testcase mwindowintersects #yields (int 74583) query mwindowintersects ("Roads_GeoData", "Roads", testrectangle) count; #testcase mwindowintersects #yields error query mwindowintersects ("nichts", "Roads", testrectangle) count; #testcase mwindowintersects #yields error query mwindowintersects ("Roads_GeoData", "nichts", testrectangle) count; #testcase mwindowintersects #yields (int 0) query mwindowintersects ("Roads_GeoData", "Roads", tiergarten) count; #testcase mcreateAVLtree #yields error query "nichtVorh" mcreateAVLtree ["Name"] #testcase mcreateAVLtree #yields error query Roads mcreateAVLtree ["Name"] #testcase mcreateAVLtree #yields error query 7 mcreateAVLtree ["Name"] #testcase mcreateAVLtree #yields error query "Roads" mcreateAVLtree ["nichtVor"] #testcase mcreateAVLtree #yields error #query "Roads" mcreateAVLtree ["GeoData"] #testcase mcreateAVLtree #yields (string "Roads_Name") query "Roads" mcreateAVLtree ["Name"] #testcase mcreateAVLtree #yields (string "Waterways_Name") query Waterways feed letmconsume ["Waterways"] mcreateAVLtree ["Name"] #testcase memdelete #yields (bool TRUE) query memdelete ("Waterways"); #testcase mexactmatch #yields error query "Roads_Name" "gibtsNicht" mexactmatch["Zweifaller Weg"] count #testcase mexactmatch #yields error query "Roads_Name" "Roads" mexactmatch[7] count #testcase mexactmatch #yields error query "gibtsNicht" "Roads" mexactmatch["Zweifaller Weg"] count #testcase mexactmatch #yields error query 7 "Roads" mexactmatch["Zweifaller Weg"] count #testcase mexactmatch #yields error query "Roads_Name" 7 mexactmatch["Zweifaller Weg"] count #testcase mexactmatch #yields (int 7) query "Roads_Name" "Roads" mexactmatch["Zweifaller Weg"] count #testcase mexactmatch #yields (int 1) query "Roads_Name" "Roads" mexactmatch["Sennetrift"] count #testcase mexactmatch #yields (int 70) query "Roads_Name" "Roads" mexactmatch["Lütticher Straße"] count #testcase mexactmatch #yields (int 0) query "Roads_Name" "Roads" mexactmatch["Spass Straße"] count #testcase memlet #yields (bool TRUE) query memlet ("Roads30", Roads feed head[30]); #testcase mexactmatch #yields (int 0) query "Roads_Name" "Roads" mexactmatch["Ötter Weg"] count #testcase mcreateAVLtree #yields (string "Roads30_Name") query "Roads30" mcreateAVLtree ["Name"] #testcase mexactmatch #yields (int 3) query "Roads30_Name" "Roads30" mexactmatch[""] count #noch andere Testfälle für mrange #testcase mrange #yields (int 6) query "Roads30_Name" "Roads30" mrange ["Kellnerstraße", "Paulstraße"] count #testcase mrange #yields (int 7) query "Roads30_Name" "Roads30" mrange ["", "Dürener Straße"] count #testcase mrange #yields (int 6) query "Roads30_Name" "Roads30" mrange ["", "Clam Straße"] count #testcase mrange #yields (int 3) query "Roads30_Name" "Roads30" mrange ["Zweifaller Weg", "Österwieher Straße"] count #testcase mrange #yields (int 1) query "Roads30_Name" "Roads30" mrange ["Österwieher Straße", "Österwieher Weg"] count #testcase mrange #yields (int 3) query "Roads30_Name" "Roads30" mrange ["", ""] count #testcase mrange #yields (int 70) query "Roads_Name" "Roads" mrange ["Lütticher Straße", "Lütticher Straße"] count #noch andere Testfälle für matchbelow #testcase matchbelow #yields @../Algebras/MainMemory/mm.result3 query "Roads30_Name" "Roads30" matchbelow ["Paulstraße"] consume #testcase matchbelow(Nordstrasse gibts nicht) #yields @../Algebras/MainMemory/mm.result3 query "Roads30_Name" "Roads30" matchbelow ["Nordstraße"] consume #testcase memclear #yields error query memclear("test"); #testcase memclear #yields error query memclear(6); #testcase memclear #yields (bool TRUE) query memclear(); #testcase memgetcatalog #yields (int 0) query memgetcatalog() count; close database; open database berlintest; #testcase memload #yields (bool TRUE) query memloadflob("ten"); #testcase mconsume ... #yields ((memoryRelObject(tuple ((No int))))((1) (2) (3) (4) (5) (6) (7) (8) (9) (10))) query "ten" mfeed mconsume #testcase mconsume ... #yields ((memoryRelObject(tuple ((No int))))((1) (2) (3) (4) (5) (6) (7) (8) (9) (10))) query ten feed mconsume #testcase memload #yields (bool TRUE) query memload("UnitTrains"); #testcase mcreateRtree #yields (string "UnitTrains_UTrip") query "UnitTrains" mcreateRtree ["UTrip"]; #testcase mcreateRtree #yields (string undefined) query "UnitTrains" mcreateRtree ["UTrip"]; close database;