public void RegisterExistingSingletonWithReference()
        {
            DefaultListableObjectFactory lof = new DefaultListableObjectFactory();

            RootObjectDefinition def = new RootObjectDefinition();
            def.ObjectType = typeof(TestObject);
            def.PropertyValues.Add("Name", "Rick");
            def.PropertyValues.Add("Age", 30);
            def.PropertyValues.Add("Spouse", new RuntimeObjectReference("singletonObject"));
            lof.RegisterObjectDefinition("test", def);

            object singletonObject = new TestObject();
            lof.RegisterSingleton("singletonObject", singletonObject);
            Assert.IsTrue(lof.IsSingleton("singletonObject"));
            TestObject test = (TestObject)lof.GetObject("test");
            Assert.AreEqual(singletonObject, lof.GetObject("singletonObject"));
            Assert.AreEqual(singletonObject, test.Spouse);
            IDictionary<string, object> objectsOfType = lof.GetObjectsOfType(typeof(TestObject), false, true);
            Assert.AreEqual(2, objectsOfType.Count);
            Assert.IsTrue(objectsOfType.Values.Contains(test));
            Assert.IsTrue(objectsOfType.Values.Contains(singletonObject));
        }
 public void SPR_1011()
 {
     DefaultListableObjectFactory lof = new DefaultListableObjectFactory();
     RootObjectDefinition def
         = new RootObjectDefinition(
             typeof(StaticFactoryMethodObject));
     def.FactoryMethodName = "CreateObject";
     lof.RegisterObjectDefinition("foo", def);
     IDictionary<string, object> objs = lof.GetObjectsOfType(typeof(DBNull));
     Assert.AreEqual(1, objs.Count,
                     "Must be looking at the RETURN TYPE of the factory method, " +
                         "and hence get one DBNull object back.");
 }
 public void ObjectCreatedViaStaticGenericFactoryMethodUsesReturnTypeOfGenericFactoryMethodAsTheObjectType()
 {
     DefaultListableObjectFactory lof = new DefaultListableObjectFactory();
     RootObjectDefinition def
         = new RootObjectDefinition(typeof(TestGenericObject<int, string>));
     def.FactoryMethodName = "CreateList<int>";
     lof.RegisterObjectDefinition("foo", def);
     IDictionary<string, object> objs = lof.GetObjectsOfType(typeof(List<int>));
     Assert.AreEqual(1, objs.Count);
 }
 public void ObjectCreatedViaInstanceGenericFactoryMethodUsesReturnTypeOfGenericFactoryMethodAsTheObjectType()
 {
     RootObjectDefinition def
         = new RootObjectDefinition(typeof(TestObjectCreator));
     def.FactoryMethodName = "CreateInstance<string,int>";
     def.FactoryObjectName = "target";
     DefaultListableObjectFactory lof = new DefaultListableObjectFactory();
     lof.RegisterObjectDefinition("factoryObject", def);
     lof.RegisterObjectDefinition("target", new RootObjectDefinition(typeof(TestGenericObject<int, string>)));
     IDictionary<string, object> objs = lof.GetObjectsOfType(typeof(TestGenericObject<string, int>));
     Assert.AreEqual(1, objs.Count);
 }
 public void ObjectCreatedViaStaticFactoryMethodUsesReturnTypeOfFactoryMethodAsTheObjectType()
 {
     RootObjectDefinition def
         = new RootObjectDefinition(typeof(TestObjectCreator));
     def.FactoryMethodName = "CreateTestObject";
     DefaultListableObjectFactory lof = new DefaultListableObjectFactory();
     lof.RegisterObjectDefinition("factoryObject", def);
     IDictionary objs = lof.GetObjectsOfType(typeof(TestObject));
     Assert.AreEqual(1, objs.Count);
 }