Ejemplo n.º 1
0
        public void TestLetStatements()
        {
            var data = new EvalIntegerStruct[2];

            data[0] = new EvalIntegerStruct("let a = 5;", 5);
            data[1] = new EvalIntegerStruct("let a = 2; let b = 5; let c = a + b;", 7);

            for (var i = 0; i < data.Length; i++)
            {
                var evaluated = TestEval(data[i].Input);
                Assert.True(TestIntegerObjects(evaluated, data[i].Expected));
            }
        }
Ejemplo n.º 2
0
        public void TestFunctionApp()
        {
            var data = new EvalIntegerStruct[2];

            data[0] = new EvalIntegerStruct("let identity = fn(x) { x; }; identity(5);", 5);
            data[1] = new EvalIntegerStruct("let add = fn(x, y) { x + y; }; add(5 + 5, add(5, 5));", 20);

            for (var i = 0; i < data.Length; i++)
            {
                var evaluated = TestEval(data[i].Input);
                Assert.True(TestIntegerObjects(evaluated, data[i].Expected));
            }
        }
Ejemplo n.º 3
0
        public void TestIfElseExpression()
        {
            var data = new EvalIntegerStruct[6];

            data[0] = new EvalIntegerStruct("if (true) {10};", 10);
            data[1] = new EvalIntegerStruct("if (false) {5};", null);
            data[2] = new EvalIntegerStruct("if (1 > 2) {10} else {5};", 5);
            data[3] = new EvalIntegerStruct("if (1 < 2) {10};", 10);
            data[4] = new EvalIntegerStruct("if (1) {1};", 1);
            data[5] = new EvalIntegerStruct("if(false) {10};", null);

            for (var i = 0; i < data.Length; i++)
            {
                var evaluated = TestEval(data[i].Input);
                Assert.True(data[i].Expected == null
                    ? TestNullObjects(evaluated)
                    : TestIntegerObjects(evaluated, data[i].Expected));
            }
        }
Ejemplo n.º 4
0
        public void TestReturnStatements()
        {
            var data = new EvalIntegerStruct[5];

            data[0] = new EvalIntegerStruct("return 10;", 10);
            data[1] = new EvalIntegerStruct("return 10; 9;", 10);
            data[2] = new EvalIntegerStruct("return 5 * 5; 77;", 25);
            data[3] = new EvalIntegerStruct("77; return 2 * 2; 88;", 4); // TODO: Fix this.

            data[4] = new EvalIntegerStruct(@"
                    if (25 > 5) {
                        if (10 > 2) {
                            return 77;
                        }
                    }
                ", 77);

            for (var i = 0; i < data.Length; i++)
            {
                var evaluated = TestEval(data[i].Input);
                Assert.True(TestIntegerObjects(evaluated, data[i].Expected));
            }
        }
Ejemplo n.º 5
0
        public void TestIntegerExpression()
        {
            var data = new EvalIntegerStruct[12];

            data[0]  = new EvalIntegerStruct("5;", 5);
            data[1]  = new EvalIntegerStruct("7;", 7);
            data[2]  = new EvalIntegerStruct("-5;", -5);
            data[3]  = new EvalIntegerStruct("-7;", -7);
            data[4]  = new EvalIntegerStruct("1 + 1;", 2);
            data[5]  = new EvalIntegerStruct("23 + 7;", 30);
            data[6]  = new EvalIntegerStruct("1 - 1;", 0);
            data[7]  = new EvalIntegerStruct("25 - 5;", 20);
            data[8]  = new EvalIntegerStruct("1 * 1;", 1);
            data[9]  = new EvalIntegerStruct("6 * 6;", 36);
            data[10] = new EvalIntegerStruct("49 / 7;", 7);
            data[11] = new EvalIntegerStruct("100 / 10;", 10);

            for (var i = 0; i < data.Length; i++)
            {
                var evaluated = TestEval(data[i].Input);
                Assert.True(TestIntegerObjects(evaluated, data[i].Expected));
            }
        }