private void PostProcessTProxiedObject(ProcessedObjectChecker test)
        {
            AppDomain domain = null;

            try
            {
                AppDomainSetup setup = new AppDomainSetup();
                setup.ApplicationBase = Environment.CurrentDirectory;
                domain = AppDomain.CreateDomain("Spring", new Evidence(AppDomain.CurrentDomain.Evidence), setup);
                object foo = domain.CreateInstanceAndUnwrap(GetType().Assembly.FullName, typeof(MockContextAwareObject).FullName);

                MockApplicationContext           ctx       = new MockApplicationContext();
                ApplicationContextAwareProcessor processor = new ApplicationContextAwareProcessor(ctx);
                MockContextAwareObject           afterFoo  = (MockContextAwareObject)processor.PostProcessBeforeInitialization(foo, "MyContextAwareObject");
                test(afterFoo);
            }
            finally
            {
                try
                {
                    AppDomain.Unload(domain);
                }
                catch (Exception ex)
                {
                    Console.Write("Error unloading AppDomain used during testing : " + ex);
                }
            }
        }
        public void ContextAwarePrototypeGetName()
        {
            _context.RegisterObject();
            _context.Refresh();
            MockContextAwareObject mcao1 = (MockContextAwareObject)_context.GetObject("mcao-proto");

            Assert.AreEqual(mcao1.ApplicationContext.Name, "MockApplicationContextName");
        }
        public void ContextAwareSingletonGetName()
        {
            _context.RegisterSingleton();
            _context.Refresh();
            MockContextAwareObject mcao1 = (MockContextAwareObject)_context.GetObject("mcao-single");

            Assert.AreEqual(mcao1.ApplicationContext.Name, "MockApplicationContextName");
        }
		public void AttachContext()
		{
			MockApplicationContext ctx = new MockApplicationContext();
			ApplicationContextAwareProcessor processor = new ApplicationContextAwareProcessor(ctx);
			MockContextAwareObject obj = new MockContextAwareObject();
			Assert.IsNull(obj.GetApplicationContext(), "Context Does Not Equal");
			MockContextAwareObject obj2 = (MockContextAwareObject) processor.PostProcessBeforeInitialization(obj, "MyContextAwareObject");
			Assert.AreEqual(ctx, obj2.GetApplicationContext(), "Context Does Not Equal");
		}
        public void RegisterObjectPrototype()
        {
            StaticApplicationContext ctx = new StaticApplicationContext();

            ctx.RegisterPrototype("my object", typeof(MockContextAwareObject), null);
            MockContextAwareObject ctx1 = (MockContextAwareObject)ctx.GetObject("my object");
            MockContextAwareObject ctx2 = (MockContextAwareObject)ctx.GetObject("my object");

            Assert.IsTrue(ctx1 != ctx2);
            Assert.IsTrue(!ctx.IsSingleton("my object"));
        }
        public void AttachContext()
        {
            MockApplicationContext           ctx       = new MockApplicationContext();
            ApplicationContextAwareProcessor processor = new ApplicationContextAwareProcessor(ctx);
            MockContextAwareObject           obj       = new MockContextAwareObject();

            Assert.IsNull(obj.GetApplicationContext(), "Context Does Not Equal");
            MockContextAwareObject obj2 = (MockContextAwareObject)processor.PostProcessBeforeInitialization(obj, "MyContextAwareObject");

            Assert.AreEqual(ctx, obj2.GetApplicationContext(), "Context Does Not Equal");
        }
        public void ContextAwarePrototypeWasCalledBack()
        {
            _context.RegisterObject();
            _context.Refresh();
            MockContextAwareObject mcao1 = (MockContextAwareObject)_context.GetObject("mcao-proto");

            Assert.IsTrue(mcao1.ApplicationContext == _context, "context");
            Assert.IsTrue(!_context.IsSingleton("mcao-proto"), "singleton");
            MockContextAwareObject mcao2 = (MockContextAwareObject)_context.GetObject("mcao-proto");

            Assert.IsTrue(mcao1 != mcao2, "instance");
        }
        public void ContextAwareSingletonWasCalledBack()
        {
            _context.RegisterSingleton();
            _context.Refresh();
            MockContextAwareObject mcao1 = (MockContextAwareObject)_context.GetObject("mcao-single");

            Assert.IsTrue(mcao1.ApplicationContext == _context, "context");
            object mcao2 = _context.GetObject("mcao-single");

            Assert.IsTrue(mcao1 == mcao2, "same");
            Assert.IsTrue(_context.IsSingleton("mcao-single"), "singleton?");
        }
 private void _AlwaysIgnoresProxiedMessageSourceAwareObjects(MockContextAwareObject obj)
 {
     Assert.IsNull(obj.MessageSource,
                   "Transparent proxy IMessageSourceAware object was not ignored (must be).");
 }
 private void _AlwaysIgnoresProxiedApplicationContextAwareAwareObjects(MockContextAwareObject obj)
 {
     Assert.IsNull(obj.ApplicationContext,
                   "Transparent proxy IApplicationContextAwareAware object was not ignored (must be).");
 }
 private void _AlwaysIgnoresProxiedResourceLoaderAwareObjects(MockContextAwareObject obj)
 {
     Assert.IsNull(obj.ResourceLoader,
                   "Transparent proxy IResourceLoaderAware object was not ignored (must be).");
 }
		private void _AlwaysIgnoresProxiedMessageSourceAwareObjects(MockContextAwareObject obj) 
		{
			Assert.IsNull(obj.MessageSource,
				"Transparent proxy IMessageSourceAware object was not ignored (must be).");
		}
		private void _AlwaysIgnoresProxiedApplicationContextAwareAwareObjects(MockContextAwareObject obj) 
		{
			Assert.IsNull(obj.ApplicationContext,
				"Transparent proxy IApplicationContextAwareAware object was not ignored (must be).");
		}
		private void _AlwaysIgnoresProxiedResourceLoaderAwareObjects(MockContextAwareObject obj) 
		{
			Assert.IsNull(obj.ResourceLoader,
				"Transparent proxy IResourceLoaderAware object was not ignored (must be).");
		}