Example #1
0
        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);
        }
Example #2
0
        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]);
        }
Example #3
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);
        }
Example #4
0
        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]);
        }
Example #5
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]);
        }
Example #6
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 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);
        }
Example #8
0
        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]);
        }
Example #9
0
        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);
        }
Example #10
0
        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]);
        }
Example #11
0
        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);
        }
Example #12
0
        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]);
        }
Example #13
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);
        }
Example #14
0
        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]);
        }
Example #15
0
        //[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);
        }
Example #16
0
        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);
        }
Example #17
0
        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]);
        }
Example #18
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]);
        }
Example #19
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);
        }
Example #20
0
        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);
        }
Example #21
0
        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);
        }
Example #22
0
        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]);
        }
Example #23
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]);
        }
Example #24
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);
        }
Example #25
0
        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);
        }
Example #26
0
        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]);
        }
Example #27
0
        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);
        }
Example #28
0
        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);
        }
Example #29
0
        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]);
        }
Example #30
0
        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);
        }
Example #31
0
        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]);
        }
Example #32
0
        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]);
        }