예제 #1
0
        public void RemoveUnknownName()
        {
            EditableDataset dataset      = CreateDatasetAndAddEntry();
            IDatasetEntry   removedEntry = dataset.Remove("Unknown name");

            Assert.AreEqual(1, dataset.Count);
            Assert.IsNull(removedEntry);
        }
예제 #2
0
        public void RemoveFromEmpty()
        {
            EditableDataset dataset      = EditableDataset.Create();
            IDatasetEntry   removedEntry = dataset.Remove(fooPlugInEntry.Name);

            Assert.AreEqual(0, dataset.Count);
            Assert.IsNull(removedEntry);
        }
예제 #3
0
        //---------------------------------------------------------------------

        ///	<summary>
        /// Initializes a new instance by setting its properties equal to those
        /// of another entry.
        /// </summary>
        public DatasetEntry(IDatasetEntry entry)
        {
            this.name                 = entry.Name;
            this.interfaceType        = entry.InterfaceType;
            this.implementationName   = entry.ImplementationName;
            this.description          = entry.Description;
            this.className            = entry.ClassName;
            this.assemblyName         = entry.AssemblyName;
            this.version              = entry.Version;
            this.coreVersion          = entry.CoreVersion;
            this.userGuidePath        = entry.UserGuidePath;
            this.referencedAssemblies = entry.ReferencedAssemblies;
        }
예제 #4
0
        public void Create_Add_Remove()
        {
            EditableDataset dataset      = CreateDatasetAndAddEntry();
            IDatasetEntry   removedEntry = dataset.Remove(fooPlugInEntry.Name);

            Assert.AreEqual(0, dataset.Count);
            Assert.IsNotNull(removedEntry);
            AssertEntriesAreEqual(fooPlugInEntry, removedEntry);

            IList <string> libs = fooPlugInEntry.ReferencedAssemblies;

            AssertListsAreEqual(new List <string>(),
                                dataset.ReferencedByEntries(libs));
        }
		//---------------------------------------------------------------------

		private void AssertEntriesAreEqual(IDatasetEntry expected,
		                                   IDatasetEntry actual)
		{
			Assert.IsNotNull(actual);
			Assert.AreEqual(expected.Name, actual.Name);
			Assert.AreEqual(expected.InterfaceType, actual.InterfaceType);
			Assert.AreEqual(expected.ImplementationName, actual.ImplementationName);
			Assert.AreEqual(expected.Description, actual.Description);
			Assert.AreEqual(expected.ClassName, actual.ClassName);
			Assert.AreEqual(expected.AssemblyName, actual.AssemblyName);
			Assert.AreEqual(expected.Version, actual.Version);
			Assert.AreEqual(expected.CoreVersion, actual.CoreVersion);
			Assert.AreEqual(expected.UserGuidePath, actual.UserGuidePath);
			AssertListsAreEqual(expected.ReferencedAssemblies,
			                    actual.ReferencedAssemblies);
		}
예제 #6
0
        //---------------------------------------------------------------------

        private void AssertEntriesAreEqual(IDatasetEntry expected,
                                           IDatasetEntry actual)
        {
            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Name, actual.Name);
            Assert.AreEqual(expected.InterfaceType, actual.InterfaceType);
            Assert.AreEqual(expected.ImplementationName, actual.ImplementationName);
            Assert.AreEqual(expected.Description, actual.Description);
            Assert.AreEqual(expected.ClassName, actual.ClassName);
            Assert.AreEqual(expected.AssemblyName, actual.AssemblyName);
            Assert.AreEqual(expected.Version, actual.Version);
            Assert.AreEqual(expected.CoreVersion, actual.CoreVersion);
            Assert.AreEqual(expected.UserGuidePath, actual.UserGuidePath);
            AssertListsAreEqual(expected.ReferencedAssemblies,
                                actual.ReferencedAssemblies);
        }
예제 #7
0
        //---------------------------------------------------------------------

        private EditableDataset CreateDatasetAndAddEntry()
        {
            EditableDataset dataset = EditableDataset.Create();

            dataset.Add(fooPlugInEntry);
            Assert.AreEqual(1, dataset.Count);

            IList <string> libs = fooPlugInEntry.ReferencedAssemblies;

            AssertListsAreEqual(libs, dataset.ReferencedByEntries(libs));

            IDatasetEntry foundEntry = dataset.Find(fooPlugInEntry.Name);

            Assert.IsNotNull(foundEntry);
            AssertEntriesAreEqual(fooPlugInEntry, foundEntry);

            return(dataset);
        }
예제 #8
0
        //---------------------------------------------------------------------

        /// <summary>
        /// Adds a new entry to the dataset.
        /// </summary>
        /// <exception cref="System.ArgumentNullException">
        /// entry is null.
        /// </exception>
        /// <exception cref="System.ApplicationException">
        /// There is already an entry in the dataset with the same name.
        /// </exception>
        public void Add(IDatasetEntry entry)
        {
            Require.ArgumentNotNull(entry);
            IDatasetEntry foundEntry = Find(entry.Name);

            if (foundEntry != null)
            {
                throw new System.ApplicationException(string.Format("The plug-in dataset already has an entry with the name {0}", entry.Name));
            }

            entries.Add(new DatasetEntry(entry));
            foreach (string lib in entry.ReferencedAssemblies)
            {
                List <string> referencedBy;
                if (!referencedLibs.TryGetValue(lib, out referencedBy))
                {
                    referencedBy        = new List <string>();
                    referencedLibs[lib] = referencedBy;
                }
                referencedBy.Add(entry.AssemblyName);
            }
        }
예제 #9
0
        //---------------------------------------------------------------------

        /// <summary>
        /// Removes the entry with the particular name.
        /// </summary>
        /// <returns>
        /// null if there is not entry with the given name.  Otherwise, the
        /// entry that was removed.
        /// </returns>
        public IDatasetEntry Remove(string name)
        {
            Require.ArgumentNotNull(name);
            for (int i = 0; i < entries.Count; ++i)
            {
                if (entries[i].Name == name)
                {
                    IDatasetEntry entry = entries[i];
                    entries.RemoveAt(i);

                    foreach (string lib in entry.ReferencedAssemblies)
                    {
                        referencedLibs[lib].Remove(entry.AssemblyName);
                        if (referencedLibs[lib].Count == 0)
                        {
                            referencedLibs.Remove(lib);
                        }
                    }

                    return(entry);
                }
            }
            return(null);
        }
		//---------------------------------------------------------------------

		/// <summary>
		/// Adds a new entry to the dataset.
		/// </summary>
		/// <exception cref="System.ArgumentNullException">
		/// entry is null.
		/// </exception>
		/// <exception cref="System.ApplicationException">
		/// There is already an entry in the dataset with the same name.
		/// </exception>
		public void Add(IDatasetEntry entry)
		{
			Require.ArgumentNotNull(entry);
			IDatasetEntry foundEntry = Find(entry.Name);
			if (foundEntry != null) {
				throw new System.ApplicationException(string.Format("The plug-in dataset already has an entry with the name {0}", entry.Name));
			}

			entries.Add(new DatasetEntry(entry));
			foreach (string lib in entry.ReferencedAssemblies) {
				List<string> referencedBy;
				if (! referencedLibs.TryGetValue(lib, out referencedBy)) {
					referencedBy = new List<string>();
					referencedLibs[lib] = referencedBy;
				}
				referencedBy.Add(entry.AssemblyName);
			}
		}
예제 #11
0
		//---------------------------------------------------------------------

		///	<summary>
		/// Initializes a new instance by setting its properties equal to those
		/// of another entry.
		/// </summary>
		public DatasetEntry(IDatasetEntry entry)
		{
			this.name                 = entry.Name;
			this.interfaceType        = entry.InterfaceType;
			this.implementationName   = entry.ImplementationName;
			this.description          = entry.Description;
			this.className            = entry.ClassName;
			this.assemblyName         = entry.AssemblyName;
			this.version              = entry.Version;
			this.coreVersion          = entry.CoreVersion;
			this.userGuidePath        = entry.UserGuidePath;
			this.referencedAssemblies = entry.ReferencedAssemblies;
		}