コード例 #1
0
        private SetHelper SetUpHelper(IInterpreterSet parent)
        {
            SetHelper setHelper = new SetHelper();

            setHelper.SetInterpreter(parent);
            return(setHelper);
        }
コード例 #2
0
        public void SubtractionSet_f_f(int[,] left, int[,] right, int[,] expected)
        {
            IInterpreterSet       parent    = Substitute.For <IInterpreterSet>();
            SetHelper             setHelper = SetUpHelper(parent);
            SetExpression         lhsExpr   = new SetExpression(null, null, null, 1, 1);
            SetExpression         rhsExpr   = new SetExpression(null, null, null, 1, 1);
            SubtractionExpression expr      = new SubtractionExpression(lhsExpr, rhsExpr, 0, 0);

            parent.DispatchSet(lhsExpr, Arg.Any <List <object> >()).Returns(getSetFrom2dArray(left));
            parent.DispatchSet(rhsExpr, Arg.Any <List <object> >()).Returns(getSetFrom2dArray(right));

            Set res = setHelper.SubtractionSet(expr, new List <object>());

            res.Should().BeEquivalentTo(getSetFrom2dArray(expected));
        }
コード例 #3
0
        public void UnionSet_SetsWithVaryingNumberOfElementIndices_(Set left, Set right, Set expected)
        {
            IInterpreterSet parent           = Substitute.For <IInterpreterSet>();
            SetHelper       setHelper        = SetUpHelper(parent);
            SetExpression   leftExpr         = new SetExpression(null, null, null, 0, 0);
            SetExpression   rightExpr        = new SetExpression(null, null, null, 0, 0);
            UnionExpression intersectionExpr = new UnionExpression(leftExpr, rightExpr, 0, 0);

            parent.DispatchSet(leftExpr, Arg.Any <List <object> >()).Returns(left);
            parent.DispatchSet(rightExpr, Arg.Any <List <object> >()).Returns(right);

            Set result = setHelper.UnionSet(intersectionExpr, new List <object>());

            result.Should().BeEquivalentTo(expected);
        }
コード例 #4
0
        public void IntersectionSet_ValidInput_ReturnsCorrectSet(Set left, Set right, Set exp)
        {
            IInterpreterSet        parent           = Substitute.For <IInterpreterSet>();
            SetHelper              setHelper        = SetUpHelper(parent);
            SetExpression          leftExpr         = new SetExpression(null, null, null, 0, 0);
            SetExpression          rightExpr        = new SetExpression(null, null, null, 0, 0);
            IntersectionExpression intersectionExpr = new IntersectionExpression(leftExpr, rightExpr, 0, 0);

            parent.DispatchSet(leftExpr, Arg.Any <List <object> >()).Returns(left);
            parent.DispatchSet(rightExpr, Arg.Any <List <object> >()).Returns(right);

            Set result = setHelper.IntersectionSet(intersectionExpr, new List <object>());

            result.Should().BeEquivalentTo(exp);
        }
コード例 #5
0
        private List <BoundNode> GetBounds(IInterpreterSet parent, List <int> minValues, List <int> maxValues)
        {
            List <BoundNode> bounds = new List <BoundNode>();

            for (int i = 0; i < minValues.Count; i++)
            {
                IntegerLiteralExpression min = new IntegerLiteralExpression(minValues[i], 0, 0);
                IntegerLiteralExpression max = new IntegerLiteralExpression(maxValues[i], 0, 0);
                bounds.Add(new BoundNode(null, min, max, 0, 0));

                parent.DispatchInt(min, Arg.Any <List <object> >()).Returns(minValues[i]);
                parent.DispatchInt(max, Arg.Any <List <object> >()).Returns(maxValues[i]);
            }

            return(bounds);
        }
コード例 #6
0
        public void EdgesField_EdgesGraphFieldAndListOfObjects_ReturnsCorrectResult()
        {
            IdentifierExpression identifier = new IdentifierExpression("test", 0, 0);
            EdgesGraphField      input1     = new EdgesGraphField(identifier, 0, 0);
            List <Object>        list       = new List <Object>();
            Set   expected = new Set(new Element(1));
            Graph graph    = new Graph(null, expected, null, null);

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

            parent.DispatchGraph(identifier, Arg.Any <List <object> >()).Returns(graph);
            SetHelper setHelper = SetUpHelper(parent);

            Set res = setHelper.EdgesField(input1, list);

            res.Should().BeEquivalentTo(expected);
        }
コード例 #7
0
        public void SetExpression_f_f(List <int> min, List <int> max, List <List <object> > indexPairs)
        {
            IInterpreterSet  parent           = Substitute.For <IInterpreterSet>();
            SetHelper        setHelper        = SetUpHelper(parent);
            List <BoundNode> bounds           = GetBounds(parent, min, max);
            LessExpression   expr             = new LessExpression(null, null, 0, 0);
            SetExpression    setExpr          = new SetExpression(new ElementNode(null, null, 0, 0), bounds, expr, 0, 0);
            List <Element>   expectedElements = new List <Element>();

            for (int i = 0; i < indexPairs.Count; i++)
            {
                expectedElements.Add(new Element(indexPairs[i].ConvertAll(x => (int)x)));
            }
            Set expected = new Set(expectedElements);

            parent.DispatchBoolean(expr, Arg.Any <List <Object> >()).Returns(x => IsContained(indexPairs, (List <Object>)x[1]));

            Set result = setHelper.SetExpression(setExpr, new List <object>());

            result.Should().BeEquivalentTo(expected);
        }
コード例 #8
0
 public void SetInterpreter(IInterpreterSet interpreter)
 {
     _interpreter = interpreter;
 }