Exemplo n.º 1
0
        public void TestCreateNodeCommand()
        {
            // Create the command in completely unpredictable states. These
            // states should properly be serialized and deserialized across
            // two instances of the same command.
            //
            Guid   nodeId     = Guid.NewGuid();
            string name       = randomizer.Next().ToString();
            double x          = randomizer.NextDouble() * 1000;
            double y          = randomizer.NextDouble() * 1000;
            bool   defaultPos = randomizer.Next(2) == 0;
            bool   transfPos  = randomizer.Next(2) == 0;

            var cmdOne = new DynCmd.CreateNodeCommand(
                nodeId, name, x, y, defaultPos, transfPos);

            var cmdTwo = DuplicateAndCompare(cmdOne);

            Assert.AreEqual(cmdOne.NodeId, cmdTwo.NodeId);
            Assert.AreEqual(cmdOne.NodeName, cmdTwo.NodeName);
            Assert.AreEqual(cmdOne.X, cmdTwo.X, 0.000001);
            Assert.AreEqual(cmdOne.Y, cmdTwo.Y, 0.000001);
            Assert.AreEqual(cmdOne.DefaultPosition, cmdTwo.DefaultPosition);
            Assert.AreEqual(cmdOne.TransformCoordinates, cmdTwo.TransformCoordinates);

            // A RecordableCommand should be created in "recording mode" by default,
            // and only deserialized commands should be marked as "in playback mode".
            Assert.AreEqual(false, cmdOne.IsInPlaybackMode);
            Assert.AreEqual(true, cmdTwo.IsInPlaybackMode);
        }
Exemplo n.º 2
0
        public void Defect_MAGN_3599()
        {
            // Create the initial code block node.
            var codeBlockNode = CreateCodeBlockNode();

            UpdateCodeBlockNodeContent(codeBlockNode, @"Circle.ByCenterPointRadius(pt,5)");

            // Create the Point.Origin node.
            var nodeGuid = Guid.NewGuid();
            var command  = new DynCmd.CreateNodeCommand(
                nodeGuid, "Point.Origin", 0, 0, true, false);

            ViewModel.ExecuteCommand(command);
            var workspace       = ViewModel.Model.CurrentWorkspace;
            var pointOriginNode = workspace.NodeFromWorkspace <DSFunction>(nodeGuid);

            // Connect the two nodes
            ConnectorModel connector = ConnectorModel.Make(workspace, pointOriginNode, codeBlockNode,
                                                           0, 0, PortType.INPUT);

            workspace.Connectors.Add(connector);

            Assert.AreEqual(1, codeBlockNode.InPortData.Count);

            // Update the code block node
            UpdateCodeBlockNodeContent(codeBlockNode, "pt = Point.ByCoordinates(0,0,0);\nCircle.ByCenterPointRadius(pt,5)");

            Assert.AreEqual(0, codeBlockNode.InPortData.Count);
        }
Exemplo n.º 3
0
        private CodeBlockNodeModel CreateCodeBlockNode()
        {
            var nodeGuid = Guid.NewGuid();
            var command  = new DynCmd.CreateNodeCommand(
                nodeGuid, "Code Block", 0, 0, true, false);

            Controller.DynamoViewModel.ExecuteCommand(command);
            var workspace = Controller.DynamoModel.CurrentWorkspace;
            var cbn       = workspace.NodeFromWorkspace <CodeBlockNodeModel>(nodeGuid);

            Assert.IsNotNull(cbn);
            return(cbn);
        }
Exemplo n.º 4
0
        private CodeBlockNodeModel CreateCodeBlockNode()
        {
            var nodeGuid = Guid.NewGuid();
            var command = new DynCmd.CreateNodeCommand(
                nodeGuid, "Code Block", 0, 0, true, false);

            Controller.DynamoViewModel.ExecuteCommand(command);
            var workspace = Controller.DynamoModel.CurrentWorkspace;
            var cbn = workspace.NodeFromWorkspace<CodeBlockNodeModel>(nodeGuid);

            Assert.IsNotNull(cbn);
            return cbn;
        }
Exemplo n.º 5
0
        public void Defect_MAGN_3599()
        {
            // Create the initial code block node.
            var codeBlockNode = CreateCodeBlockNode();
            UpdateCodeBlockNodeContent(codeBlockNode, @"Circle.ByCenterPointRadius(pt,5)");

            // Create the Point.Origin node.
            var nodeGuid = Guid.NewGuid();
            var command = new DynCmd.CreateNodeCommand(
                nodeGuid, "Point.Origin", 0, 0, true, false);

            ViewModel.ExecuteCommand(command);
            var workspace = ViewModel.Model.CurrentWorkspace;
            var pointOriginNode = workspace.NodeFromWorkspace<DSFunction>(nodeGuid);

            // Connect the two nodes
            ConnectorModel connector = ConnectorModel.Make(workspace, pointOriginNode, codeBlockNode,
                0, 0, PortType.INPUT);
            workspace.Connectors.Add(connector);

            Assert.AreEqual(1, codeBlockNode.InPortData.Count);

            // Update the code block node
            UpdateCodeBlockNodeContent(codeBlockNode, "pt = Point.ByCoordinates(0,0,0);\nCircle.ByCenterPointRadius(pt,5)");

            Assert.AreEqual(0, codeBlockNode.InPortData.Count);
        }
Exemplo n.º 6
0
        public void Defect_MAGN_3580()
        {
            // Create the initial code block node.
            var codeBlockNode0 = CreateCodeBlockNode();
            UpdateCodeBlockNodeContent(codeBlockNode0, @"true;");

            // Create the watch node.
            var nodeGuid = Guid.NewGuid();
            var command = new DynCmd.CreateNodeCommand(
                nodeGuid, "Watch", 0, 0, true, false);

            ViewModel.ExecuteCommand(command);
            var workspace = ViewModel.Model.CurrentWorkspace;
            var watchNode = workspace.NodeFromWorkspace<Watch>(nodeGuid);

            // Connect the two nodes
            ConnectorModel connector0 = ConnectorModel.Make(workspace, codeBlockNode0, watchNode,
                0, 0, PortType.INPUT);
            workspace.Connectors.Add(connector0);

            // Run
            Assert.DoesNotThrow(() => ViewModel.Model.RunExpression());

            // Update the code block node
            UpdateCodeBlockNodeContent(codeBlockNode0, @"truuuue;");

            // Check
            Assert.AreEqual(1, codeBlockNode0.InPortData.Count);

            // Create the second code block node
            var codeBlockNode1 = CreateCodeBlockNode();
            UpdateCodeBlockNodeContent(codeBlockNode1, @"false;");

            // Connect the two code block nodes
            ConnectorModel connector1 = ConnectorModel.Make(workspace, codeBlockNode1, codeBlockNode0,
                0, 0, PortType.INPUT);
            workspace.Connectors.Add(connector1);

            // Run
            Assert.DoesNotThrow(() => ViewModel.Model.RunExpression());

            UpdateCodeBlockNodeContent(codeBlockNode0, @"true;");

            // Check
            Assert.AreEqual(0, codeBlockNode0.InPortData.Count);

            // Run
            Assert.DoesNotThrow(() => ViewModel.Model.RunExpression());

            // Delete the first code block node
            List<ModelBase> nodes = new List<ModelBase>();
            nodes.Add(codeBlockNode0);
            ViewModel.Model.DeleteModelInternal(nodes);

            // Undo
            workspace.Undo();
        }
Exemplo n.º 7
0
        public void Defect_MAGN_3580()
        {
            // Create the initial code block node.
            var codeBlockNode0 = CreateCodeBlockNode();

            UpdateCodeBlockNodeContent(codeBlockNode0, @"true;");

            // Create the watch node.
            var nodeGuid = Guid.NewGuid();
            var command  = new DynCmd.CreateNodeCommand(
                nodeGuid, "Watch", 0, 0, true, false);

            ViewModel.ExecuteCommand(command);
            var workspace = ViewModel.Model.CurrentWorkspace;
            var watchNode = workspace.NodeFromWorkspace <Watch>(nodeGuid);

            // Connect the two nodes
            ConnectorModel connector0 = ConnectorModel.Make(workspace, codeBlockNode0, watchNode,
                                                            0, 0, PortType.INPUT);

            workspace.Connectors.Add(connector0);

            // Run
            Assert.DoesNotThrow(() => ViewModel.Model.RunExpression());

            // Update the code block node
            UpdateCodeBlockNodeContent(codeBlockNode0, @"truuuue;");

            // Check
            Assert.AreEqual(1, codeBlockNode0.InPortData.Count);

            // Create the second code block node
            var codeBlockNode1 = CreateCodeBlockNode();

            UpdateCodeBlockNodeContent(codeBlockNode1, @"false;");

            // Connect the two code block nodes
            ConnectorModel connector1 = ConnectorModel.Make(workspace, codeBlockNode1, codeBlockNode0,
                                                            0, 0, PortType.INPUT);

            workspace.Connectors.Add(connector1);

            // Run
            Assert.DoesNotThrow(() => ViewModel.Model.RunExpression());

            UpdateCodeBlockNodeContent(codeBlockNode0, @"true;");

            // Check
            Assert.AreEqual(0, codeBlockNode0.InPortData.Count);

            // Run
            Assert.DoesNotThrow(() => ViewModel.Model.RunExpression());

            // Delete the first code block node
            List <ModelBase> nodes = new List <ModelBase>();

            nodes.Add(codeBlockNode0);
            ViewModel.Model.DeleteModelInternal(nodes);

            // Undo
            workspace.Undo();
        }