Esempio n. 1
0
        public void LookupResolvedName_ForPartialNestedExpression_RewriteAst()
        {
            var astNodes = CoreUtils.BuildASTList(core, "p = Autodesk.Point.ByCoordinates(Autodesk.Point.ByCoordinates(x, y, z).X, y, z).X;");

            var elementResolver = new ElementResolver();

            elementResolver.AddToResolutionMap("Autodesk.Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");

            var newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("p = Autodesk.DS.Geometry.Point.ByCoordinates(Autodesk.DS.Geometry.Point.ByCoordinates(x, y, z).X, y, z).X;\n", newNodes.ElementAt(0).ToString());

            /////////////////////////////////////
            astNodes = CoreUtils.BuildASTList(core, "p = Autodesk.DS.Point.ByCoordinates(Autodesk.Point.ByCoordinates(x, y, z).X, y, z).X;");

            elementResolver = new ElementResolver();
            elementResolver.AddToResolutionMap("Autodesk.Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");
            elementResolver.AddToResolutionMap("Autodesk.DS.Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");

            newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("p = Autodesk.DS.Geometry.Point.ByCoordinates(Autodesk.DS.Geometry.Point.ByCoordinates(x, y, z).X, y, z).X;\n", newNodes.ElementAt(0).ToString());

            //////////////////////////////////////
            astNodes = CoreUtils.BuildASTList(core, "p = Autodesk.DS.Geometry.Point.ByCoordinates(Autodesk.Point.ByCoordinates(x, y, z).X, y, z).X;");

            elementResolver = new ElementResolver();
            elementResolver.AddToResolutionMap("Autodesk.Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");
            elementResolver.AddToResolutionMap("Autodesk.DS.Geometry.Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");

            newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("p = Autodesk.DS.Geometry.Point.ByCoordinates(Autodesk.DS.Geometry.Point.ByCoordinates(x, y, z).X, y, z).X;\n", newNodes.ElementAt(0).ToString());
        }
Esempio n. 2
0
        public void LookupResolvedName_FromCompiler_RewriteAst()
        {
            string code   = @"import (""FFITarget.dll"");";
            var    mirror = thisTest.RunScriptSource(code);

            var testCore = thisTest.GetTestCore();
            var astNodes = CoreUtils.BuildASTList(testCore, "d = ElementResolverTarget.ElementResolverTarget();");
            var astNode  = astNodes[0];

            var elementResolver = new ElementResolver();

            var elementRewriter = new ElementRewriter(testCore.ClassTable);

            elementRewriter.LookupResolvedNameAndRewriteAst(elementResolver, ref astNode);

            Assert.AreEqual("d = FFITarget.ElementResolverTarget.ElementResolverTarget();\n", astNode.ToString());

            // Add verification for contents of element resolver resolution map
            Assert.AreEqual(1, elementResolver.ResolutionMap.Count);

            var assembly     = elementResolver.LookupAssemblyName("ElementResolverTarget");
            var resolvedName = elementResolver.LookupResolvedName("ElementResolverTarget");

            Assert.AreEqual("FFITarget.dll", assembly);
            Assert.AreEqual("FFITarget.ElementResolverTarget", resolvedName);
        }
Esempio n. 3
0
        public void LookupResolvedName_ForPartialTypedIdentifier_RewriteAst()
        {
            var astNodes = CoreUtils.BuildASTList(core, "p : Autodesk.Point;");

            var elementResolver = new ElementResolver();

            elementResolver.AddToResolutionMap("Autodesk.Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");

            var newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("p : Autodesk.DS.Geometry.Point", newNodes.ElementAt(0).ToString());

            astNodes = CoreUtils.BuildASTList(core, "p : Autodesk.DS.Point;");

            elementResolver = new ElementResolver();
            elementResolver.AddToResolutionMap("Autodesk.DS.Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");

            ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("p : Autodesk.DS.Geometry.Point", newNodes.ElementAt(0).ToString());

            astNodes = CoreUtils.BuildASTList(core, "p : Autodesk.DS.Geometry.Point;");

            elementResolver = new ElementResolver();
            elementResolver.AddToResolutionMap("Autodesk.DS.Geometry.Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");

            ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("p : Autodesk.DS.Geometry.Point", newNodes.ElementAt(0).ToString());
        }
Esempio n. 4
0
        public void LookupResolvedName_ForAssociativeBlock_RewriteAst()
        {
            var code =
                "c = [Associative]" +
                "{" +
                "   a = [1, 2, 3, 4];" +
                "   b = Autodesk.Point.ByCoordinates(a);" +
                "   return = b;" +
                "}";

            var elementResolver = new ElementResolver();

            elementResolver.AddToResolutionMap("Autodesk.Point", "Autodesk.DesignScript.Geometry.Point",
                                               "Protogeometry.dll");

            var astNodes = CoreUtils.BuildASTList(core, code);
            var newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes).ToList();

            var lbn = ((BinaryExpressionNode)newNodes[0]).RightNode as LanguageBlockNode;

            Assert.IsNotNull(lbn);

            var cbn = lbn.CodeBlockNode as CodeBlockNode;

            Assert.IsNotNull(cbn);

            Assert.AreEqual("b = Autodesk.DesignScript.Geometry.Point.ByCoordinates(a);\n",
                            cbn.Body[1].ToString());
        }
Esempio n. 5
0
        public void LookupResolvedName_ForGlobalClass_RewriteAst()
        {
            const string code   = @"import (""FFITarget.dll"");";
            var          mirror = thisTest.RunScriptSource(code);

            var testCore = thisTest.GetTestCore();
            var astNodes = CoreUtils.BuildASTList(testCore, "a = GlobalClass.GlobalClass(a);");

            var elementResolver = new ElementResolver();

            var newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes).ToList();

            Assert.AreEqual("a = GlobalClass.GlobalClass(a);\n", newNodes[0].ToString());

            astNodes = CoreUtils.BuildASTList(testCore, "a : GlobalClass;");

            newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes).ToList();

            Assert.AreEqual("a : GlobalClass", newNodes[0].ToString());

            // Add verification for contents of element resolver resolution map
            Assert.AreEqual(1, elementResolver.ResolutionMap.Count);

            var assembly     = elementResolver.LookupAssemblyName("GlobalClass");
            var resolvedName = elementResolver.LookupResolvedName("GlobalClass");

            Assert.AreEqual("FFITarget.dll", assembly);
            Assert.AreEqual("GlobalClass", resolvedName);
        }
Esempio n. 6
0
        public void SkipResolvingName_ForPrimitiveTypedIdentifier_RetainAst()
        {
            var astNodes = CoreUtils.BuildASTList(core, "p : int;");

            var newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, new ElementResolver(), astNodes);

            Assert.AreEqual("p : int", newNodes.ElementAt(0).ToString());
        }
Esempio n. 7
0
        public void LookupResolvedName_ForGlobalFunction_RewriteAst()
        {
            var astNodes = CoreUtils.BuildASTList(core, "a = Flatten(a).DifferenceAll(Flatten(b));");

            var elementResolver = new ElementResolver();

            var newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes).ToList();

            Assert.AreEqual("a = Flatten(a).DifferenceAll(Flatten(b));\n", newNodes[0].ToString());
        }
Esempio n. 8
0
        private bool Test_GetIdentifierStringUntilFirstParenthesis(string input, string expected)
        {
            List <AssociativeNode> astList   = CoreUtils.BuildASTList(core, input);
            IdentifierListNode     identList = (astList[0] as BinaryExpressionNode).RightNode as IdentifierListNode;

            // Verify expected string
            string identListString = CoreUtils.GetIdentifierStringUntilFirstParenthesis(identList);

            return(identListString.Equals(expected));
        }
Esempio n. 9
0
        private bool Test_GetIdentifierExceptMethodName(string input, string expected)
        {
            var astList   = CoreUtils.BuildASTList(core, input);
            var identList = (astList[0] as BinaryExpressionNode).RightNode as IdentifierListNode;

            // Verify expected string
            string identListString = CoreUtils.GetIdentifierExceptMethodName(identList);

            return(identListString.Equals(expected));
        }
Esempio n. 10
0
        public void LookupResolvedName_FromElementResolver_RewriteAst()
        {
            var astNodes = CoreUtils.BuildASTList(core, "p = Point.ByCoordinates(0,0,0);");

            var elementResolver = new ElementResolver();

            elementResolver.AddToResolutionMap("Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");

            var newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("p = Autodesk.DS.Geometry.Point.ByCoordinates(0, 0, 0);\n", newNodes.ElementAt(0).ToString());
        }
Esempio n. 11
0
        public void GetClassIdentifiers_FromAst()
        {
            var astNodes = CoreUtils.BuildASTList(core, "d = Point.ByCoordinates(0, 0, pt.X + 5);");
            var astNode  = astNodes[0];

            var elementRewriter     = new ElementRewriter(null);
            var identifiers         = elementRewriter.GetClassIdentifiers(astNode);
            var identifierListNodes = identifiers as IdentifierListNode[] ?? identifiers.ToArray();

            Assert.AreEqual(2, identifierListNodes.Count());
            Assert.AreEqual("pt.X", identifierListNodes.ElementAt(0).ToString());
            Assert.AreEqual("Point.ByCoordinates(0, 0, (pt.X) + 5)", identifierListNodes.ElementAt(1).ToString());
        }
Esempio n. 12
0
        public void LookupResolvedName_FromElementResolver_RewriteAst2()
        {
            // TODO pratapa: Return to fix test with Dictionary.ValueAtKey method

            var astNodes = CoreUtils.BuildASTList(core, "p = Geometry.Point.ByCoordinates(0,0,0)[0];");

            var elementResolver = new ElementResolver();

            elementResolver.AddToResolutionMap("Point", "Autodesk.DS.Geometry.Point", "Protogeometry.dll");

            var newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("p = Autodesk.DS.Geometry.Point.ByCoordinates(0, 0, 0)[0];\n", newNodes.ElementAt(0).ToString());
        }
Esempio n. 13
0
        public void LookupResolvedName_ForNestedNamespacesExpressionFromCompiler_RewriteAst()
        {
            const string code   = @"import (""FFITarget.dll"");";
            var          mirror = thisTest.RunScriptSource(code);

            var    testCore  = thisTest.GetTestCore();
            string class1    = "NestedResolverTarget";
            string class2    = "ElementResolverTarget";
            string fullName1 = "FFITarget.NameSpaceA.NameSpaceB.NameSpaceC.NestedResolverTarget";
            string fullName2 = "FFITarget.ElementResolverTarget";
            var    astNodes  = CoreUtils.BuildASTList(testCore, string.Format("d = {0}.Property.Method({1}.Create().Property.Method({0}.Property.Property));", class1, class2));

            var elementResolver = new ElementResolver();

            var newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes);

            Assert.AreEqual(
                string.Format("d = {0}.Property.Method({1}.Create().Property.Method({0}.Property.Property));\n", fullName1, fullName2),
                newNodes.ElementAt(0).ToString());

            // Add verification for contents of element resolver resolution map
            var assembly     = elementResolver.LookupAssemblyName(class2);
            var resolvedName = elementResolver.LookupResolvedName(class2);

            Assert.AreEqual("FFITarget.dll", assembly);
            Assert.AreEqual(fullName2, resolvedName);

            ///////////////////////////////////////////////
            astNodes = CoreUtils.BuildASTList(testCore, string.Format("d = {0}.Property.Method({1}.Create().Property.Method({0}.Property.Property));", fullName1, fullName2));

            elementResolver = new ElementResolver();

            newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes);

            Assert.AreEqual(
                string.Format("d = {0}.Property.Method({1}.Create().Property.Method({0}.Property.Property));\n", fullName1, fullName2),
                newNodes.ElementAt(0).ToString());

            // Add verification for contents of element resolver resolution map
            assembly     = elementResolver.LookupAssemblyName(fullName2);
            resolvedName = elementResolver.LookupResolvedName(fullName2);

            Assert.AreEqual("FFITarget.dll", assembly);
            Assert.AreEqual(fullName2, resolvedName);
        }
Esempio n. 14
0
        public void LookupResolvedName_ForFunctionDefinition_RewriteAst()
        {
            var code =
                "def foo()" +
                "{" +
                "   return = Autodesk.DesignScript.Geometry.Point.ByCoordinates();" +
                "}" +
                "a = foo();";

            var elementResolver = new ElementResolver();

            elementResolver.AddToResolutionMap("Point", "Autodesk.DesignScript.Geometry.Point", "Protogeometry.dll");

            var astNodes = CoreUtils.BuildASTList(core, code);
            var newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes).ToList();

            Assert.AreEqual("return = Autodesk.DesignScript.Geometry.Point.ByCoordinates();\n",
                            ((FunctionDefinitionNode)newNodes[0]).FunctionBody.ToString());
        }
Esempio n. 15
0
        public void LookupResolvedName_ForTypedIdentifierFromCompiler_RewriteAst()
        {
            const string code   = @"import (""FFITarget.dll"");";
            var          mirror = thisTest.RunScriptSource(code);

            var testCore = thisTest.GetTestCore();
            var astNodes = CoreUtils.BuildASTList(testCore, "d : ElementResolverTarget;");

            var elementResolver = new ElementResolver();

            var newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("d : FFITarget.ElementResolverTarget", newNodes.ElementAt(0).ToString());

            // Add verification for contents of element resolver resolution map
            var assembly     = elementResolver.LookupAssemblyName("ElementResolverTarget");
            var resolvedName = elementResolver.LookupResolvedName("ElementResolverTarget");

            Assert.AreEqual("FFITarget.dll", assembly);
            Assert.AreEqual("FFITarget.ElementResolverTarget", resolvedName);
        }
Esempio n. 16
0
        public void LookupResolvedName_AfterAddingHiddenClass_DoNotRewriteAst()
        {
            const string code   = @"import (""FFITarget.dll"");";
            var          mirror = thisTest.RunScriptSource(code);

            var core = thisTest.GetTestCore();

            // Call method on class hidden in library.
            var astNodes = CoreUtils.BuildASTList(core, "p = C.DupTargetTest.DupTargetTest();");

            var elementResolver = new ElementResolver();

            var newNodes = ElementRewriter.RewriteElementNames(core.ClassTable, elementResolver, astNodes);

            // Assert for fully resolved name of hidden class returned from ElementRewriter
            Assert.AreEqual("p = FFITarget.C.B.DupTargetTest.DupTargetTest();\n", newNodes.ElementAt(0).ToString());

            // Assert that element resolver does not hold namespace mapping for hidden class.
            KeyValuePair <string, string> resolvedName;

            Assert.IsFalse(elementResolver.ResolutionMap.TryGetValue("FFITarget.C.B.DupTargetTest", out resolvedName));
        }
Esempio n. 17
0
        private void VerifyResult(string fullName, string partialName, string functionOrProperty, bool isProperty = false)
        {
            var testCore = thisTest.GetTestCore();

            var astNodes = CoreUtils.BuildASTList(testCore, string.Format("d = {0}.{1};", partialName, functionOrProperty));

            var elementResolver = new ElementResolver();

            var newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes);

            Assert.AreEqual(string.Format("d = {0}.{1};\n", fullName, functionOrProperty), newNodes.ElementAt(0).ToString());

            if (!isProperty)
            {
                // Add verification for contents of element resolver resolution map
                var assembly     = elementResolver.LookupAssemblyName(partialName);
                var resolvedName = elementResolver.LookupResolvedName(partialName);

                Assert.AreEqual("FFITarget.dll", assembly);
                Assert.AreEqual(fullName, resolvedName);
            }
        }
Esempio n. 18
0
        public void LookupResolvedName_ForNestedExpressionFromCompiler_RewriteAst()
        {
            const string code   = @"import (""FFITarget.dll"");";
            var          mirror = thisTest.RunScriptSource(code);

            var testCore = thisTest.GetTestCore();
            var astNodes = CoreUtils.BuildASTList(testCore, "d = ElementResolverTarget.Create().Property.Method(ElementResolverTarget.Create().Property);");

            var elementResolver = new ElementResolver();

            var newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes);

            Assert.AreEqual("d = FFITarget.ElementResolverTarget.Create().Property.Method(FFITarget.ElementResolverTarget.Create().Property);\n", newNodes.ElementAt(0).ToString());

            // Add verification for contents of element resolver resolution map
            Assert.AreEqual(1, elementResolver.ResolutionMap.Count);

            var assembly     = elementResolver.LookupAssemblyName("ElementResolverTarget");
            var resolvedName = elementResolver.LookupResolvedName("ElementResolverTarget");

            Assert.AreEqual("FFITarget.dll", assembly);
            Assert.AreEqual("FFITarget.ElementResolverTarget", resolvedName);
        }