From 18b4bde53fdc4093a047ea4b585d11cbca9ea7eb Mon Sep 17 00:00:00 2001 From: Martin Kobelka Date: Tue, 21 Nov 2017 21:47:45 +0100 Subject: [PATCH] Add some test --- ifj2017/tests/02_functions/28.code | 16 ++ ifj2017/tests/02_functions/28.stdout | 1 + ifj2017/tests/04_expressions/24.code | 8 + ifj2017/tests/04_expressions/24.stdout | 1 + ifj2017/tests/09_scopes/12.code | 302 +++++++++++++++++++++++++ ifj2017/tests/09_scopes/12.stdout | 1 + ifj2017/tests/09_scopes/13.code | 24 ++ ifj2017/tests/09_scopes/13.stdout | 1 + ifj2017/tests/66_errors/19.code | 11 + ifj2017/tests/66_errors/20.code | 9 + ifj2017/tests/66_errors/21.code | 16 ++ ifj2017/tests/66_errors/tests.json | 13 ++ 12 files changed, 403 insertions(+) create mode 100644 ifj2017/tests/02_functions/28.code create mode 100644 ifj2017/tests/02_functions/28.stdout create mode 100644 ifj2017/tests/04_expressions/24.code create mode 100644 ifj2017/tests/04_expressions/24.stdout create mode 100644 ifj2017/tests/09_scopes/12.code create mode 100644 ifj2017/tests/09_scopes/12.stdout create mode 100644 ifj2017/tests/09_scopes/13.code create mode 100644 ifj2017/tests/09_scopes/13.stdout create mode 100644 ifj2017/tests/66_errors/19.code create mode 100644 ifj2017/tests/66_errors/20.code create mode 100644 ifj2017/tests/66_errors/21.code diff --git a/ifj2017/tests/02_functions/28.code b/ifj2017/tests/02_functions/28.code new file mode 100644 index 0000000..7fe02bf --- /dev/null +++ b/ifj2017/tests/02_functions/28.code @@ -0,0 +1,16 @@ +' Colision which is OK +function bar(foo1 as integer) as integer + return foo1 +end function + +declare function foo1() as integer + +function foo1() as integer + return 42 +end function + +scope + dim a as integer + a = foo1() + print a; +end scope \ No newline at end of file diff --git a/ifj2017/tests/02_functions/28.stdout b/ifj2017/tests/02_functions/28.stdout new file mode 100644 index 0000000..446ed16 --- /dev/null +++ b/ifj2017/tests/02_functions/28.stdout @@ -0,0 +1 @@ + 42 \ No newline at end of file diff --git a/ifj2017/tests/04_expressions/24.code b/ifj2017/tests/04_expressions/24.code new file mode 100644 index 0000000..d4a185d --- /dev/null +++ b/ifj2017/tests/04_expressions/24.code @@ -0,0 +1,8 @@ +' Add too many numbers + +scope + dim a as integer + a = 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100+101+102+103+104+105+106+107+108+109+110+111+112+113+114+115+116+117+118+119+120+121+122+123+124+125+126+127+128+129+130+131+132+133+134+135+136+137+138+139+140+141+142+143+144+145+146+147+148+149+150+151+152+153+154+155+156+157+158+159+160+161+162+163+164+165+166+167+168+169+170+171+172+173+174+175+176+177+178+179+180+181+182+183+184+185+186+187+188+189+190+191+192+193+194+195+196+197+198+199+200+201+202+203+204+205+206+207+208+209+210+211+212+213+214+215+216+217+218+219+220+221+222+223+224+225+226+227+228+229+230+231+232+233+234+235+236+237+238+239+240+241+242+243+244+245+246+247+248+249+250+251+252+253+254+255+256+257+258+259+260+261+262+263+264+265+266+267+268+269+270+271+272+273+274+275+276+277+278+279+280+281+282+283+284+285+286+287+288+289+290+291+292+293+294+295+296+297+298+299+300+301+302+303+304+305+306+307+308+309+310+311+312+313+314+315+316+317+318+319+320+321+322+323+324+325+326+327+328+329+330+331+332+333+334+335+336+337+338+339+340+341+342+343+344+345+346+347+348+349+350+351+352+353+354+355+356+357+358+359+360+361+362+363+364+365+366+367+368+369+370+371+372+373+374+375+376+377+378+379+380+381+382+383+384+385+386+387+388+389+390+391+392+393+394+395+396+397+398+399+400+401+402+403+404+405+406+407+408+409+410+411+412+413+414+415+416+417+418+419+420+421+422+423+424+425+426+427+428+429+430+431+432+433+434+435+436+437+438+439+440+441+442+443+444+445+446+447+448+449+450+451+452+453+454+455+456+457+458+459+460+461+462+463+464+465+466+467+468+469+470+471+472+473+474+475+476+477+478+479+480+481+482+483+484+485+486+487+488+489+490+491+492+493+494+495+496+497+498+499+500+501+502+503+504+505+506+507+508+509+510+511+512+513+514+515+516+517+518+519+520+521+522+523+524+525+526+527+528+529+530+531+532+533+534+535+536+537+538+539+540+541+542+543+544+545+546+547+548+549+550+551+552+553+554+555+556+557+558+559+560+561+562+563+564+565+566+567+568+569+570+571+572+573+574+575+576+577+578+579+580+581+582+583+584+585+586+587+588+589+590+591+592+593+594+595+596+597+598+599+600+601+602+603+604+605+606+607+608+609+610+611+612+613+614+615+616+617+618+619+620+621+622+623+624+625+626+627+628+629+630+631+632+633+634+635+636+637+638+639+640+641+642+643+644+645+646+647+648+649+650+651+652+653+654+655+656+657+658+659+660+661+662+663+664+665+666+667+668+669+670+671+672+673+674+675+676+677+678+679+680+681+682+683+684+685+686+687+688+689+690+691+692+693+694+695+696+697+698+699+700+701+702+703+704+705+706+707+708+709+710+711+712+713+714+715+716+717+718+719+720+721+722+723+724+725+726+727+728+729+730+731+732+733+734+735+736+737+738+739+740+741+742+743+744+745+746+747+748+749+750+751+752+753+754+755+756+757+758+759+760+761+762+763+764+765+766+767+768+769+770+771+772+773+774+775+776+777+778+779+780+781+782+783+784+785+786+787+788+789+790+791+792+793+794+795+796+797+798+799+800+801+802+803+804+805+806+807+808+809+810+811+812+813+814+815+816+817+818+819+820+821+822+823+824+825+826+827+828+829+830+831+832+833+834+835+836+837+838+839+840+841+842+843+844+845+846+847+848+849+850+851+852+853+854+855+856+857+858+859+860+861+862+863+864+865+866+867+868+869+870+871+872+873+874+875+876+877+878+879+880+881+882+883+884+885+886+887+888+889+890+891+892+893+894+895+896+897+898+899+900+901+902+903+904+905+906+907+908+909+910+911+912+913+914+915+916+917+918+919+920+921+922+923+924+925+926+927+928+929+930+931+932+933+934+935+936+937+938+939+940+941+942+943+944+945+946+947+948+949+950+951+952+953+954+955+956+957+958+959+960+961+962+963+964+965+966+967+968+969+970+971+972+973+974+975+976+977+978+979+980+981+982+983+984+985+986+987+988+989+990+991+992+993+994+995+996+997+998+999+1000 + + print a; +end scope \ No newline at end of file diff --git a/ifj2017/tests/04_expressions/24.stdout b/ifj2017/tests/04_expressions/24.stdout new file mode 100644 index 0000000..44b64dd --- /dev/null +++ b/ifj2017/tests/04_expressions/24.stdout @@ -0,0 +1 @@ + 500500 \ No newline at end of file diff --git a/ifj2017/tests/09_scopes/12.code b/ifj2017/tests/09_scopes/12.code new file mode 100644 index 0000000..e97e6fb --- /dev/null +++ b/ifj2017/tests/09_scopes/12.code @@ -0,0 +1,302 @@ +' 100 scopes, test for symbol table +SCOPE +dim a as integer = 100 +SCOPE +dim a as integer = 99 +SCOPE +dim a as integer = 98 +SCOPE +dim a as integer = 97 +SCOPE +dim a as integer = 96 +SCOPE +dim a as integer = 95 +SCOPE +dim a as integer = 94 +SCOPE +dim a as integer = 93 +SCOPE +dim a as integer = 92 +SCOPE +dim a as integer = 91 +SCOPE +dim a as integer = 90 +SCOPE +dim a as integer = 89 +SCOPE +dim a as integer = 88 +SCOPE +dim a as integer = 87 +SCOPE +dim a as integer = 86 +SCOPE +dim a as integer = 85 +SCOPE +dim a as integer = 84 +SCOPE +dim a as integer = 83 +SCOPE +dim a as integer = 82 +SCOPE +dim a as integer = 81 +SCOPE +dim a as integer = 80 +SCOPE +dim a as integer = 79 +SCOPE +dim a as integer = 78 +SCOPE +dim a as integer = 77 +SCOPE +dim a as integer = 76 +SCOPE +dim a as integer = 75 +SCOPE +dim a as integer = 74 +SCOPE +dim a as integer = 73 +SCOPE +dim a as integer = 72 +SCOPE +dim a as integer = 71 +SCOPE +dim a as integer = 70 +SCOPE +dim a as integer = 69 +SCOPE +dim a as integer = 68 +SCOPE +dim a as integer = 67 +SCOPE +dim a as integer = 66 +SCOPE +dim a as integer = 65 +SCOPE +dim a as integer = 64 +SCOPE +dim a as integer = 63 +SCOPE +dim a as integer = 62 +SCOPE +dim a as integer = 61 +SCOPE +dim a as integer = 60 +SCOPE +dim a as integer = 59 +SCOPE +dim a as integer = 58 +SCOPE +dim a as integer = 57 +SCOPE +dim a as integer = 56 +SCOPE +dim a as integer = 55 +SCOPE +dim a as integer = 54 +SCOPE +dim a as integer = 53 +SCOPE +dim a as integer = 52 +SCOPE +dim a as integer = 51 +SCOPE +dim a as integer = 50 +SCOPE +dim a as integer = 49 +SCOPE +dim a as integer = 48 +SCOPE +dim a as integer = 47 +SCOPE +dim a as integer = 46 +SCOPE +dim a as integer = 45 +SCOPE +dim a as integer = 44 +SCOPE +dim a as integer = 43 +SCOPE +dim a as integer = 42 +SCOPE +dim a as integer = 41 +SCOPE +dim a as integer = 40 +SCOPE +dim a as integer = 39 +SCOPE +dim a as integer = 38 +SCOPE +dim a as integer = 37 +SCOPE +dim a as integer = 36 +SCOPE +dim a as integer = 35 +SCOPE +dim a as integer = 34 +SCOPE +dim a as integer = 33 +SCOPE +dim a as integer = 32 +SCOPE +dim a as integer = 31 +SCOPE +dim a as integer = 30 +SCOPE +dim a as integer = 29 +SCOPE +dim a as integer = 28 +SCOPE +dim a as integer = 27 +SCOPE +dim a as integer = 26 +SCOPE +dim a as integer = 25 +SCOPE +dim a as integer = 24 +SCOPE +dim a as integer = 23 +SCOPE +dim a as integer = 22 +SCOPE +dim a as integer = 21 +SCOPE +dim a as integer = 20 +SCOPE +dim a as integer = 19 +SCOPE +dim a as integer = 18 +SCOPE +dim a as integer = 17 +SCOPE +dim a as integer = 16 +SCOPE +dim a as integer = 15 +SCOPE +dim a as integer = 14 +SCOPE +dim a as integer = 13 +SCOPE +dim a as integer = 12 +SCOPE +dim a as integer = 11 +SCOPE +dim a as integer = 10 +SCOPE +dim a as integer = 9 +SCOPE +dim a as integer = 8 +SCOPE +dim a as integer = 7 +SCOPE +dim a as integer = 6 +SCOPE +dim a as integer = 5 +SCOPE +dim a as integer = 4 +SCOPE +dim a as integer = 3 +SCOPE +dim a as integer = 2 +SCOPE +dim a as integer = 1 +print a; +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope +end scope \ No newline at end of file diff --git a/ifj2017/tests/09_scopes/12.stdout b/ifj2017/tests/09_scopes/12.stdout new file mode 100644 index 0000000..1758083 --- /dev/null +++ b/ifj2017/tests/09_scopes/12.stdout @@ -0,0 +1 @@ + 1 \ No newline at end of file diff --git a/ifj2017/tests/09_scopes/13.code b/ifj2017/tests/09_scopes/13.code new file mode 100644 index 0000000..85ec884 --- /dev/null +++ b/ifj2017/tests/09_scopes/13.code @@ -0,0 +1,24 @@ +' Declaration in If in IF in While in Function +function foo() as integer + dim a as integer = 10 + dim b as integer = 10 + do while a > 4 + if a > 4 then + dim a as integer + a = 5 + if b = 7 then + return a + else + end if + else + end if + a = a - 1 + b = b - 1 + loop +end function + +scope + dim a as integer + a = foo() + print a; +end scope \ No newline at end of file diff --git a/ifj2017/tests/09_scopes/13.stdout b/ifj2017/tests/09_scopes/13.stdout new file mode 100644 index 0000000..0e5e484 --- /dev/null +++ b/ifj2017/tests/09_scopes/13.stdout @@ -0,0 +1 @@ + 5 \ No newline at end of file diff --git a/ifj2017/tests/66_errors/19.code b/ifj2017/tests/66_errors/19.code new file mode 100644 index 0000000..348b2ea --- /dev/null +++ b/ifj2017/tests/66_errors/19.code @@ -0,0 +1,11 @@ +' Colision of argument name and function name + +function foo1() as integer +end function + +function bar(foo1 as integer) as integer + return foo1 +end function + +scope +end scope \ No newline at end of file diff --git a/ifj2017/tests/66_errors/20.code b/ifj2017/tests/66_errors/20.code new file mode 100644 index 0000000..102275c --- /dev/null +++ b/ifj2017/tests/66_errors/20.code @@ -0,0 +1,9 @@ +' Colision of argument name and function name + +declare function foo1() as integer +function bar(foo1 as integer) as integer +return foo1 +end function + +scope +end scope \ No newline at end of file diff --git a/ifj2017/tests/66_errors/21.code b/ifj2017/tests/66_errors/21.code new file mode 100644 index 0000000..99fab61 --- /dev/null +++ b/ifj2017/tests/66_errors/21.code @@ -0,0 +1,16 @@ +' Colision of argument name and function name + +declare function foo1() as integer +declare function bar(foo1 as integer) as integer + +function foo1() as integer + return 42 +end function + +function bar(a as integer) as integer + return 42 +end function + +scope + +end scope \ No newline at end of file diff --git a/ifj2017/tests/66_errors/tests.json b/ifj2017/tests/66_errors/tests.json index 56ba7c2..0716393 100644 --- a/ifj2017/tests/66_errors/tests.json +++ b/ifj2017/tests/66_errors/tests.json @@ -352,7 +352,20 @@ "info": "Print without semicolon 2", "compiler_exit_code": 2, "code": "scope \n print 10 10;\n end scope" + }, + { + "name": "19", + "compiler_exit_code": 3 + }, + { + "name": "20", + "compiler_exit_code": 3 + }, + { + "name": "21", + "compiler_exit_code": 3 } + ] } \ No newline at end of file