public void RemoveUnknownName() { EditableDataset dataset = CreateDatasetAndAddEntry(); IDatasetEntry removedEntry = dataset.Remove("Unknown name"); Assert.AreEqual(1, dataset.Count); Assert.IsNull(removedEntry); }
public void RemoveFromEmpty() { EditableDataset dataset = EditableDataset.Create(); IDatasetEntry removedEntry = dataset.Remove(fooPlugInEntry.Name); Assert.AreEqual(0, dataset.Count); Assert.IsNull(removedEntry); }
//--------------------------------------------------------------------- /// <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; }
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); }
//--------------------------------------------------------------------- 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); }
//--------------------------------------------------------------------- /// <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); } }
//--------------------------------------------------------------------- /// <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); } }