public void InValidBoolComparisonTest()
        {
            SymbolTable.Add("TestBool", QValueType.Boolean);
            var left           = new IdentifierNode(new Location(0, 0), "TestBool");
            var right          = new LiteralNode(new Location(0, 0), "false", QValueType.Integer);
            var comparisonNode = new LogicalExpressionNode(new Location(0, 0), left, LogicalOperator.Or, right);

            var analyser = new StatementTypeAnalyser();
            var result   = analyser.Analyse(comparisonNode);

            Assert.IsFalse(result);
        }
        public void InValidArthimetricComparisonTest()
        {
            SymbolTable.Add("blah blah", QValueType.Text);
            var x = new IdentifierNode(new Location(0, 0), "x");

            var five            = new LiteralNode(new Location(0, 0), "5", QValueType.Integer);
            var arthimetricNode = new ArthimetricExpressionNode(new Location(0, 0), x, ArthimetricOperator.Mult, five);

            var analyser = new StatementTypeAnalyser();
            var result   = analyser.Analyse(arthimetricNode);

            Assert.IsFalse(result);
        }
        public void IntAndDoubleMultiplicationTest()
        {
            SymbolTable.Add("x", QValueType.Integer);
            var x = new IdentifierNode(new Location(0, 0), "x");

            var five            = new LiteralNode(new Location(0, 0), "5.0", QValueType.Double);
            var arthimetricNode = new ArthimetricExpressionNode(new Location(0, 0), x, ArthimetricOperator.Mult, five);

            var analyser = new StatementTypeAnalyser();
            var result   = analyser.Analyse(arthimetricNode);

            Assert.IsTrue(result);
        }
        public void ValidArthimetricComparisonTest()
        {
            SymbolTable.Add("x", QValueType.DOUBLE);
            var x = new IdentifierNode(new Location(0, 0), "x");

            var five            = new LiteralNode(new Location(0, 0), "5", QValueType.INTEGER);
            var arthimetricNode = new ArthimetricExpressionNode(new Location(0, 0), x, ArthimetricOperator.MULT, five);

            var analyser = new StatementTypeAnalyser();
            var result   = analyser.Analyse(arthimetricNode);

            Assert.IsTrue(result);
        }
        public void InValidBooleanComparisonTest()
        {
            SymbolTable.Add("x", QValueType.Boolean);
            var x = new IdentifierNode(new Location(0, 0), "x");

            SymbolTable.Add("y", QValueType.Boolean);
            var y = new IdentifierNode(new Location(0, 0), "y");

            var comparisonNode = new ComparisonExpressionNode(new Location(0, 0), x, ComparisonOperator.LessEqual, y);
            var analyser       = new StatementTypeAnalyser();
            var result         = analyser.Analyse(comparisonNode);

            Assert.IsFalse(result);
        }
        public void InValidComparisonWithArthimetricTest()
        {
            SymbolTable.Add("TestBool", QValueType.Boolean);
            var left = new IdentifierNode(new Location(0, 0), "TestBool");

            var five           = new LiteralNode(new Location(0, 0), "5", QValueType.Integer);
            var ten            = new LiteralNode(new Location(0, 0), "blah blah", QValueType.Text);
            var right          = new ComparisonExpressionNode(new Location(0, 0), five, ComparisonOperator.GreaterEqual, ten);
            var comparisonNode = new LogicalExpressionNode(new Location(0, 0), left, LogicalOperator.Or, right);

            var analyser = new StatementTypeAnalyser();
            var result   = analyser.Analyse(comparisonNode);

            Assert.IsFalse(result);
        }
        public void ValidComparisonWithArthimetricTest()
        {
            SymbolTable.Add("TestBool", QValueType.BOOLEAN);
            var left = new IdentifierNode(new Location(0, 0), "TestBool");

            var five           = new LiteralNode(new Location(0, 0), "5", QValueType.INTEGER);
            var ten            = new LiteralNode(new Location(0, 0), "10", QValueType.INTEGER);
            var right          = new ComparisonExpressionNode(new Location(0, 0), five, ComparisonOperator.GE, ten);
            var comparisonNode = new LogicalExpressionNode(new Location(0, 0), left, LogicalOperator.OR, right);

            var analyser = new StatementTypeAnalyser();
            var result   = analyser.Analyse(comparisonNode);

            Assert.IsTrue(result);
        }