コード例 #1
0
        public void TestShortName1()
        {
            string libraryPath = "FFITarget.dll";

            if (!CurrentDynamoModel.LibraryServices.IsLibraryLoaded(libraryPath))
            {
                CurrentDynamoModel.LibraryServices.ImportLibrary(libraryPath);
            }

            OpenModel(@"core\node2code\shortName1.dyn");
            var nodes  = CurrentDynamoModel.CurrentWorkspace.Nodes;
            var engine = CurrentDynamoModel.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            NodeToCodeUtils.ReplaceWithShortestQualifiedName(engine.LibraryServices.LibraryManagementCore.ClassTable, result.AstNodes);
            Assert.IsTrue(result != null && result.AstNodes != null);

            var expr = result.AstNodes.Last() as BinaryExpressionNode;

            Assert.IsNotNull(expr);

            // Since there is a conflict with FFITarget.DesignScript.Point and FFITarget.Dynamo.Point,
            // node to code generates the shortest unique name, which in this case will be
            // Autodesk.Point for Autodesk.DesignScript.Geometry.Point
            Assert.AreEqual("Autodesk.Point.ByCoordinates(t1, 0)", expr.RightNode.ToString());
        }
コード例 #2
0
        public void TestShortestQualifiedNameReplacerWithDefaultArgument2()
        {
            string libraryPath = "FFITarget.dll";

            if (!CurrentDynamoModel.LibraryServices.IsLibraryLoaded(libraryPath))
            {
                CurrentDynamoModel.LibraryServices.ImportLibrary(libraryPath);
            }

            OpenModel(@"core\node2code\ShortenNodeNameWithDefaultArg.dyn");
            var nodes  = CurrentDynamoModel.CurrentWorkspace.Nodes;
            var engine = CurrentDynamoModel.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            NodeToCodeUtils.ReplaceWithShortestQualifiedName(engine.LibraryServices.LibraryManagementCore.ClassTable, result.AstNodes);
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.AstNodes);

            var expr1 = result.AstNodes.First() as BinaryExpressionNode;

            Assert.IsNotNull(expr1);

            // Since there is a conflict with FFITarget.DesignScript.Point and FFITarget.Dynamo.Point,
            // node to code generates the shortest unique name, which in this case will be
            // Autodesk.Point for Autodesk.DesignScript.Geometry.Point
            Assert.AreEqual("ElementResolverTarget.StaticMethod(ElementResolverTarget.Create().StaticProperty)", expr1.RightNode.ToString());
        }
コード例 #3
0
        public void TestBasicNode2CodeWorkFlow1()
        {
            // 1 -> a -> x
            OpenModel(@"core\node2code\workflow1.dyn");
            var nodes  = CurrentDynamoModel.CurrentWorkspace.Nodes;
            var engine = CurrentDynamoModel.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.AstNodes);

            var expr1 = result.AstNodes.First() as BinaryExpressionNode;
            var expr2 = result.AstNodes.Last() as BinaryExpressionNode;

            Assert.IsNotNull(expr1);
            Assert.IsNotNull(expr2);

            Assert.IsTrue(expr1.ToString().StartsWith("a = 1;"));
            Assert.IsTrue(expr2.ToString().StartsWith("x = a;"));

            var undo = new DynamoModel.UndoRedoCommand(DynamoModel.UndoRedoCommand.Operation.Undo);

            CurrentDynamoModel.ExecuteCommand(undo);

            Assert.AreEqual(2, CurrentDynamoModel.CurrentWorkspace.Connectors.Count());
            Assert.AreEqual(3, CurrentDynamoModel.CurrentWorkspace.Nodes.Count());
        }
コード例 #4
0
        public void TestTemporaryVariableRenaming3()
        {
            // 1 x
            // 2 y
            OpenModel(@"core\node2code\tempVariable3.dyn");
            var nodes  = ViewModel.CurrentSpaceViewModel.Model.Nodes;
            var engine = ViewModel.Model.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            Assert.True(result != null && result.AstNodes != null && result.AstNodes.Count() == 4);
            Assert.True(result.AstNodes.All(n => n is BinaryExpressionNode));
        }
コード例 #5
0
        public void TestTemporaryVariableRenaming3()
        {
            // 1 x
            // 2 y
            OpenModel(@"core\node2code\tempVariable3.dyn");
            var nodes  = CurrentDynamoModel.CurrentWorkspace.Nodes;
            var engine = CurrentDynamoModel.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.AstNodes);
            Assert.AreEqual(4, result.AstNodes.Count());
            Assert.True(result.AstNodes.All(n => n is BinaryExpressionNode));
        }
コード例 #6
0
ファイル: NodeToCodeTest.cs プロジェクト: monikaprabhu/Dynamo
        public void TestShortName1()
        {
            OpenModel(@"core\node2code\shortName1.dyn");
            var nodes  = CurrentDynamoModel.CurrentWorkspace.Nodes;
            var engine = CurrentDynamoModel.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            NodeToCodeUtils.ReplaceWithUnqualifiedName(engine.LibraryServices.LibraryManagementCore, result.AstNodes);
            Assert.IsTrue(result != null && result.AstNodes != null);

            var expr = result.AstNodes.Last() as BinaryExpressionNode;

            Assert.IsNotNull(expr);
            Assert.AreEqual("Point.ByCoordinates(t1, 0)", expr.RightNode.ToString());
        }
コード例 #7
0
        public void TestUnqualifiedNameReplacer6()
        {
            OpenModel(@"core\node2code\unqualifiedName5.dyn");
            var nodes  = ViewModel.CurrentSpaceViewModel.Model.Nodes;
            var engine = ViewModel.Model.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            NodeToCodeUtils.ReplaceWithUnqualifiedName(engine.LibraryServices.LibraryManagementCore, result.AstNodes);
            Assert.True(result != null && result.AstNodes != null);

            var expr = result.AstNodes.Last() as BinaryExpressionNode;

            Assert.IsNotNull(expr);
            Assert.IsTrue(expr.RightNode.ToString().Equals("t1.DistanceTo(t2)"));
        }
コード例 #8
0
        public void TestShortestQualifiedNameReplacer6()
        {
            OpenModel(@"core\node2code\unqualifiedName5.dyn");
            var nodes  = CurrentDynamoModel.CurrentWorkspace.Nodes;
            var engine = CurrentDynamoModel.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            NodeToCodeUtils.ReplaceWithShortestQualifiedName(engine.LibraryServices.LibraryManagementCore.ClassTable, result.AstNodes);
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.AstNodes);

            var expr = result.AstNodes.Last() as BinaryExpressionNode;

            Assert.IsNotNull(expr);
            Assert.AreEqual("t1.DistanceTo(t2)", expr.RightNode.ToString());
        }
コード例 #9
0
ファイル: NodeToCodeTest.cs プロジェクト: monikaprabhu/Dynamo
        public void TestUnqualifiedNameReplacer4()
        {
            // 1 -> Autodesk.DesignScript.Geometry.Point.ByCoordinates(x, x);
            OpenModel(@"core\node2code\unqualifiedName3.dyn");
            var nodes  = CurrentDynamoModel.CurrentWorkspace.Nodes;
            var engine = CurrentDynamoModel.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            NodeToCodeUtils.ReplaceWithUnqualifiedName(engine.LibraryServices.LibraryManagementCore, result.AstNodes);
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.AstNodes);

            var expr = result.AstNodes.Last() as BinaryExpressionNode;

            Assert.IsNotNull(expr);
            Assert.AreEqual("Point.ByCoordinates(x, x)", expr.RightNode.ToString());
        }
コード例 #10
0
        public void TestTemporaryVariableRenaming4()
        {
            OpenModel(@"core\node2code\tempVariable4.dyn");
            var nodes  = CurrentDynamoModel.CurrentWorkspace.Nodes;
            var engine = CurrentDynamoModel.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.AstNodes);

            NodeToCodeUtils.ReplaceWithShortestQualifiedName(engine.LibraryServices.LibraryManagementCore.ClassTable, result.AstNodes);
            Assert.AreEqual(2, result.AstNodes.Count());
            Assert.True(result.AstNodes.All(n => n is BinaryExpressionNode));
            var rhs = result.AstNodes.Cast <BinaryExpressionNode>().Select(n => n.RightNode.ToString());

            Assert.AreEqual("Point.ByCoordinates(1, 2)", rhs.First());
            Assert.AreEqual("Point.ByCoordinates(1, 3)", rhs.Last());
        }
コード例 #11
0
        public void TestBasicNode2CodeWorkFlow1()
        {
            // 1 -> a -> x
            OpenModel(@"core\node2code\workflow1.dyn");
            var nodes  = ViewModel.CurrentSpaceViewModel.Model.Nodes;
            var engine = ViewModel.Model.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            Assert.IsTrue(result != null && result.AstNodes != null);

            var expr1 = result.AstNodes.First() as BinaryExpressionNode;
            var expr2 = result.AstNodes.Last() as BinaryExpressionNode;

            Assert.IsNotNull(expr1);
            Assert.IsNotNull(expr2);

            Assert.IsTrue(expr1.ToString().StartsWith("a = 1;"));
            Assert.IsTrue(expr2.ToString().StartsWith("x = a;"));
        }
コード例 #12
0
        public void TestUnqualifiedNameReplacer5()
        {
            // 1 -> Autodesk.DesignScript.Geometry.Point.ByCoordinates(x, x);
            OpenModel(@"core\node2code\unqualifiedName4.dyn");
            var nodes  = ViewModel.CurrentSpaceViewModel.Model.Nodes;
            var engine = ViewModel.Model.EngineController;

            var result = engine.ConvertNodesToCode(nodes, nodes);

            result = NodeToCodeUtils.ConstantPropagationForTemp(result, Enumerable.Empty <string>());
            NodeToCodeUtils.ReplaceWithUnqualifiedName(engine.LibraryServices.LibraryManagementCore, result.AstNodes);
            Assert.True(result != null && result.AstNodes != null);

            var expr1 = result.AstNodes.First() as BinaryExpressionNode;
            var expr2 = result.AstNodes.Last() as BinaryExpressionNode;

            Assert.IsNotNull(expr1);
            Assert.IsNotNull(expr2);

            Assert.IsTrue(expr1.RightNode.ToString().Equals("Point.ByCoordinates(0, 0)"));
            Assert.IsTrue(expr2.RightNode.ToString().Equals("Point.ByCoordinates(0, 0)"));
        }