public virtual void VerifyMapping()
        {
            var sdkId = SDKSQLConnector.GetInstance().GetByName(sdkNameId).id;

            Assert.AreEqual(Path.GetFullPath(Path.Combine(TestFolder, "bin2")), SDKSQLConnector.GetInstance().GetOutputPathById(sdkId),
                            "Wrong output path");
            var actualMappings = SDKMappingSQLConnector.GetInstance().GetAllBySdkId(sdkId);

            Assert.AreEqual(expectedMappings.Count, actualMappings.Count, "Wrong number of generated mappings");
            foreach (var expect in expectedMappings)
            {
                var hasMapping = false;
                foreach (var actual in actualMappings)
                {
                    if (expect.model_identifier == actual.model_identifier)
                    {
                        if (CheckMappingValue(expect.new_classname, actual.new_classname) &&
                            CheckMappingValue(expect.assembly_map.new_path, actual.assembly_map.new_path) &&
                            CheckMappingValue(expect.namespace_map.new_namespace, actual.namespace_map.new_namespace) &&
                            CheckMappingValue(expect.old_classname, actual.old_classname) &&
                            CheckMappingValue(expect.assembly_map.old_path, actual.assembly_map.old_path) &&
                            CheckMappingValue(expect.namespace_map.old_namespace, actual.namespace_map.old_namespace) &&
                            CheckMappingValue(expect.assembly_map.name, actual.assembly_map.name))
                        {
                            hasMapping = true;
                        }
                        break;
                    }
                }
                if (!hasMapping /*actualMappings.Contains(expect)*/)
                {
                    Assert.Fail("Missing actual mapping for " + expect.model_identifier);
                }
            }
        }
Example #2
0
        public void TestAssemblyMappingSQLConnectorGetAllOldDllPathsTest()
        {
            var nsMap = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "A");

            AssertAditional.SetEquals(new HashSet <string> {
            }, instance.GetAllOldDllPaths(id), "initial value");

            var mapA = instance.GetOrCreateOldAssemblyMap(id, "path");
            var mapB = instance.GetOrCreateOldAssemblyMap(id, "path");

            AssertAditional.SetEquals(new HashSet <string> {
                "path"
            }, instance.GetAllOldDllPaths(id), "added entry");

            instance.GetOrCreateOldAssemblyMap(id, "path2");
            AssertAditional.SetEquals(new HashSet <string> {
                "path", "path2"
            },
                                      instance.GetAllOldDllPaths(id), "added second entry");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "A", "A", nsMap, mapA);
            var targetA = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "A");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "B", "B", nsMap, mapA);
            var targetB = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "B");

            instance.UpdateAssemblyMapping(mapA, targetA, "pathNew", "name");
            instance.UpdateAssemblyMapping(mapB, targetB, "pathNew2", "name2");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetA, "A");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetA, "B");
            AssertAditional.SetEquals(new HashSet <string> {
                "path", "path2"
            },
                                      instance.GetAllOldDllPaths(id), "double count of first entry");
        }
        private void ReplaceQualifiedNames()
        {
            IEnumerable <QualifiedNameSyntax> qualifiedNames = tree.GetRoot().DescendantNodes().OfType <QualifiedNameSyntax>();

            foreach (QualifiedNameSyntax oldQualifiedNameNode in qualifiedNames) // iterate over all qualified names in the file
            {
                if (!(oldQualifiedNameNode.Parent is QualifiedNameSyntax))
                {
                    var    qualifiedSymbolInfo = semanticModel.GetSymbolInfo(oldQualifiedNameNode);
                    string nsString            = oldQualifiedNameNode.Left.WithoutTrivia().GetText().ToString();
                    if (qualifiedSymbolInfo.Symbol != null)
                    {
                        string   className = qualifiedSymbolInfo.Symbol.Name.ToString();
                        sdk_map2 sdkMap    = SDKMappingSQLConnector.GetInstance().GetSDKMapFromClassAndNamespace(TransformProject.sdkId, nsString, className);
                        if (sdkMap != null)
                        {
                            string newNamespace = sdkMap.namespace_map.new_namespace;
                            string newClassName = sdkMap.new_classname;
                            QualifiedNameSyntax newQualifiedNameNode = QualifiedName(IdentifierName(newNamespace), IdentifierName(newClassName)).WithTriviaFrom(oldQualifiedNameNode);
                            documentEditor.ReplaceNode(oldQualifiedNameNode, newQualifiedNameNode);
                        }
                    }
                }
            }
        }
Example #4
0
 public void Setup()
 {
     name = Guid.NewGuid().ToString();
     SDKSQLConnector.GetInstance().SaveSDK(name, "");
     id       = SDKSQLConnector.GetInstance().GetByName(name).id;
     instance = SDKMappingSQLConnector.GetInstance();
 }
Example #5
0
        public void TestAssemblyMappingSQLConnectorGetAllNewDllPathsWithFullNameTest()
        {
            var nsMap = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, "A");

            AssertAditional.DictionaryEquals(new Dictionary <string, string> {
            },
                                             instance.GetAllNewDllPathsWithFullName(id), "initial value");

            var mapA = instance.GetOrCreateOldAssemblyMap(id, "path");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "A", "A", nsMap, mapA);
            var targetA = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "A");

            AssertAditional.DictionaryEquals(new Dictionary <string, string> {
            },
                                             instance.GetAllNewDllPathsWithFullName(id), "null entry");

            var mapB = instance.GetOrCreateOldAssemblyMap(id, "path2");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "B", "B", nsMap, mapA);
            var targetB = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "B");

            instance.UpdateAssemblyMapping(mapB, targetB, "pathNew", "name");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "B");
            AssertAditional.DictionaryEquals(new Dictionary <string, string> {
                { "pathNew", "name" }
            },
                                             instance.GetAllNewDllPathsWithFullName(id), "first entry");

            var mapC = instance.GetOrCreateOldAssemblyMap(id, "path3");
            var mapD = instance.GetOrCreateOldAssemblyMap(id, "path3");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "C", "C", nsMap, mapA);
            var targetC = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "C");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "D", "D", nsMap, mapA);
            var targetD = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "D");

            instance.UpdateAssemblyMapping(mapC, targetC, "pathNew2", "name2");
            instance.UpdateAssemblyMapping(mapD, targetD, "pathNew3", "name3");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "C");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "D");
            AssertAditional.DictionaryEquals(new Dictionary <string, string> {
                { "pathNew", "name" }, { "pathNew2", "name2" },
                { "pathNew3", "name3" }
            }, instance.GetAllNewDllPathsWithFullName(id), "repeat old name");

            var mapE = instance.GetOrCreateOldAssemblyMap(id, "path4");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "E", "E", nsMap, mapA);
            var targetE = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "E");

            instance.UpdateAssemblyMapping(mapE, targetE, "pathNew", "name");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "E");
            AssertAditional.DictionaryEquals(new Dictionary <string, string> {
                { "pathNew", "name" }, { "pathNew2", "name2" },
                { "pathNew3", "name3" }
            }, instance.GetAllNewDllPathsWithFullName(id), "dupplicate new entry");
        }
Example #6
0
        public void TestNSMappingSQLConnectorGetNamespaceMapsFromOldNamespace()
        {
            Func <namespace_map, namespace_map, bool> equals = (a, b) => a.id == b.id;

            Assert.IsNull(instance.GetNamespaceMapsFromOldNamespace(id, "space"), "initial value");

            var mapA = instance.GetOrCreateOldNSMap(id, "space");
            var mapB = instance.GetOrCreateOldNSMap(id, "space");

            AssertAditional.ListEquals(new List <namespace_map> {
                mapA
            },
                                       instance.GetNamespaceMapsFromOldNamespace(id, "space"), equals, "null new value");
            Assert.IsNull(instance.GetNamespaceMapsFromOldNamespace(id, "space2"), "null new value different space");

            var asMap = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "A", "A", mapA, asMap);
            var targetA = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "A");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "B", "B", mapB, asMap);
            var targetB = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "B");

            instance.UpdateOrCreateNSMapping(mapA, targetA, "spaceNew");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetA, "A");
            instance.UpdateOrCreateNSMapping(mapB, targetB, "spaceNew2");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "B");
            mapA = instance.GetNamespaceMapsFromOldNamespace(id, "space").First(x => x.new_namespace == "spaceNew");
            mapB = instance.GetNamespaceMapsFromOldNamespace(id, "space").First(x => x.new_namespace == "spaceNew2");
            AssertAditional.ListEquals(new List <namespace_map> {
                mapA, mapB
            },
                                       instance.GetNamespaceMapsFromOldNamespace(id, "space"), equals, "split value");
            Assert.IsNull(instance.GetNamespaceMapsFromOldNamespace(id, "space2"), "split value different space");

            var mapC = instance.GetOrCreateOldNSMap(id, "space2");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "C", "C", mapC, asMap);
            var targetC = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "C");

            instance.UpdateOrCreateNSMapping(mapC, targetC, "space");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetC, "C");
            AssertAditional.ListEquals(new List <namespace_map> {
                mapC
            },
                                       instance.GetNamespaceMapsFromOldNamespace(id, "space2"), equals, "add value to different space");
            AssertAditional.ListEquals(new List <namespace_map> {
                mapA, mapB
            },
                                       instance.GetNamespaceMapsFromOldNamespace(id, "space"), equals, "original space should be umodified");
        }
        private void SaveEntry(sdk_map2 map)
        {
            var id    = SDKSQLConnector.GetInstance().GetByName(sdkNameId).id;
            var ns    = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(id, map.namespace_map.old_namespace);
            var assem = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, map.assembly_map.old_path);

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id,
                                                                   map.model_identifier, map.old_classname, ns, assem);
            var entry = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, map.model_identifier);

            NSMappingSQLConnector.GetInstance().UpdateOrCreateNSMapping(ns, entry, map.namespace_map.new_namespace);
            AssemblyMappingSQLConnector.GetInstance().UpdateAssemblyMapping(assem, entry,
                                                                            map.assembly_map.new_path, map.assembly_map.name);
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(entry, map.new_classname);
        }
        private void ReplaceIdentifierNames()
        {
            // https://duckduckgo.com/?q=nested+selection+linq&ia=qa
            IEnumerable <IdentifierNameSyntax> identifierNames = tree.GetRoot().DescendantNodes().OfType <IdentifierNameSyntax>();

            foreach (IdentifierNameSyntax oldNameNode in identifierNames) // iterate over all identifier names in the file
            {
                if (!(oldNameNode.Parent is QualifiedNameSyntax))
                {
                    var semanticObjCreation = semanticModel.GetSymbolInfo(oldNameNode);
                    var nodeTypeInfo        = semanticModel.GetTypeInfo(oldNameNode);
                    if ((nodeTypeInfo.Type != null || oldNameNode.Parent is ObjectCreationExpressionSyntax) && semanticObjCreation.Symbol != null)
                    {
                        var oldNamespace = "";
                        for (var curNamespaceSymbol = semanticObjCreation.Symbol.ContainingNamespace; curNamespaceSymbol != null && curNamespaceSymbol.Name != "";
                             curNamespaceSymbol = curNamespaceSymbol.ContainingNamespace)
                        {
                            oldNamespace = "." + curNamespaceSymbol.Name + oldNamespace;
                        }
                        if (oldNamespace != "")
                        {
                            oldNamespace = oldNamespace.Substring(1);
                        }
                        String   oldClassname = semanticObjCreation.Symbol.Name.ToString();
                        sdk_map2 sdkMap       = SDKMappingSQLConnector.GetInstance().GetSDKMapFromClassAndNamespace(TransformProject.sdkId, oldNamespace, oldClassname);
                        if (sdkMap != null)
                        {
                            String newClassname = sdkMap.new_classname;
                            if (newClassname != null)
                            {
                                SyntaxToken          oldNameToken = oldNameNode.DescendantTokens().First();
                                SyntaxToken          name         = Identifier(newClassname).WithTriviaFrom(oldNameToken);
                                IdentifierNameSyntax newNameNode  = oldNameNode.WithIdentifier(name);
                                documentEditor.ReplaceNode(oldNameNode, newNameNode);
                            }
                            else
                            {
                                Console.WriteLine("Missing new class name for old class " + oldNamespace + "." + oldClassname);
                            }
                        }
                    }
                }
            }
        }
Example #9
0
        public void TestNSMappingSQLConnectorUpdateOrCreateNSMapping()
        {
            var mapA = instance.GetOrCreateOldNSMap(id, "space");
            var mapB = instance.GetOrCreateOldNSMap(id, "space");

            var asMap = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(id, "path");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "A", "A", mapA, asMap);
            var targetA = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "A");

            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(id, "B", "B", mapB, asMap);
            var targetB = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(id, "B");

            instance.UpdateOrCreateNSMapping(mapA, targetA, "spaceNew");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetA, "A");
            var newA       = instance.GetNamespaceMapsFromOldNamespace(id, "space").First(x => x.id == targetA.namespace_map_id);
            var expectNewA = new namespace_map
            {
                old_namespace = "space",
                sdk_id        = id,
                new_namespace = "spaceNew"
            };

            AssertAditional.NamespaceMapEquals(expectNewA, newA, "issue on update");

            instance.UpdateOrCreateNSMapping(mapB, targetB, "spaceNew2");
            SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(targetB, "B");
            var newB       = instance.GetNamespaceMapsFromOldNamespace(id, "space").First(x => x.new_namespace == "spaceNew2");
            var expectNewB = new namespace_map
            {
                old_namespace = "space",
                sdk_id        = id,
                new_namespace = "spaceNew2"
            };

            AssertAditional.NamespaceMapEquals(expectNewB, newB, "issue on splitting");
            AssertAditional.NamespaceMapEquals(expectNewA, newA, "impropper modification of A");
        }
Example #10
0
        public void DoStuff(string dllPath, bool isOld, int sdkId)
        {
            var    assem         = Assembly.LoadFrom(dllPath);
            string assemFullName = assem.FullName;

            Console.WriteLine("Read from   " + dllPath);

            var types = assem.GetTypes(); // the types will tell you if there are custom data attributes

            foreach (var type in types)   // itereate over old dll to find custom attributes
            {
                foreach (var attr in type.CustomAttributes)
                {
                    if (attr.AttributeType.Name.Equals(ReadProject.CustomAttributeName))
                    {
                        string modelIdentifier = (string)attr.ConstructorArguments.First().Value;
                        if (isOld)
                        {
                            namespace_map nsMap = NSMappingSQLConnector.GetInstance().GetOrCreateOldNSMap(sdkId, type.Namespace);
                            assembly_map  asMap = AssemblyMappingSQLConnector.GetInstance().GetOrCreateOldAssemblyMap(sdkId, dllPath);
                            SDKMappingSQLConnector.GetInstance().SaveOldSDKMapping(sdkId, modelIdentifier, type.Name, nsMap, asMap);
                        }
                        else
                        {
                            sdk_map2 sdkMap = SDKMappingSQLConnector.GetInstance().GetSDKMappingByIdentifiers(sdkId, modelIdentifier);
                            if (sdkMap != null)
                            {
                                NSMappingSQLConnector.GetInstance().UpdateOrCreateNSMapping(sdkMap.namespace_map, sdkMap, type.Namespace);
                                AssemblyMappingSQLConnector.GetInstance().UpdateAssemblyMapping(sdkMap.assembly_map, sdkMap, dllPath, assemFullName);
                                SDKMappingSQLConnector.GetInstance().UpdateSDKMapping(sdkMap, type.Name);
                            }
                        }
                    }
                }
            }
        }