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()); }
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()); }
public void TestShortestQualifiedNameReplacer1() { string libraryPath = "FFITarget.dll"; if (!CurrentDynamoModel.LibraryServices.IsLibraryLoaded(libraryPath)) { CurrentDynamoModel.LibraryServices.ImportLibrary(libraryPath); } var functionCall = AstFactory.BuildFunctionCall( "Autodesk.DesignScript.Geometry.Point", "ByCoordinates", new List <AssociativeNode> { new IntNode(1), new IntNode(2) }); var lhs = AstFactory.BuildIdentifier("lhs"); var ast = AstFactory.BuildBinaryExpression(lhs, functionCall, ProtoCore.DSASM.Operator.assign); NodeToCodeUtils.ReplaceWithShortestQualifiedName( CurrentDynamoModel.EngineController.LibraryServices.LibraryManagementCore.ClassTable, new [] { ast }); // 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(1, 2)", ast.RightNode.ToString()); }
public void TestVariableConfliction6() { // Test same name variables will be renamed in node to code // // x = 1; --> Point.ByCoordinate() // --> Point.ByCoordinate() OpenModel(@"core\node2code\sameNames5.dyn"); var nodes = CurrentDynamoModel.CurrentWorkspace.Nodes; var engine = CurrentDynamoModel.EngineController; var result = engine.ConvertNodesToCode(nodes, nodes); NodeToCodeUtils.ReplaceWithShortestQualifiedName(engine.LibraryServices.LibraryManagementCore.ClassTable, result.AstNodes); Assert.IsNotNull(result); Assert.IsNotNull(result.AstNodes); Assert.AreEqual(3, result.AstNodes.Count()); Assert.True(result.AstNodes.All(n => n is BinaryExpressionNode)); var rhs = result.AstNodes.Cast <BinaryExpressionNode>() .Skip(1) .Select(n => n.RightNode.ToString()) .ToList(); Assert.AreEqual("Point.ByCoordinates(x, 0)", rhs[0]); Assert.AreEqual("Point.ByCoordinates(x, 0)", rhs[1]); }
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()); }
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()); }