public void Check_ArithmeticExpression_Valid() { var parser = new Parser(); var program = new TestProgramBuilder() .WithTokens(TestSourceKey.Simple) .WithMainFunction() .Build(); var actual = parser.Check(program.Tokens); Assert.IsTrue(actual.IsValid); }
public void Check_ExpressionWithCycleWhileInCondition_Valid() { var parser = new Parser(); var program = new TestProgramBuilder() .WithTokens(TestSourceKey.CycleWhileInCondition) .WithMainFunction() .Build(); var actual = parser.Check(program.Tokens); Assert.IsTrue(actual.IsValid); }
public void GetTokensFromExpression_ExpressionWithCycleWhileInCondition_CorrectTokens() { var lexer = new Lexer(); var program = new TestProgramBuilder() .WithSource(TestSourceKey.CycleWhileInCondition) .WithTokens(TestSourceKey.CycleWhileInCondition) .Build(); var actual = lexer.GetTokensFromExpression(program.Source); Assert.AreEqual(program.Tokens, actual); }
public void Check_ExpressionWithSeveralReturns_Valid() { var parser = new Parser(); var program = new TestProgramBuilder() .WithTokens(TestSourceKey.SeveralReturnsWithFirstWorking) .WithMainFunction() .Build(); var actual = parser.Check(program.Tokens); Assert.IsTrue(actual.IsValid); }
public void GetTokensFromExpression_ArithmeticExpression_CorrectTokens() { var lexer = new Lexer(); var program = new TestProgramBuilder() .WithSource(TestSourceKey.Simple) .WithTokens(TestSourceKey.Simple) .Build(); var actual = lexer.GetTokensFromExpression(program.Source); Assert.AreEqual(program.Tokens, actual); }
public void GetTokensFromExpression_ExpressionWithTwoReturns_CorrectTokens() { var lexer = new Lexer(); var program = new TestProgramBuilder() .WithSource(TestSourceKey.SeveralReturnsWithFirstWorking) .WithTokens(TestSourceKey.SeveralReturnsWithFirstWorking) .Build(); var actual = lexer.GetTokensFromExpression(program.Source); Assert.AreEqual(program.Tokens, actual); }
public void Optimize_ArithmeticExpression_CorrectOptimization() { var triadsOptimizer = new TriadsOptimizer(); var program = new TestProgramBuilder() .WithTriads(TestSourceKey.Simple) .WithOptimizedTriads(TestSourceKey.Simple) .Build(); var actual = triadsOptimizer.Optimize(program.Triads, program.TriadsConditionIndexes); Assert.AreEqual(program.OptimizedTriads, actual); }
public void GetTriadsFromPolis_ExpressionWithCycleWhileInCondition_CorrectTriads() { var triadsConverter = new TriadsConverter(); var program = new TestProgramBuilder() .WithPolis(TestSourceKey.CycleWhileInCondition) .WithTriads(TestSourceKey.CycleWhileInCondition) .Build(); var actual = triadsConverter.GetTriadsFromPolis(program.Polis, program.PolisConditionIndexes, null); Assert.AreEqual(program.Triads, actual); Assert.AreEqual(program.TriadsConditionIndexes, triadsConverter.TriadsConditionIndexes); }
public void GetTriadsFromPolis_ExpressionWithSeveralReturns_CorrectTriads() { var triadsConverter = new TriadsConverter(); var program = new TestProgramBuilder() .WithPolis(TestSourceKey.SeveralReturnsWithFirstWorking) .WithTriads(TestSourceKey.SeveralReturnsWithFirstWorking) .Build(); var actual = triadsConverter.GetTriadsFromPolis(program.Polis, program.PolisConditionIndexes, null); Assert.AreEqual(program.Triads, actual); Assert.AreEqual(program.TriadsConditionIndexes, triadsConverter.TriadsConditionIndexes); }
public void Check_ProgramCodeWithGrammarMistake_NoOperation_Invalid() { var parser = new Parser(); var program = new TestProgramBuilder() .WithTokens(TestSourceKey.CycleWhile) .WithMainFunction() .WithGrammarMistake(TestGrammarMistakeType.NoOperation) .Build(); var actual = parser.Check(program.Tokens); Assert.IsFalse(actual.IsValid); }
public void Convert_ExpressionWithCycleWhileInCondition_CorrectPolis() { var syntacticalAnalyzer = new SyntacticalAnalyzer(); var program = new TestProgramBuilder() .WithTokens(TestSourceKey.CycleWhileInCondition) .WithPolis(TestSourceKey.CycleWhileInCondition) .Build(); var actual = syntacticalAnalyzer.Convert(program.Tokens); Assert.AreEqual(program.Polis, actual); Assert.AreEqual(program.PolisConditionIndexes, syntacticalAnalyzer.PolisConditionsIndexes); }
public void Convert_ExpressionWithSeveralReturns_CorrectPolis() { var syntacticalAnalyzer = new SyntacticalAnalyzer(); var program = new TestProgramBuilder() .WithTokens(TestSourceKey.SeveralReturnsWithFirstWorking) .WithPolis(TestSourceKey.SeveralReturnsWithFirstWorking) .Build(); var actual = syntacticalAnalyzer.Convert(program.Tokens); Assert.AreEqual(program.Polis, actual); Assert.AreEqual(program.PolisConditionIndexes, syntacticalAnalyzer.PolisConditionsIndexes); }
public void Check_TwoFunctions_Valid() { var parser = new Parser(); var program = new TestProgramBuilder() .WithTokens(TestSourceKey.SeveralReturnsWithFirstWorking) .WithMainFunction() .WithAnotherFunction(new TestProgramBuilder() .WithTokens(TestSourceKey.Simple) .WithFunction("func", "test", new [] { "a", "b" })) .Build(); var actual = parser.Check(program.Tokens); Assert.IsTrue(actual.IsValid); }