public void ObjectsOfTypeIncludingAncestorsWithStaticFactory() { StaticListableObjectFactory lof = new StaticListableObjectFactory(); TestObject t1 = new TestObject(); TestObject t2 = new TestObject(); DummyFactory t3 = new DummyFactory(); DummyFactory t4 = new DummyFactory(); t4.IsSingleton = false; lof.AddObject("t1", t1); lof.AddObject("t2", t2); lof.AddObject("t3", t3); t3.AfterPropertiesSet(); // StaticListableObjectFactory does support lifecycle calls. lof.AddObject("t4", t4); t4.AfterPropertiesSet(); // StaticListableObjectFactory does support lifecycle calls. IDictionary <string, object> objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(lof, typeof(ITestObject), true, false); Assert.AreEqual(2, objects.Count); Assert.AreEqual(t1, objects["t1"]); Assert.AreEqual(t2, objects["t2"]); objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(lof, typeof(ITestObject), false, true); Assert.AreEqual(3, objects.Count); Assert.AreEqual(t1, objects["t1"]); Assert.AreEqual(t2, objects["t2"]); Assert.AreEqual(t3.GetObject(), objects["t3"]); objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(lof, typeof(ITestObject), true, true); Assert.AreEqual(4, objects.Count); Assert.AreEqual(t1, objects["t1"]); Assert.AreEqual(t2, objects["t2"]); Assert.AreEqual(t3.GetObject(), objects["t3"]); Assert.IsTrue(objects["t4"] is TestObject); }
public void HierarchicalResolutionWithOverride() { object test3 = _factory.GetObject("test3"); object test = _factory.GetObject("test"); object testFactory1 = _factory.GetObject("testFactory1"); IDictionary <string, object> objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(ITestObject), true, false); Assert.AreEqual(3, objects.Count); Assert.AreEqual(test3, objects["test3"]); Assert.AreEqual(test, objects["test"]); Assert.AreEqual(testFactory1, objects["testFactory1"]); objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(ITestObject), false, false); Assert.AreEqual(2, objects.Count); Assert.AreEqual(test, objects["test"]); Assert.AreEqual(testFactory1, objects["testFactory1"]); objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(ITestObject), false, true); Assert.AreEqual(2, objects.Count); Assert.AreEqual(test, objects["test"]); Assert.AreEqual(testFactory1, objects["testFactory1"]); objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(ITestObject), true, true); Assert.AreEqual(4, objects.Count); Assert.AreEqual(test3, objects["test3"]); Assert.AreEqual(test, objects["test"]); Assert.AreEqual(testFactory1, objects["testFactory1"]); Assert.IsTrue(objects["testFactory2"] is ITestObject); objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(DummyFactory), true, true); Assert.AreEqual(2, objects.Count); Assert.AreEqual(_factory.GetObject("&testFactory1"), objects["&testFactory1"]); Assert.AreEqual(_factory.GetObject("&testFactory2"), objects["&testFactory2"]); objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(_factory, typeof(IFactoryObject), true, true); Assert.AreEqual(2, objects.Count); Assert.AreEqual(_factory.GetObject("&testFactory1"), objects["&testFactory1"]); Assert.AreEqual(_factory.GetObject("&testFactory2"), objects["&testFactory2"]); }
public void NoObjectsOfTypeIncludingAncestors() { StaticListableObjectFactory lof = new StaticListableObjectFactory(); lof.AddObject("foo", new object()); IDictionary <string, object> objects = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(lof, typeof(ITestObject), true, false); Assert.IsTrue(objects.Count == 0); }
public void ObjectOfTypeIncludingAncestorsExcludesObjectsFromParentWhenLocalObjectDefined() { DefaultListableObjectFactory root = new DefaultListableObjectFactory(); root.RegisterObjectDefinition("excludeLocalObject", new RootObjectDefinition(typeof(ArrayList))); DefaultListableObjectFactory child = new DefaultListableObjectFactory(root); child.RegisterObjectDefinition("excludeLocalObject", new RootObjectDefinition(typeof(Hashtable))); IDictionary <string, object> objectEntries = ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(child, typeof(ArrayList), true, true); // "excludeLocalObject" matches on the parent, but not the local object definition Assert.AreEqual(0, objectEntries.Count); }