コード例 #1
0
        public void TestVarDef()
        {
            var tree = ASTParserTests.Parse("begin var a,b,d end");

            Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.List_identNode, SimpleLang", (string)tree["StList"]["$values"][0]["List_ident"]["$type"]);
        }
コード例 #2
0
ファイル: Tests.cs プロジェクト: tommot14/MMCS_CS311
        public void TestRepeat()
        {
            var tree = ASTParserTests.Parse("begin repeat a:=2 until 2 end");

            Assert.AreEqual("ProgramTree.RepeatNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            // TODO: проверить узлы содержимого repeat
        }
コード例 #3
0
ファイル: Tests.cs プロジェクト: tommot14/MMCS_CS311
        public void TestWrite()
        {
            var tree = ASTParserTests.Parse("begin write(2) end");

            Assert.AreEqual("ProgramTree.WriteNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            // TODO: проверить содержимое write
        }
コード例 #4
0
ファイル: Tests.cs プロジェクト: tommot14/MMCS_CS311
        public void TestFor()
        {
            var tree = ASTParserTests.Parse("begin for i:=2 to 10 do a:=2 end");

            Assert.AreEqual("ProgramTree.ForNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            // TODO: проверить узлы содержимого for
        }
コード例 #5
0
        public void TestBinary()
        {
            var tree = ASTParserTests.Parse("begin a:=x-z*3/(c+3-(ddz)+2) end");

            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
        }
コード例 #6
0
        public void TestWrite()
        {
            var tree = ASTParserTests.Parse("begin write(2) end");

            Assert.AreEqual("ProgramTree.WriteNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
        }
コード例 #7
0
ファイル: Tests.cs プロジェクト: BlueMadWolf/MMCS_CS311
        public void TestIfShort()
        {
            var tree = ASTParserTests.Parse("begin if a then b := 2 end");

            Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("a", ((string)tree["StList"]["$values"][0]["Expr"]["Name"]).Trim());
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["St1"]["$type"]);
        }
コード例 #8
0
ファイル: Tests.cs プロジェクト: BlueMadWolf/MMCS_CS311
        public void TestWhile()
        {
            var tree = ASTParserTests.Parse("begin while 2 do a:=2 end");

            Assert.AreEqual("ProgramTree.WhileNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("2", ((string)tree["StList"]["$values"][0]["Expr"]["Num"]).Trim());
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Stat"]["$type"]);
        }
コード例 #9
0
        public void TestBinary()
        {
            var tree = ASTParserTests.Parse("begin a := (5*2) * (9-1) end");

            Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["$type"]);
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["Left"]["$type"]);
            Assert.AreEqual("5", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Left"]["Num"]).Trim());
        }
コード例 #10
0
        public void TestIfElse()
        {
            var tree = ASTParserTests.Parse("begin if 7 then a:= 5 else a:= 9 end");

            Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("7", ((string)tree["StList"]["$values"][0]["Expr"]["Num"]).Trim());
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["StFalse"]["$type"]);
        }
コード例 #11
0
ファイル: Tests.cs プロジェクト: Battler45/MMCS_CS311
        public void TestIf()
        {
            var tree = ASTParserTests.Parse("begin if 2 then a:=2 else a:=3 end");

            Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            tree = ASTParserTests.Parse("begin if 2 then a:=2 end");
            Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            // TODO: дописать тест
        }
コード例 #12
0
ファイル: Tests.cs プロジェクト: Battler45/MMCS_CS311
        public void TestVarDef()
        {
            var tree = ASTParserTests.Parse("begin var a, b, c end");

            Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            tree = ASTParserTests.Parse("begin var a end");
            Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            // TODO: дописать тест
        }
コード例 #13
0
        public void TestFor()
        {
            var tree = ASTParserTests.Parse("begin for i:=2 to 10 do a:=2 end");

            Assert.AreEqual("ProgramTree.ForNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Stlist"]["$type"]);
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Assign"]["$type"]);
        }
コード例 #14
0
        public void TestRepeat()
        {
            var tree = ASTParserTests.Parse("begin repeat a:=2 until 2 end");

            Assert.AreEqual("ProgramTree.RepeatNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("2", ((string)tree["StList"]["$values"][0]["Expr"]["Num"]).Trim());
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["StList"]["$values"][0]["StList"]["$values"][0]["$type"]);
        }
コード例 #15
0
ファイル: Tests.cs プロジェクト: BlueMadWolf/MMCS_CS311
        public void TestIfFull()
        {
            var tree = ASTParserTests.Parse("begin if b then c := 3 else b := 4 end");

            Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("b", ((string)tree["StList"]["$values"][0]["Expr"]["Name"]).Trim());
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["St1"]["$type"]);
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["St2"]["$type"]);
        }
コード例 #16
0
ファイル: Tests.cs プロジェクト: BlueMadWolf/MMCS_CS311
        public void TestVar()
        {
            var tree = ASTParserTests.Parse("begin var a, b end");

            Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["IdL"]["$values"][0]["$type"]);
            Assert.AreEqual("a", ((string)tree["StList"]["$values"][0]["IdL"]["$values"][0]["Name"]).Trim());
            Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["IdL"]["$values"][1]["$type"]);
            Assert.AreEqual("b", ((string)tree["StList"]["$values"][0]["IdL"]["$values"][1]["Name"]).Trim());
        }
コード例 #17
0
ファイル: Tests.cs プロジェクト: BlueMadWolf/MMCS_CS311
        public void TestBinaryWrite()
        {
            var tree = ASTParserTests.Parse("begin write(a / 10) end");

            Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["$type"]);
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Right"]["$type"]);
            Assert.AreEqual("a", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Name"]).Trim());
            Assert.AreEqual("10", ((string)tree["StList"]["$values"][0]["Expr"]["Right"]["Num"]).Trim());
            Assert.AreEqual("/", ((string)tree["StList"]["$values"][0]["Expr"]["Operation"]).Trim());
        }
コード例 #18
0
ファイル: Tests.cs プロジェクト: Battler45/MMCS_CS311
        public void TestBinary()
        {
            var tree = ASTParserTests.Parse("begin a:=b end");

            Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            tree = ASTParserTests.Parse("begin c:=a+b/c end");
            Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            tree = ASTParserTests.Parse("begin a:=b/c end");
            Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            // TODO: дописать тест
        }
コード例 #19
0
        public void TestVarDef()
        {
            var tree = ASTParserTests.Parse("begin var a,b,d end");

            var varNode = tree["StList"]["$values"][0];

            Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)varNode["$type"]);
            Assert.AreEqual(3, ((JArray)varNode["IdentList"]["$values"]).Count);
            Assert.AreEqual("a", (string)varNode["IdentList"]["$values"][0]["Name"]);
            Assert.AreEqual("b", (string)varNode["IdentList"]["$values"][1]["Name"]);
            Assert.AreEqual("d", (string)varNode["IdentList"]["$values"][2]["Name"]);
        }
コード例 #20
0
ファイル: Tests.cs プロジェクト: BlueMadWolf/MMCS_CS311
        public void TestFor()
        {
            var tree = ASTParserTests.Parse("begin for i:=2 to 10 do a:=(2+b)/(c-a*2) end");

            Assert.AreEqual("ProgramTree.ForNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Asgn"]["$type"]);
            Assert.AreEqual("i", ((string)tree["StList"]["$values"][0]["Asgn"]["Id"]["Name"]).Trim());
            Assert.AreEqual("2", ((string)tree["StList"]["$values"][0]["Asgn"]["Expr"]["Num"]).Trim());
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("10", ((string)tree["StList"]["$values"][0]["Expr"]["Num"]).Trim());
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Stat"]["$type"]);
        }
コード例 #21
0
        public void TestRepeat()
        {
            var tree = ASTParserTests.Parse("begin repeat a:=2 until 2 end");

            Assert.AreEqual("ProgramTree.RepeatNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            // TODO: проверить узлы содержимого repeat
            var assignNode = tree["StList"]["$values"][0]["Block"]["StList"]["$values"][0];

            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)assignNode["$type"]);
            Assert.AreEqual("2", ((string)assignNode["Expr"]["Num"]).Trim());
            Assert.AreEqual("0", ((string)assignNode["AssOp"]).Trim());
            Assert.AreEqual("a", ((string)assignNode["Id"]["Name"]).Trim());
            Assert.AreEqual("2", (string)tree["StList"]["$values"][0]["Expr"]["Num"]);
        }
コード例 #22
0
        public void TestIf()
        {
            var tree1 = ASTParserTests.Parse("begin if 2 then a:= 3 else c:= 8 end");

            Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree1["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree1["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree1["StList"]["$values"][0]["Stat_first"]["$type"]);
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree1["StList"]["$values"][0]["Stat_second"]["$type"]);

            var tree2 = ASTParserTests.Parse("begin if 2 then a:= 3 end");

            Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree2["StList"]["$values"][0]["$type"]);
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree2["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree2["StList"]["$values"][0]["Stat_first"]["$type"]);
        }
コード例 #23
0
ファイル: Tests.cs プロジェクト: BlueMadWolf/MMCS_CS311
        public void TestBinaryAssign()
        {
            var tree = ASTParserTests.Parse("begin a := (3 + 4) * 7 end");

            Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]);
            Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["$type"]);
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["Left"]["$type"]);
            Assert.AreEqual("3", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Left"]["Num"]).Trim());
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["Right"]["$type"]);
            Assert.AreEqual("4", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Right"]["Num"]).Trim());
            Assert.AreEqual("+", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Operation"]).Trim());
            Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Right"]["$type"]);
            Assert.AreEqual("7", ((string)tree["StList"]["$values"][0]["Expr"]["Right"]["Num"]).Trim());
            Assert.AreEqual("*", ((string)tree["StList"]["$values"][0]["Expr"]["Operation"]).Trim());
        }
コード例 #24
0
        public void TestFor()
        {
            var tree = ASTParserTests.Parse("begin for i:=2 to 10 do a:=2 end");

            Assert.AreEqual("ProgramTree.ForNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]);
            // TODO: проверить узлы содержимого for
            var assigmentNode = tree["StList"]["$values"][0]["AssignNode"];

            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)assigmentNode["$type"]);
            Assert.AreEqual("2", ((string)assigmentNode["Expr"]["Num"]).Trim());
            Assert.AreEqual("0", ((string)assigmentNode["AssOp"]).Trim());
            Assert.AreEqual("i", ((string)assigmentNode["Id"]["Name"]).Trim());

            Assert.AreEqual("10", (string)tree["StList"]["$values"][0]["Expr"]["Num"]);

            var statementNode = tree["StList"]["$values"][0]["Stat"];

            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)statementNode["$type"]);
            Assert.AreEqual("2", ((string)statementNode["Expr"]["Num"]).Trim());
            Assert.AreEqual("0", ((string)statementNode["AssOp"]).Trim());
            Assert.AreEqual("a", ((string)statementNode["Id"]["Name"]).Trim());
        }
コード例 #25
0
        public void TestBinary()
        {
            var tree = ASTParserTests.Parse("begin a:=x-z*3/(c+3-(ddz)+2) end");

            var expr = tree["StList"]["$values"][0]["Expr"];

            Assert.AreEqual("a", (string)tree["StList"]["$values"][0]["Id"]["Name"]);
            Assert.AreEqual("x", (string)expr["Left"]["Name"]);
            Assert.AreEqual("-", (string)expr["Operation"]);

            Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)expr["Right"]["$type"]);
            Assert.AreEqual("*", (string)expr["Right"]["Operation"]);
            Assert.AreEqual("3", (string)expr["Right"]["Left"]["Right"]["Num"]);
            Assert.AreEqual("/", (string)expr["Right"]["Left"]["Operation"]);
            Assert.AreEqual("z", (string)expr["Right"]["Left"]["Left"]["Name"]);
            Assert.AreEqual("+", (string)expr["Right"]["Right"]["Operation"]);
            Assert.AreEqual("c", (string)expr["Right"]["Right"]["Left"]["Left"]["Left"]["Name"]);
            Assert.AreEqual("-", (string)expr["Right"]["Right"]["Left"]["Operation"]);
            Assert.AreEqual("3", (string)expr["Right"]["Right"]["Left"]["Left"]["Right"]["Num"]);
            Assert.AreEqual("ddz", (string)expr["Right"]["Right"]["Left"]["Right"]["Name"]);
            Assert.AreEqual("+", (string)expr["Right"]["Right"]["Left"]["Left"]["Operation"]);
            Assert.AreEqual("2", (string)expr["Right"]["Right"]["Right"]["Num"]);
        }
コード例 #26
0
        public void TestIf()
        {
            var tree = ASTParserTests.Parse("begin if 2 then a:=3 else c:=8; if 3 then z:=10 end");


            var firstIf = tree["StList"]["$values"][0];

            Assert.AreEqual("ProgramTree.IfElseNode, SimpleLang", (string)firstIf["$type"]);
            Assert.AreEqual("2", (string)firstIf["Expr"]["Num"]);

            var trueAssign = firstIf["Stat"];

            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)trueAssign["$type"]);
            Assert.AreEqual("3", ((string)trueAssign["Expr"]["Num"]).Trim());
            Assert.AreEqual("0", ((string)trueAssign["AssOp"]).Trim());
            Assert.AreEqual("a", ((string)trueAssign["Id"]["Name"]).Trim());

            var falseAssign = firstIf["ElseStat"];

            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)falseAssign["$type"]);
            Assert.AreEqual("8", ((string)falseAssign["Expr"]["Num"]).Trim());
            Assert.AreEqual("0", ((string)falseAssign["AssOp"]).Trim());
            Assert.AreEqual("c", ((string)falseAssign["Id"]["Name"]).Trim());

            var secondIf = tree["StList"]["$values"][1];

            Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)secondIf["$type"]);
            Assert.AreEqual("3", (string)secondIf["Expr"]["Num"]);

            var secondIfAssign = secondIf["Stat"];

            Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)secondIfAssign["$type"]);
            Assert.AreEqual("10", ((string)secondIfAssign["Expr"]["Num"]).Trim());
            Assert.AreEqual("0", ((string)secondIfAssign["AssOp"]).Trim());
            Assert.AreEqual("z", ((string)secondIfAssign["Id"]["Name"]).Trim());
        }