Exemplo n.º 1
0
        public Set IntersectionSet(IntersectionExpression node, List <object> parameters)
        {
            Set leftSet  = _interpreter.DispatchSet(node.Children[0], parameters);
            Set rightSet = _interpreter.DispatchSet(node.Children[1], parameters);

            HashSet <Element> set = leftSet.SetCopy;

            set.IntersectWith(rightSet.Elements);
            return(new Set(set));
        }
Exemplo n.º 2
0
 public Set DispatchSet(ExpressionNode node, List <Object> parameters)
 {
     return(node switch
     {
         SetExpression e => _setHelper.SetExpression(e, parameters),
         UnionExpression e => _setHelper.UnionSet(e, parameters),
         IntersectionExpression e => _setHelper.IntersectionSet(e, parameters),
         SubtractionExpression e => _setHelper.SubtractionSet(e, parameters),
         IdentifierExpression e => _genericHelper.Identifier <Set>(e, parameters),
         FunctionCallExpression e => _genericHelper.FunctionCall <Set>(e, parameters),
         VerticesGraphField e => _setHelper.VerticesField(e, parameters),
         EdgesGraphField e => _setHelper.EdgesField(e, parameters),
         EmptySetLiteralExpression e => _setHelper.EmptySetLiteral(e, parameters),
         _ => throw new UnimplementedInterpreterException(node, "DispatctSet")
     });
        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);
        }
Exemplo n.º 4
0
        public void Clone_ReturnsNewConcatenationInstanceWithSameValues()
        {
            var expression = Substitute.For <IExpression>();
            var intersect  = new IntersectionExpression(new List <IExpression> {
                expression
            }, _random)
            {
                RepeatRange = new IntegerInterval()
            };

            intersect.RepeatRange.TrySetValue(1, 3);

            var result = intersect.Clone();

            Assert.AreNotEqual(intersect, result);
            Assert.AreEqual(intersect.RepeatRange.Start, result.RepeatRange.Start);
            Assert.AreEqual(intersect.RepeatRange.End, result.RepeatRange.End);
            expression.Received(1).Clone();
        }