Ejemplo n.º 1
0
        ResolvedImport Import(ProjectCollectionLinker importer)
        {
            var importElement  = (ProjectImportElement)importer.Import <ProjectElement, MockProjectImportElementLinkRemoter>(this.ImportingElement);
            var projectElement = (ProjectRootElement)importer.Import <ProjectElement, MockProjectRootElementLinkRemoter>(this.ImportedProject);

            return(importer.LinkFactory.Create(importElement, projectElement, 0, this.SdkResult, this.IsImported));
        }
Ejemplo n.º 2
0
        public TestCollectionGroup(int remoteCount, int stdFilesCount)
        {
            this.RemoteCount = 2;

            this.Group = ProjectCollectionLinker.CreateGroup();

            this.Local  = this.Group.AddNew();
            this.Remote = new ProjectCollectionLinker[this.RemoteCount];
            for (int i = 0; i < this.RemoteCount; i++)
            {
                this.Remote[i] = this.Group.AddNew();
            }

            this.ImmutableDisk = new TransientIO();
            this.Disk          = this.ImmutableDisk.GetSubFolder("Mutable");

            List <string> stdFiles = new List <string>();

            for (int i = 0; i < stdFilesCount; i++)
            {
                stdFiles.Add(this.ImmutableDisk.WriteProjectFile($"Proj{i}.proj", TestCollectionGroup.SampleProjectFile));
            }

            this.StdProjectFiles = stdFiles;
        }
Ejemplo n.º 3
0
        public static MockProjectElementLinkRemoter ExportElement(this ProjectCollectionLinker exporter, ProjectElement xml)
        {
            if (xml == null)
            {
                return(null);
            }

            var implType = xml.GetType();

            if (knownTypes.TryGetValue(implType, out var factory))
            {
                return(factory(exporter, xml));
            }

            factory = NotImplemented;

            foreach (var t in canonicalTypes)
            {
                if (t.Checker(xml))
                {
                    factory = t.ExportFactory;
                    break;
                }
            }

            lock (knownTypes)
            {
                var newKnown = new Dictionary <Type, ExporterFactory>(knownTypes);
                newKnown[implType] = factory;
                knownTypes         = newKnown;
            }

            return(factory(exporter, xml));
        }
Ejemplo n.º 4
0
 public RemotedResolvedImport(ResolvedImport resolvedImport, ProjectCollectionLinker exporter)
 {
     this.ImportingElement = exporter.Export <ProjectElement, MockProjectImportElementLinkRemoter>(resolvedImport.ImportingElement);
     this.ImportedProject  = exporter.Export <ProjectElement, MockProjectRootElementLinkRemoter>(resolvedImport.ImportedProject);
     this.IsImported       = resolvedImport.IsImported;
     this.SdkResult        = resolvedImport.SdkResult;
 }
Ejemplo n.º 5
0
        private void Clear(ProjectCollectionLinker linker)
        {
            linker.Importing = false;
            HashSet <Project> toKeep = null;

            this.ImmutableProjects?.TryGetValue(linker, out toKeep);
            if (toKeep == null)
            {
                linker.Collection.UnloadAllProjects();
            }
            else
            {
                var toUnload = new List <Project>();
                foreach (var p in linker.Collection.LoadedProjects)
                {
                    if (!toKeep.Contains(p))
                    {
                        toUnload.Add(p);
                    }
                }

                foreach (var p in toUnload)
                {
                    linker.Collection.UnloadProject(p);
                    linker.Collection.UnloadProject(p.Xml);
                }
            }
        }
Ejemplo n.º 6
0
        public static IList <MockProjectElementLinkRemoter> ExportCollection <T>(this ProjectCollectionLinker exporter, IEnumerable <T> source)
            where T : ProjectElement
        {
            if (source == null)
            {
                return(null);
            }
            // Just copy ...
            List <MockProjectElementLinkRemoter> result = new List <MockProjectElementLinkRemoter>();

            foreach (var s in source)
            {
                var sRemoter = exporter.ExportElement(s);
                result.Add(sRemoter);
            }
            return(result);
        }
Ejemplo n.º 7
0
        public static IList <RMock> ExportCollection <T, RMock>(this ProjectCollectionLinker exporter, IEnumerable <T> source)
            where T : class
            where RMock : MockLinkRemoter <T>, new()
        {
            if (source == null)
            {
                return(null);
            }
            // Just copy ...
            List <RMock> result = new List <RMock>();

            foreach (var s in source)
            {
                var sRemoter = exporter.Export <T, RMock>(s);
                result.Add(sRemoter);
            }
            return(result);
        }
Ejemplo n.º 8
0
        public static IDictionary <key, RMock> ExportDictionary <key, T, RMock>(this ProjectCollectionLinker exporter, IDictionary <key, T> source)
            where T : class
            where RMock : MockLinkRemoter <T>, new()
        {
            if (source == null)
            {
                return(null);
            }
            // Just copy ...
            Dictionary <key, RMock> result = new Dictionary <key, RMock>();

            foreach (var s in source)
            {
                var valueRemoter = exporter.Export <T, RMock>(s.Value);
                result.Add(s.Key, valueRemoter);
            }

            return(result);
        }
Ejemplo n.º 9
0
 public static void VerifyProjectCollectionLinks(this ProjectCollectionLinker linker, string path, int expectedLocal, int expectedLinks)
 => VerifyProjectCollectionLinks(linker.Collection, path, expectedLocal, expectedLinks);
 public override ProjectElement ImportImpl(ProjectCollectionLinker remote)
 {
     return(remote.Import <ProjectElement, MockProjectUsingTaskParameterElementLinkRemoter>(this));
 }
 public MyTestCollectionGroup()
     : base(2, 0)
 {
     this.Target = this.Remote[0];
     this.Local.Importing = true;
 }
Ejemplo n.º 12
0
 private static MockProjectElementLinkRemoter Export <RMock>(ProjectCollectionLinker exporter, ProjectElement xml)
     where RMock : MockProjectElementLinkRemoter, new()
 {
     return(exporter.Export <ProjectElement, RMock>(xml));
 }
Ejemplo n.º 13
0
 public override ProjectElement ImportImpl(ProjectCollectionLinker remote)
 {
     return(remote.Import <ProjectElement, MockProjectExtensionsElementLinkRemoter>(this));
 }
Ejemplo n.º 14
0
 private static MockProjectElementLinkRemoter NotImplemented(ProjectCollectionLinker exporter, ProjectElement xml)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 15
0
 public abstract ProjectElement ImportImpl(ProjectCollectionLinker remote);
Ejemplo n.º 16
0
 public override void Initialize(object key, T source, object context)
 {
     base.Initialize(key, source, context);
     this.OwningCollection = (ProjectCollectionLinker)context;
 }
Ejemplo n.º 17
0
 public override ProjectElement ImportImpl(ProjectCollectionLinker remote)
 {
     return(remote.Import <ProjectElement, MockProjectItemDefinitionGroupElementLinkRemoter>(this));
 }
Ejemplo n.º 18
0
 internal static RemotedResolvedImport Export(this ResolvedImport resolvedImport, ProjectCollectionLinker exporter)
 {
     return(new RemotedResolvedImport(resolvedImport, exporter));
 }
Ejemplo n.º 19
0
        // this is so we dont use ?. everywhere.
        // for null remoters the local object is always null
        public static ProjectElement Import(this MockProjectElementLinkRemoter remoter, ProjectCollectionLinker remote)
        {
            if (remoter == null)
            {
                return(null);
            }

            return(remoter.ImportImpl(remote));
        }
Ejemplo n.º 20
0
 internal static ResolvedImport Import(this RemotedResolvedImport remoted, ProjectCollectionLinker importer)
 {
     return(remoted.Import(importer));
 }