Skip to content
Snippets Groups Projects
Commit 846beb81 authored by Anton Bagliy's avatar Anton Bagliy
Browse files

Merge branch 'master' of https://github.com/czen/MMCS_CS311

parents df1b94bb 3b4f2eab
No related merge requests found
...@@ -78,7 +78,7 @@ namespace TestCodeGenerator ...@@ -78,7 +78,7 @@ namespace TestCodeGenerator
[Test] [Test]
public void TestIf() public void TestIf()
{ {
Assert.AreEqual("3", TestHelper.GenerateNRun(@"begin var a; a := 0; if a then write(2) else write(3) end")); Assert.AreEqual("3", TestHelper.GenerateNRun(@"begin var a1; a1 := 0; if a1 then write(2) else write(3) end"));
Assert.AreEqual("3", TestHelper.GenerateNRun(@"begin var x,y; x := 1; y := x-1; if x then if y then write(2) else write(3) end")); Assert.AreEqual("3", TestHelper.GenerateNRun(@"begin var x,y; x := 1; y := x-1; if x then if y then write(2) else write(3) end"));
} }
...@@ -86,13 +86,13 @@ namespace TestCodeGenerator ...@@ -86,13 +86,13 @@ namespace TestCodeGenerator
[Test] [Test]
public void TestWhile() public void TestWhile()
{ {
Assert.AreEqual("1024", TestHelper.GenerateNRun(@"begin var a,b; b:=1; a:=10; while a do begin a:=a-1; b:=b*2; end; write(b) end")); Assert.AreEqual("1024", TestHelper.GenerateNRun(@"begin var a2,b2; b2:=1; a2:=10; while a2 do begin a2:=a2-1; b2:=b2*2; end; write(b2) end"));
} }
[Test] [Test]
public void TestUntil() public void TestUntil()
{ {
Assert.AreEqual("1024", TestHelper.GenerateNRun(@"begin var a,b; b:=1; a:=10; repeat a:=a-1; b:=b*2 until a; write(b) end")); Assert.AreEqual("1024", TestHelper.GenerateNRun(@"begin var a3,b3; b3:=1; a3:=10; repeat a3:=a3-1; b3:=b3*2 until a3; write(b3) end"));
} }
} }
} }
\ No newline at end of file
using System; using System;
using System.Security.Cryptography;
using NUnit.Framework; using NUnit.Framework;
using SimpleScanner; using SimpleScanner;
using SimpleParser; using SimpleParser;
...@@ -6,7 +7,7 @@ using SimpleLang.Visitors; ...@@ -6,7 +7,7 @@ using SimpleLang.Visitors;
namespace TestVisitors namespace TestVisitors
{ {
public class TestHelpers public class ParserTest
{ {
public static Parser Parse(string text) public static Parser Parse(string text)
{ {
...@@ -19,12 +20,12 @@ namespace TestVisitors ...@@ -19,12 +20,12 @@ namespace TestVisitors
} }
[TestFixture] [TestFixture]
public class TestAvgOpCount public class TestAvgOpCount: ParserTest
{ {
[Test] [Test]
public void NoLoopTest() public void NoLoopTest()
{ {
Parser p = TestHelpers.Parse(@"begin end "); Parser p = Parse(@"begin end ");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var avgCounter = new CountCyclesOpVisitor(); var avgCounter = new CountCyclesOpVisitor();
p.root.Visit(avgCounter); p.root.Visit(avgCounter);
...@@ -34,7 +35,7 @@ namespace TestVisitors ...@@ -34,7 +35,7 @@ namespace TestVisitors
[Test] [Test]
public void ThreeLoopsTest() public void ThreeLoopsTest()
{ {
Parser p = TestHelpers.Parse(@"begin Parser p = Parse(@"begin
var a,b,d; var a,b,d;
b := 2; b := 2;
a := 3; a := 3;
...@@ -70,36 +71,36 @@ namespace TestVisitors ...@@ -70,36 +71,36 @@ namespace TestVisitors
} }
[TestFixture] [TestFixture]
public class TestCommonVariable public class TestCommonVariable: ParserTest
{ {
[Test] [Test]
public void OneVarTest() public void OneVarTest()
{ {
Parser p = TestHelpers.Parse(@"begin var a; a:=2; a:=a+2*a-3; a:=3; end "); Parser p = Parse(@"begin var a0; a0:=2; a0:=a0+2*a0-3; a0:=3; end ");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var varCounter = new CommonlyUsedVarVisitor(); var varCounter = new CommonlyUsedVarVisitor();
p.root.Visit(varCounter); p.root.Visit(varCounter);
Assert.AreEqual("a", varCounter.mostCommonlyUsedVar()); Assert.AreEqual("a0", varCounter.mostCommonlyUsedVar());
} }
[Test] [Test]
public void ManyVarTest() public void ManyVarTest()
{ {
Parser p = TestHelpers.Parse(@"begin var a,b,c; a:=2+c-b; b:=a+2*a-3-b+b-b+b+b; b:=c-3+b-3; end "); Parser p = Parse(@"begin var a1,b1,c1; a1:=2+c1-b1; b1:=a1+2*a1-3-b1+b1-b1+b1+b1; b1:=c1-3+b1-3; end ");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var varCounter = new CommonlyUsedVarVisitor(); var varCounter = new CommonlyUsedVarVisitor();
p.root.Visit(varCounter); p.root.Visit(varCounter);
Assert.AreEqual("b", varCounter.mostCommonlyUsedVar()); Assert.AreEqual("b1", varCounter.mostCommonlyUsedVar());
} }
} }
[TestFixture] [TestFixture]
public class TestExprComplexity public class TestExprComplexity: ParserTest
{ {
[Test] [Test]
public void AssignTest() public void AssignTest()
{ {
Parser p = TestHelpers.Parse(@"begin var a; a:=2+2; a:=a+2*a-3; a:=3; end "); Parser p = Parse(@"begin var a2; a2:=2+2; a2:=a2+2*a2-3; a2:=3; end ");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var exprMeter = new ExprComplexityVisitor(); var exprMeter = new ExprComplexityVisitor();
p.root.Visit(exprMeter); p.root.Visit(exprMeter);
...@@ -110,7 +111,7 @@ namespace TestVisitors ...@@ -110,7 +111,7 @@ namespace TestVisitors
[Test] [Test]
public void CycleTest() public void CycleTest()
{ {
Parser p = TestHelpers.Parse(@"begin var a; cycle 2+2/3 a:=2-2 end "); Parser p = Parse(@"begin var a3; cycle 2+2/3 a3:=2-2 end ");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var exprMeter = new ExprComplexityVisitor(); var exprMeter = new ExprComplexityVisitor();
p.root.Visit(exprMeter); p.root.Visit(exprMeter);
...@@ -121,7 +122,7 @@ namespace TestVisitors ...@@ -121,7 +122,7 @@ namespace TestVisitors
[Test] [Test]
public void WriteTest() public void WriteTest()
{ {
Parser p = TestHelpers.Parse(@"begin write(2+2-3) end "); Parser p = Parse(@"begin write(2+2-3) end ");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var exprMeter = new ExprComplexityVisitor(); var exprMeter = new ExprComplexityVisitor();
p.root.Visit(exprMeter); p.root.Visit(exprMeter);
...@@ -135,7 +136,7 @@ namespace TestVisitors ...@@ -135,7 +136,7 @@ namespace TestVisitors
[Test] [Test]
public void OneLoopTest() public void OneLoopTest()
{ {
Parser p = TestHelpers.Parse(@"begin cycle 2 write(2) end"); Parser p = Parse(@"begin cycle 2 write(2) end");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var loopCounter = new MaxNestCyclesVisitor(); var loopCounter = new MaxNestCyclesVisitor();
p.root.Visit(loopCounter); p.root.Visit(loopCounter);
...@@ -145,7 +146,7 @@ namespace TestVisitors ...@@ -145,7 +146,7 @@ namespace TestVisitors
[Test] [Test]
public void ThreeLoopsTest() public void ThreeLoopsTest()
{ {
Parser p = TestHelpers.Parse(@"begin cycle 2 cycle 3 cycle 4 write(5) end"); Parser p = Parse(@"begin cycle 2 cycle 3 cycle 4 write(5) end");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var loopCounter = new MaxNestCyclesVisitor(); var loopCounter = new MaxNestCyclesVisitor();
p.root.Visit(loopCounter); p.root.Visit(loopCounter);
...@@ -155,14 +156,14 @@ namespace TestVisitors ...@@ -155,14 +156,14 @@ namespace TestVisitors
[Test] [Test]
public void LoopTreeTest() public void LoopTreeTest()
{ {
Parser p = TestHelpers.Parse(@"begin var a; Parser p = Parse(@"begin var a6;
cycle 2 cycle 2
cycle 1 cycle 1
a:=2; a6:=2;
cycle 3 cycle 3
cycle 5 cycle 5
cycle 6 cycle 6
a:=5; a6:=5;
cycle 4 cycle 4
write(5) write(5)
end"); end");
...@@ -177,14 +178,14 @@ namespace TestVisitors ...@@ -177,14 +178,14 @@ namespace TestVisitors
} }
[TestFixture] [TestFixture]
public class TestVariableRenamer public class TestVariableRenamer: ParserTest
{ {
[Test] [Test]
public void SimpleTest() public void SimpleTest()
{ {
Parser p = TestHelpers.Parse(@"begin var a; a:=2; a:=a+2*a-3; a:=3; end "); Parser p = Parse(@"begin var a4; a4:=2; a4:=a4+2*a4-3; a4:=3; end ");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var varRenamer = new ChangeVarIdVisitor("a", "z"); var varRenamer = new ChangeVarIdVisitor("a4", "z");
p.root.Visit(varRenamer); p.root.Visit(varRenamer);
var varCounter = new CommonlyUsedVarVisitor(); var varCounter = new CommonlyUsedVarVisitor();
...@@ -194,12 +195,12 @@ namespace TestVisitors ...@@ -194,12 +195,12 @@ namespace TestVisitors
} }
[TestFixture] [TestFixture]
public class TestIfCycleNest public class TestIfCycleNest: ParserTest
{ {
[Test] [Test]
public void FirstTest() public void FirstTest()
{ {
Parser p = TestHelpers.Parse(@"begin var a; cycle 3 if 1 then cycle 4 a := 1 end "); Parser p = Parse(@"begin var a5; cycle 3 if 1 then cycle 4 a5 := 1 end ");
Assert.IsTrue(p.Parse()); Assert.IsTrue(p.Parse());
var nestWalker = new MaxIfCycleNestVisitor(); var nestWalker = new MaxIfCycleNestVisitor();
p.root.Visit(nestWalker); p.root.Visit(nestWalker);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment