public void GetObjectReallyDoesPopulateANewIDictionaryInstanceWithTheElementsOfTheSourceDictionary() { // man, that has got to be my longest ever test name :D ... IDictionary source = new Hashtable(); TestObject rick = new TestObject("Rick", 30); source.Add(rick.Name, rick); TestObject mark = new TestObject("Mark", 35); source.Add(mark.Name, mark); TestObject griffin = new TestObject("Griffin", 21); source.Add(griffin.Name, griffin); DictionaryFactoryObject dfo = new DictionaryFactoryObject(); dfo.SourceDictionary = source; dfo.AfterPropertiesSet(); IDictionary dic = (IDictionary)dfo.GetObject(); Assert.IsNotNull(dic); Assert.AreEqual(source.Count, dic.Count); foreach (DictionaryEntry entry in dic) { string name = (string)entry.Key; TestObject dude = (TestObject)entry.Value; TestObject originalDude = (TestObject)source[name]; Assert.IsTrue(object.ReferenceEquals(dude, originalDude)); } }
public void GetObjectWithoutSupplyingASourceDictionary() { DictionaryFactoryObject dfo = new DictionaryFactoryObject(); dfo.IsSingleton = false; Assert.Throws <ArgumentException>(() => dfo.GetObject(), "The 'SourceDictionary' property cannot be null (Nothing in Visual Basic.NET)."); }
public void SetTargetDictionaryTypeToNull() { DictionaryFactoryObject dfo = new DictionaryFactoryObject(); Assert.Throws <ArgumentNullException>(() => dfo.TargetDictionaryType = null); }
public void SetTargetDictionaryTypeToAbstractIDictionaryInterfaceType() { DictionaryFactoryObject dfo = new DictionaryFactoryObject(); Assert.Throws <ArgumentException>(() => dfo.TargetDictionaryType = typeof(AbstractDictionary), "The Type passed to the TargetDictionaryType property cannot be abstract (MustInherit in VisualBasic.NET); it must be a concrete class that implements the 'System.Collections.IDictionary' interface."); }
public void SetTargetDictionaryTypeToDerivedIDictionaryInterfaceType() { DictionaryFactoryObject dfo = new DictionaryFactoryObject(); Assert.Throws <ArgumentException>(() => dfo.TargetDictionaryType = typeof(IExtendedDictionary), "The Type passed to the TargetDictionaryType property cannot be an interface; it must be a concrete class that implements the 'System.Collections.IDictionary' interface."); }
public void SetTargetDictionaryTypeToNonDictionaryType() { DictionaryFactoryObject dfo = new DictionaryFactoryObject(); Assert.Throws <ArgumentException>(() => dfo.TargetDictionaryType = typeof(ICollection), "The Type passed to the TargetDictionaryType property must implement the 'System.Collections.IDictionary' interface."); }