public void EqualBoolean_Element_CheckParametersPassedDown()
        {
            var lhs = Utilities.GetBoolLitExpression();
            var rhs = Utilities.GetBoolLitExpression();

            List <object> parameters     = Utilities.GetParameterList(4);
            List <object> expectedParams = parameters;
            var           expression     = new EqualExpression(lhs, rhs, 0, 0);

            expression.Type = TypeEnum.Element;
            IInterpreterBoolean parent      = Substitute.For <IInterpreterBoolean>();
            List <object>       lhsParams   = new List <object>();
            List <object>       rhsParams   = new List <object>();
            Element             testElement = new Element(17);

            parent.DispatchElement(lhs, Arg.Do <List <object> >(x => lhsParams = x)).Returns(testElement);
            parent.DispatchElement(rhs, Arg.Do <List <object> >(x => rhsParams = x)).Returns(testElement);

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            booleanHelper.EqualBoolean(expression, parameters);

            Assert.AreEqual(expectedParams, lhsParams);
            Assert.AreEqual(expectedParams, rhsParams);
        }
        public static BooleanHelper GetBooleanHelper(IInterpreterBoolean interpreter)
        {
            BooleanHelper booleanHelper = new BooleanHelper();

            booleanHelper.SetInterpreter(interpreter);
            return(booleanHelper);
        }
        public void LiteralBoolean_BooleanLiteralExpression_ReturnedCorrectValue(bool value, bool expected)
        {
            BooleanLiteralExpression e             = new BooleanLiteralExpression(value, 0, 0);
            IInterpreterBoolean      parent        = Substitute.For <IInterpreterBoolean>();
            BooleanHelper            booleanHelper = Utilities.GetBooleanHelper(parent);

            bool result = booleanHelper.LiteralBoolean(e);

            Assert.AreEqual(expected, result);
        }
        public void NotBoolean_CorrectValuesReturned(bool input, bool expected)
        {
            BooleanLiteralExpression child = Utilities.GetBoolLitExpression(input);

            var expr = new NotExpression(child, 0, 0);
            IInterpreterBoolean parent = Substitute.For <IInterpreterBoolean>();

            parent.DispatchBoolean(child, Arg.Any <List <object> >()).Returns(input);

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            bool res = booleanHelper.NotBoolean(expr, new List <object>());

            Assert.AreEqual(expected, res);
        }
        public void LessBoolean_Real_CorrectValuesReturned(double lhsValue, double rhsValue, bool expected)
        {
            var lhs = Utilities.GetRealLitExpression();
            var rhs = Utilities.GetRealLitExpression();

            var expression             = new LessExpression(lhs, rhs, 0, 0);
            IInterpreterBoolean parent = Substitute.For <IInterpreterBoolean>();

            parent.DispatchReal(lhs, Arg.Any <List <object> >()).Returns(lhsValue);
            parent.DispatchReal(rhs, Arg.Any <List <object> >()).Returns(rhsValue);

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            bool res = booleanHelper.LessBoolean(expression, new List <object>());

            Assert.AreEqual(expected, res);
        }
        public void AndBoolean__CorrectValuesReturned(bool lhsValue, bool rhsValue, bool expected)
        {
            BooleanLiteralExpression lhs = new BooleanLiteralExpression(lhsValue, 0, 0);
            BooleanLiteralExpression rhs = new BooleanLiteralExpression(rhsValue, 0, 0);

            AndExpression       andExpr = new AndExpression(lhs, rhs, 0, 0);
            IInterpreterBoolean parent  = Substitute.For <IInterpreterBoolean>();

            parent.DispatchBoolean(lhs, Arg.Any <List <object> >()).Returns(lhsValue);
            parent.DispatchBoolean(rhs, Arg.Any <List <object> >()).Returns(rhsValue);

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            bool res = booleanHelper.AndBoolean(andExpr, new List <object>());

            Assert.AreEqual(expected, res);
        }
        public void SubsetBoolean_GivenSetAndSet_CorrectValueReturned(int[] a, int[] b, bool expected)
        {
            Set              lhsValue   = GetSetWith1DElements(a);
            Set              rhsValue   = GetSetWith1DElements(b);
            SetExpression    lhs        = GetSetInit();
            SetExpression    rhs        = GetSetInit();
            SubsetExpression expression = new SubsetExpression(lhs, rhs, 0, 0);

            IInterpreterBoolean parent = Substitute.For <IInterpreterBoolean>();

            DispatchSetForParent(lhsValue, lhs, parent);
            DispatchSetForParent(rhsValue, rhs, parent);
            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            bool res = booleanHelper.SubsetBoolean(expression, new List <object>());

            Assert.AreEqual(expected, res);
        }
        public void NotEqualBoolean_Bool_CorrectValuesReturned(bool lhsValue, bool rhsValue, bool expected)
        {
            var lhs = Utilities.GetRealLitExpression();
            var rhs = Utilities.GetRealLitExpression();

            var expression = new NotEqualExpression(lhs, rhs, 0, 0);

            expression.Type = TypeEnum.Boolean;
            IInterpreterBoolean parent = Substitute.For <IInterpreterBoolean>();

            parent.DispatchBoolean(lhs, Arg.Any <List <object> >()).Returns(lhsValue);
            parent.DispatchBoolean(rhs, Arg.Any <List <object> >()).Returns(rhsValue);

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            bool res = booleanHelper.NotEqualBoolean(expression, new List <object>());

            Assert.AreEqual(expected, res);
        }
        public void NotBoolean__CheckParametersPassedDown()
        {
            BooleanLiteralExpression child = Utilities.GetBoolLitExpression();

            List <object>       parameters     = Utilities.GetParameterList(4);
            List <object>       expectedParams = parameters;
            var                 expression     = new NotExpression(child, 0, 0);
            IInterpreterBoolean parent         = Substitute.For <IInterpreterBoolean>();
            List <object>       lhsParams      = new List <object>();
            List <object>       rhsParams      = new List <object>();

            parent.DispatchBoolean(child, Arg.Do <List <object> >(x => lhsParams = x));

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            booleanHelper.NotBoolean(expression, parameters);

            Assert.AreEqual(expectedParams, lhsParams);
        }
        public void EqualBoolean_Function_CorrectValuesReturned(int lhsValue, int rhsValue, bool expected)
        {
            var lhs = Utilities.GetFuncCallExpresssion();
            var rhs = Utilities.GetFuncCallExpresssion();

            EqualExpression expression = new EqualExpression(lhs, rhs, 0, 0);

            expression.Type = TypeEnum.Function;
            IInterpreterBoolean parent = Substitute.For <IInterpreterBoolean>();

            parent.DispatchFunction(lhs, Arg.Any <List <object> >()).Returns(new Function(lhsValue));
            parent.DispatchFunction(rhs, Arg.Any <List <object> >()).Returns(new Function(rhsValue));

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            bool res = booleanHelper.EqualBoolean(expression, new List <object>());

            Assert.AreEqual(expected, res);
        }
        public void LessBoolean_Real_CheckParametersPassedDown()
        {
            var lhs = Utilities.GetRealLitExpression();
            var rhs = Utilities.GetRealLitExpression();

            List <object>       parameters     = Utilities.GetParameterList(4);
            List <object>       expectedParams = parameters;
            var                 expression     = new LessExpression(lhs, rhs, 0, 0);
            IInterpreterBoolean parent         = Substitute.For <IInterpreterBoolean>();
            List <object>       lhsParams      = new List <object>();
            List <object>       rhsParams      = new List <object>();

            parent.DispatchReal(lhs, Arg.Do <List <object> >(x => lhsParams = x));
            parent.DispatchReal(rhs, Arg.Do <List <object> >(x => rhsParams = x));

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            booleanHelper.LessBoolean(expression, parameters);

            Assert.AreEqual(expectedParams, lhsParams);
            Assert.AreEqual(expectedParams, rhsParams);
        }
        public void EqualBoolean_Set_CorrectValuesReturned(int leftDataRow, int rightDataRow, bool expected)
        {
            Set lhsValue = GetSet(leftDataRow);
            Set rhsValue = GetSet(rightDataRow);

            var lhs = Utilities.GetRealLitExpression();
            var rhs = Utilities.GetRealLitExpression();

            EqualExpression expression = new EqualExpression(lhs, rhs, 0, 0);

            expression.Type = TypeEnum.Set;
            IInterpreterBoolean parent = Substitute.For <IInterpreterBoolean>();

            parent.DispatchSet(lhs, Arg.Any <List <object> >()).Returns(lhsValue);
            parent.DispatchSet(rhs, Arg.Any <List <object> >()).Returns(rhsValue);

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            bool res = booleanHelper.EqualBoolean(expression, new List <object>());

            Assert.AreEqual(expected, res);
        }
        public void EqualBoolean_Element_CorrectValuesReturned(int[] a, int[] b, bool expected)
        {
            Element lhsValue = new Element(a.ToList());
            Element rhsValue = new Element(b.ToList());

            var lhs = Utilities.GetRealLitExpression();
            var rhs = Utilities.GetRealLitExpression();

            EqualExpression expression = new EqualExpression(lhs, rhs, 0, 0);

            expression.Type = TypeEnum.Element;
            IInterpreterBoolean parent = Substitute.For <IInterpreterBoolean>();

            parent.DispatchElement(lhs, Arg.Any <List <object> >()).Returns(lhsValue);
            parent.DispatchElement(rhs, Arg.Any <List <object> >()).Returns(rhsValue);

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            bool res = booleanHelper.EqualBoolean(expression, new List <object>());

            Assert.AreEqual(expected, res);
        }
        public void NotEqualBoolean_Function_CheckParametersPassedDown()
        {
            var lhs = Utilities.GetFuncCallExpresssion();
            var rhs = Utilities.GetFuncCallExpresssion();

            List <object> parameters     = Utilities.GetParameterList(4);
            List <object> expectedParams = parameters;
            var           expression     = new NotEqualExpression(lhs, rhs, 0, 0);

            expression.Type = TypeEnum.Function;
            IInterpreterBoolean parent    = Substitute.For <IInterpreterBoolean>();
            List <object>       lhsParams = new List <object>();
            List <object>       rhsParams = new List <object>();

            parent.DispatchFunction(lhs, Arg.Do <List <object> >(x => lhsParams = x)).Returns(new Function(0));
            parent.DispatchFunction(rhs, Arg.Do <List <object> >(x => rhsParams = x)).Returns(new Function(0));

            BooleanHelper booleanHelper = Utilities.GetBooleanHelper(parent);

            booleanHelper.NotEqualBoolean(expression, parameters);

            Assert.AreEqual(expectedParams, lhsParams);
            Assert.AreEqual(expectedParams, rhsParams);
        }
 private static void DispatchSetForParent(Set setValue, SetExpression setExpression, IInterpreterBoolean parent)
 {
     parent.DispatchSet(setExpression, Arg.Any <List <object> >()).Returns(setValue);
 }
 private static void DispatchElementForParent(Element elementValue, ElementExpression elementExpression, IInterpreterBoolean parent)
 {
     parent.DispatchElement(elementExpression, Arg.Any <List <object> >()).Returns(elementValue);
 }
        public static BooleanHelper GetBooleanHelper(IInterpreterBoolean interpreter, AST ast)
        {
            BooleanHelper booleanHelper = GetBooleanHelper(interpreter);

            return(booleanHelper);
        }
 public void SetInterpreter(IInterpreterBoolean interpreter)
 {
     _interpreter = interpreter;
 }