public void ConstructorTest()
        {
            // Act.
            var expression = new OneInTwoOutExpression(ExpressionNodeType.SetChecklistData);

            // Assert.
            Assert.AreEqual(ExpressionNodeType.SetChecklistData, expression.Type);
            Assert.IsNotNull(expression.ConnectorIn);
            Assert.IsNotNull(expression.Connector1Out);
            Assert.IsNotNull(expression.Connector2Out);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="OneInTwoOutExpressionNode"/> class.
        /// </summary>
        /// <param name="diagramViewModel">
        /// The diagram view model.
        /// </param>
        /// <param name="expressionObject">
        /// The expression object.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// The <paramref name="expressionObject"/> parameter is null.
        /// </exception>
        public OneInTwoOutExpressionNode(IDiagramViewModel diagramViewModel, OneInTwoOutExpression expressionObject)
            : base(expressionObject)
        {
            if (expressionObject == null)
                throw new ArgumentNullException("expressionObject");

            _diagramViewModel = diagramViewModel;

            ConnectorIn = new ExpressionConnectorViewModel(new ExpressionConnector(ConnectorType.In, expressionObject.ConnectorIn), _diagramViewModel);
            Connector1Out = new ExpressionConnectorViewModel(new ExpressionConnector(ConnectorType.Out, expressionObject.Connector1Out), _diagramViewModel);
            Connector2Out = new ExpressionConnectorViewModel(new ExpressionConnector(ConnectorType.Out, expressionObject.Connector2Out), _diagramViewModel);
        }
        public void Clone_Returns_OneInTwoOutExpressionNode()
        {
            // Arrange.
            var diagramViewModel = Mock.Create<IDiagramViewModel>(Behavior.Loose);
            var expression = new OneInTwoOutExpression();
            var node = new OneInTwoOutExpressionNode(diagramViewModel, expression);

            // Act.
            var clone = node.Clone() as OneInTwoOutExpressionNode;

            // Assert.
            Assert.IsNotNull(clone);
        }
        public void ConstructorShouldInitializeConnectors()
        {
            // Arrange.
            var diagramViewModel = Mock.Create<IDiagramViewModel>(Behavior.Loose);
            var expression = new OneInTwoOutExpression();

            // Act.
            var node = new OneInTwoOutExpressionNode(diagramViewModel, expression);

            // Assert.
            Assert.IsNotNull(node.ConnectorIn);
            Assert.IsNotNull(node.Connector1Out);
            Assert.IsNotNull(node.Connector2Out);
        }
        public void GetConnectors_Returns_ConnectorCollection()
        {
            // Arrange.
            var expression = new OneInTwoOutExpression();

            // Act.
            var connectors = expression.GetConnectors().ToList();

            // Assert.
            Assert.AreEqual(3, connectors.Count);
            Assert.IsTrue(connectors.Contains(expression.ConnectorIn));
            Assert.IsTrue(connectors.Contains(expression.Connector1Out));
            Assert.IsTrue(connectors.Contains(expression.Connector2Out));
        }
        public void GetConnectors_Returns_AllConnectors()
        {
            // Arrange.
            var diagramViewModel = Mock.Create<IDiagramViewModel>(Behavior.Loose);
            var expression = new OneInTwoOutExpression();
            var node = new OneInTwoOutExpressionNode(diagramViewModel, expression);

            // Act.
            var connectors = node.GetConnectors().ToList();

            // Assert.
            Assert.AreEqual(3, connectors.Count);
            Assert.IsTrue(connectors.Contains(node.ConnectorIn));
            Assert.IsTrue(connectors.Contains(node.Connector1Out));
            Assert.IsTrue(connectors.Contains(node.Connector2Out));
        }
        public void WhenNodePositionChanges_ConnectorPositionsAreUpdated()
        {
            // Arrange.
            const double Left = 123.0;
            const double Top = 456.0;

            var diagramViewModel = Mock.Create<IDiagramViewModel>(Behavior.Loose);
            var expression = new OneInTwoOutExpression();
            var node = new OneInTwoOutExpressionNode(diagramViewModel, expression);

            // Act.
            node.Left = Left;

            // Assert.
            Assert.AreEqual(Left, node.ConnectorIn.Left);
            Assert.AreEqual(Left, node.Connector1Out.Left);
            Assert.AreEqual(Left, node.Connector2Out.Left);

            // Act.
            node.Top = Top;

            // Assert.
            Assert.AreEqual(Top, node.ConnectorIn.Top);
            Assert.AreEqual(Top, node.Connector1Out.Top);
            Assert.AreEqual(Top, node.Connector2Out.Top);
        }
Esempio n. 8
0
        /// <summary>
        /// Copies members to clone.
        /// </summary>
        /// <param name="clone">
        /// The clone.
        /// </param>
        protected void CopyMembers(OneInTwoOutExpression clone)
        {
            clone.ExpressionName = ExpressionName;
            clone.FunctionName = FunctionName;
            clone.Width = Width;
            clone.Height = Height;
            clone.Top = Top;
            clone.Left = Left;

            ConnectorIn.Clone(clone.ConnectorIn);
            Connector1Out.Clone(clone.Connector1Out);
            Connector2Out.Clone(clone.Connector2Out);
        }
Esempio n. 9
0
        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <returns>The clone.</returns>
        public override ExpressionObjectBase Clone()
        {
            var clone = new OneInTwoOutExpression(Type);
            CopyMembers(clone);

            return clone;
        }
Esempio n. 10
0
 /// <summary>
 /// Adds the field node.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="diagramViewModel">The diagram view model.</param>
 private static void AddFieldNode(OneInTwoOutExpression item, IDiagramViewModel diagramViewModel)
 {
     var node = new OneInTwoOutExpressionNode(diagramViewModel, item);
     diagramViewModel.Items.Add(new NodeViewModel<OneInTwoOutExpressionNode, ExpressionConnection>(node, diagramViewModel));
 }
        private static OneInTwoOutExpression CreateValidExpression()
        {
            var source = new ConstantExpression();
            var destination = new DestinationFieldList();
            var destinationField1 = new DestinationField(destination);
            var destinationField2 = new DestinationField(destination);
            var expression = new OneInTwoOutExpression();
            expression.ConnectorIn.ConnectedTo = source.ConnectorOut;
            expression.Connector1Out.ConnectedTo = destinationField1.ConnectorIn;
            expression.Connector2Out.ConnectedTo = destinationField2.ConnectorIn;

            return expression;
        }
        public void SerializationTest()
        {
            // Arrange.
            const string ExpressionName = "Test Expression";
            const string FunctionName = "Test Function";
            const double Left = 100.0;
            const double Top = 200.0;
            const double Width = 300.0;
            const double Height = 400.0;

            var expression = new OneInTwoOutExpression(ExpressionNodeType.SetChecklistData)
                                 {
                                     ExpressionName = ExpressionName,
                                     FunctionName = FunctionName,
                                     Left = Left,
                                     Top = Top,
                                     Width = Width,
                                     Height = Height,
                                     ConnectorIn = { Name = "in", DataType = NodeDataType.Array, ElementType = NodeDataType.Double },
                                     Connector1Out = { Name = "out1", DataType = NodeDataType.Checklist },
                                     Connector2Out = { Name = "out2", DataType = NodeDataType.Double }
                                 };
            var expressionSerializer = CreateExpressionSerializer();

            // Act.
            var xml = expressionSerializer.Serialize(new ExpressionContainer(new List<IExpressionObjectBase> { expression }));
            var expressionContainer = expressionSerializer.Deserialize(xml);
            var newExpression = expressionContainer.Expressions.OfType<OneInTwoOutExpression>().FirstOrDefault();

            // Assert.
            Assert.IsNotNull(newExpression);
            Assert.AreEqual(ExpressionNodeType.SetChecklistData, newExpression.Type);
            Assert.AreEqual(ExpressionName, newExpression.ExpressionName);
            Assert.AreEqual(FunctionName, newExpression.FunctionName);
            Assert.AreEqual(Left, newExpression.Left);
            Assert.AreEqual(Top, newExpression.Top);
            Assert.AreEqual(Width, newExpression.Width);
            Assert.AreEqual(Height, newExpression.Height);

            Assert.AreEqual("in", newExpression.ConnectorIn.Name);
            Assert.AreEqual(NodeDataType.Array, newExpression.ConnectorIn.DataType);
            Assert.AreEqual(NodeDataType.Double, newExpression.ConnectorIn.ElementType);

            Assert.AreEqual("out1", newExpression.Connector1Out.Name);
            Assert.AreEqual(NodeDataType.Checklist, newExpression.Connector1Out.DataType);

            Assert.AreEqual("out2", newExpression.Connector2Out.Name);
            Assert.AreEqual(NodeDataType.Double, newExpression.Connector2Out.DataType);
        }
        public void Clone_Returns_OneInTwoOutExpression()
        {
            // Arrange.
            const string ExpressionName = "Test Expression";
            const string FunctionName = "Test Function";
            const double Left = 100.0;
            const double Top = 200.0;
            const double Width = 300.0;
            const double Height = 400.0;

            var expression = new OneInTwoOutExpression(ExpressionNodeType.SetChecklistData)
                                 {
                                     ExpressionName = ExpressionName,
                                     FunctionName = FunctionName,
                                     Left = Left,
                                     Top = Top,
                                     Width = Width,
                                     Height = Height
                                 };

            // Act.
            var clone = expression.Clone() as OneInTwoOutExpression;

            // Assert.
            Assert.IsNotNull(clone);
            Assert.AreEqual(ExpressionNodeType.SetChecklistData, clone.Type);
            Assert.AreEqual(ExpressionName, clone.ExpressionName);
            Assert.AreEqual(FunctionName, clone.FunctionName);
            Assert.AreEqual(Left, clone.Left);
            Assert.AreEqual(Top, clone.Top);
            Assert.AreEqual(Width, clone.Width);
            Assert.AreEqual(Height, clone.Height);
        }