public void ForgettingReturn() { TextReader programString = File.OpenText("code57.txt"); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole(); program.getRuntimeErrorHandler().printErrorsToConsole(); Assert.AreEqual(1, program.getRuntimeErrorHandler().getErrors().Count); }
public void TooLateVariableDefinition() { TextReader programString = File.OpenText("code67.txt"); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole(); program.getRuntimeErrorHandler().printErrorsToConsole(); Assert.AreNotEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual("hello", program.Output[0]); }
public void AllowMissingTypesInArgumentDeclaration() { StringReader programString = new StringReader( @" void f(x) end " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler().printErrorsToConsole (); program.getRuntimeErrorHandler().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.Output.Count); }
public void AllowPlusSignBeforeNumbers() { StringReader programString = new StringReader( @" var a = +10 var b = -2 print(a + b) " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(1, program.Output.Count); Assert.AreEqual("8", program.Output[0]); }
public void AllowWhitespaceAsCommaInFunctionCall() { TextReader programString = File.OpenText("code83.txt"); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole(); program.getCompileTimeErrorHandler().printErrorsToConsole(); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(1, program.Output.Count); Assert.AreEqual("500", program.Output[0]); }
public void NamedLoopVariableTrickySituation() { StringReader programString = new StringReader( @"var x = [5,6] var y = [7,8] loop x + y print(@) end " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(4, program.Output.Count); Assert.AreEqual("5", program.Output[0]); Assert.AreEqual("6", program.Output[1]); Assert.AreEqual("7", program.Output[2]); Assert.AreEqual("8", program.Output[3]); }
public void ParsePlusOneAsExpression() { StringReader programString = new StringReader( @" var lines = [1,2,3] var linesCount = 1 print(lines[linesCount+1]) #failes print(lines[linesCount + 1]) #works var l1 = (linesCount+1) #failes var l2 = (linesCount + 1) #works " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(2, program.Output.Count); Assert.AreEqual("3", program.Output[0]); Assert.AreEqual("3", program.Output[1]); }
public void ErrorMessageWhenMessingUpEqualSigns() { StringReader programString = new StringReader( @" var x = 10 if x = 10 Print(10) end " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler().printErrorsToConsole (); program.getRuntimeErrorHandler().printErrorsToConsole (); Assert.AreEqual(2, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual("Found assignment (=) in if statement. Use == instead?", program.getCompileTimeErrorHandler().getErrors()[0].Message); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.Output.Count); }
public void EbbesArrayTrouble() { StringReader programString = new StringReader( @" array a loop i from 0 to 9 a[i] = ['hej', 'svej'] end print('count: ' + Count(a)) var a0 = a[0] print(a0[0]) print(a0[1]) " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(3, program.Output.Count); Assert.AreEqual("count: 10", program.Output[0]); Assert.AreEqual("hej", program.Output[1]); Assert.AreEqual("svej", program.Output[2]); }
public void DefineFunctionTwice() { StringReader programString = new StringReader( @"void Foo(number x) end void Foo(number x) end " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(1, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.Output.Count); }
public void SimpleAndStatements() { TextReader programString = File.OpenText("code81.txt"); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole(); program.getCompileTimeErrorHandler().printErrorsToConsole(); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(1, program.Output.Count); Assert.AreEqual("yep", program.Output[0]); }
public void SetIndexInRange() { StringReader programString = new StringReader( @"var r = from 1 to 100 print(r) r[0] = 100 " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(1, program.getRuntimeErrorHandler().getErrors().Count); }
public void RootAprox() { TextReader programString = File.OpenText("code43.txt"); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole(); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual("3", program.Output[0]); Assert.AreEqual("4", program.Output[1]); }
//[Test()] public void Profiling() { StringReader programString = new StringReader( @"void Foo() end Foo() Foo() Foo() Foo() Foo() " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.Output.Count); foreach (var item in program.sprakRunner.GetProfileData()) { Console.WriteLine (item.Key + " => " + item.Value); } Assert.AreEqual(5, program.sprakRunner.GetProfileData()["Foo"].calls); }
public void PrintRangeType() { StringReader programString = new StringReader( @"var xs = from 1 to 1000 print(xs) print(from 100 to -50) print(from 10 to 5) " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual("(from 1 to 1000)", program.Output[0]); Assert.AreEqual("(from 100 to -50)", program.Output[1]); Assert.AreEqual("[10, 9, 8, 7, 6, 5]", program.Output[2]); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); }
public void PlusEqualsInArray() { StringReader programString = new StringReader( @" array a = [10,20,30] a[1] += 5 print(a) " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(1, program.Output.Count); Assert.AreEqual("[10, 25, 30]", program.Output[0]); }
public void ConcatenatingArrays() { TextReader programString = File.OpenText("code63.txt"); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole(); program.getCompileTimeErrorHandler().printErrorsToConsole(); program.getRuntimeErrorHandler().printErrorsToConsole(); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual("a: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]", program.Output[0]); }
public void CrashbugWithElseifWithoutEnd() { TextReader programString = File.OpenText("code80.txt"); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole(); program.getCompileTimeErrorHandler().printErrorsToConsole(); Assert.AreEqual(1, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); }
public void SimpleArrayPrint() { StringReader programString = new StringReader( @"var l = [10, 20, 30] print(l)" ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); Assert.AreEqual("[10, 20, 30]", program.Output[0]); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); }
public void DoubleCommaInArrayLiteral() { StringReader programString = new StringReader( @"var a = ['hej',, 'pa' , 'dig'] " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(1, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.Output.Count); }
public void UseRangeTypeInLoop() { StringReader programString = new StringReader( @"number sum = 0 loop from 1 to 100 sum += @ end print(sum) print([1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9]) " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual("5050", program.Output[0]); }
public void FalseOrFalse() { StringReader programString = new StringReader( @" bool DontCall() print('Fail!') return false end if false or DontCall() print(10) else print(20) end " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(1, program.Output.Count); Assert.AreEqual("20", program.Output[0]); }
public void InfiniteLoop() { StringReader programString = new StringReader( @" loop end " ); DefaultSprakRunner sprakRunner = new DefaultSprakRunner(programString); sprakRunner.run(30); GC.Collect(); GC.WaitForPendingFinalizers(); sprakRunner.printOutputToConsole (); sprakRunner.getCompileTimeErrorHandler().printErrorsToConsole (); sprakRunner.getRuntimeErrorHandler().printErrorsToConsole (); Assert.AreEqual(0, sprakRunner.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, sprakRunner.getRuntimeErrorHandler().getErrors().Count); Console.WriteLine("MemorySpace.nrOfMemorySpacesInMemory = " + MemorySpace.nrOfMemorySpacesInMemory); Console.WriteLine("InterpreterTwo.nrOfScopes = " + InterpreterTwo.nrOfScopes); //Assert.AreEqual(1, InterpreterTwo.nrOfScopes); }
public void ErrorMessageWhenMissingExpressionInIf() { StringReader programString = new StringReader( @"if print(42) end " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(2, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); }
public void NamedLoopVariableWithRange() { StringReader programString = new StringReader( @"loop a from 10 to 13 print(a) end " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(4, program.Output.Count); Assert.AreEqual("10", program.Output[0]); Assert.AreEqual("11", program.Output[1]); Assert.AreEqual("12", program.Output[2]); Assert.AreEqual("13", program.Output[3]); }
public void HugeLoop() { StringReader programString = new StringReader( @"loop from 1 to 2000 print(@) end " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(2000, program.Output.Count); }
public void CallBuiltInFunctionWithTooFewArgs() { StringReader programString = new StringReader( @"print() " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(1, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); }
public void ListWithStringKeys() { StringReader programString = new StringReader( @"array stuff = [] stuff['apa'] = 100 stuff['kossa'] = 200 stuff['fisk'] = 300 stuff[0] = 500 stuff[10] = 400 print(stuff[10]) print(stuff['apa']) print(stuff) " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler ().printErrorsToConsole (); program.getRuntimeErrorHandler ().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual("400", program.Output[0]); Assert.AreEqual("100", program.Output[1]); }
public void CallingFunctionWhenAccessingNonexistingArray() { StringReader programString = new StringReader( @" print(garbage[0]) " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler().printErrorsToConsole (); program.getRuntimeErrorHandler().printErrorsToConsole (); Assert.AreEqual(1, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.Output.Count); }
public void ComparingStrings() { StringReader programString = new StringReader( @" var x = 'aha' if x != 'aha' print('nope') else print('yes') end " ); DefaultSprakRunner program = new DefaultSprakRunner(programString); program.run(); program.printOutputToConsole (); program.getCompileTimeErrorHandler().printErrorsToConsole (); program.getRuntimeErrorHandler().printErrorsToConsole (); Assert.AreEqual(0, program.getCompileTimeErrorHandler().getErrors().Count); Assert.AreEqual(0, program.getRuntimeErrorHandler().getErrors().Count); Assert.AreEqual(1, program.Output.Count); Assert.AreEqual("yes", program.Output[0]); }