Пример #1
0
 public void RES_failingVerificationWithCyclicDependencyException()
 {
     if ((GetComponentAdapterNature() & RESOLVING) > 0)
     {
         Hashtable             cycleInstances      = new Hashtable();
         IObjectReference      cycleCheck          = new SimpleReference();
         object[]              wrapperDependencies = new Object[] { cycleInstances, cycleCheck };
         IMutablePicoContainer picoContainer       = new DefaultPicoContainer(CreateDefaultComponentAdapterFactory());
         IComponentAdapter     componentAdapter    =
             prepRES_failingVerificationWithCyclicDependencyException(picoContainer);
         Assert.AreSame(GetComponentAdapterType(), componentAdapter.GetType());
         Assert.IsTrue(picoContainer.ComponentAdapters.Contains(componentAdapter));
         IPicoContainer wrappedPicoContainer =
             WrapComponentInstances(typeof(CycleDetectorComponentAdapter), picoContainer, wrapperDependencies);
         try
         {
             componentAdapter.Verify(wrappedPicoContainer);
             Assert.Fail("Thrown PicoVerificationException excpected");
         }
         catch (CyclicDependencyException cycle)
         {
             object[] dependencies = cycle.Dependencies;
             Assert.AreSame(dependencies[0], dependencies[dependencies.Length - 1]);
         }
     }
 }
Пример #2
0
        public void SER_isSerializable()
        {
            if ((GetComponentAdapterNature() & SERIALIZABLE) > 0)
            {
                IMutablePicoContainer picoContainer    = new DefaultPicoContainer(CreateDefaultComponentAdapterFactory());
                IComponentAdapter     componentAdapter = prepSER_isSerializable(picoContainer);
                Assert.AreSame(GetComponentAdapterType(), componentAdapter.GetType());
                Object instance = componentAdapter.GetComponentInstance(picoContainer);
                Assert.IsNotNull(instance);

                IComponentAdapter serializedComponentAdapter = null;

                using (Stream stream = new MemoryStream())
                {
                    // Serialize it to memory
                    IFormatter formatter = new BinaryFormatter();
                    formatter.Serialize(stream, componentAdapter);

                    // De-Serialize from memory
                    stream.Seek(0, 0); // reset stream to begining
                    serializedComponentAdapter = (IComponentAdapter)formatter.Deserialize(stream);
                }

                Assert.AreEqual(componentAdapter.ComponentKey, serializedComponentAdapter.ComponentKey);
                Object instanceAfterSerialization = serializedComponentAdapter.GetComponentInstance(picoContainer);
                Assert.IsNotNull(instanceAfterSerialization);
                Assert.AreSame(instance.GetType(), instanceAfterSerialization.GetType());
            }
        }
Пример #3
0
        public void DEF_verifyWithoutDependencyWorks()
        {
            IMutablePicoContainer picoContainer    = new DefaultPicoContainer(CreateDefaultComponentAdapterFactory());
            IComponentAdapter     componentAdapter = prepDEF_verifyWithoutDependencyWorks(picoContainer);

            Assert.AreSame(GetComponentAdapterType(), componentAdapter.GetType());
            componentAdapter.Verify(picoContainer);
        }
Пример #4
0
        public void DEF_verifyDoesNotInstantiate()
        {
            IMutablePicoContainer picoContainer    = new DefaultPicoContainer(CreateDefaultComponentAdapterFactory());
            IComponentAdapter     componentAdapter = prepDEF_verifyDoesNotInstantiate(picoContainer);

            Assert.AreSame(GetComponentAdapterType(), componentAdapter.GetType());
            IComponentAdapter notInstantiatablecomponentAdapter =
                new NotInstantiatableComponentAdapter(componentAdapter);
            IPicoContainer wrappedPicoContainer =
                WrapComponentInstances(typeof(NotInstantiatableComponentAdapter), picoContainer, null);

            notInstantiatablecomponentAdapter.Verify(wrappedPicoContainer);
        }
Пример #5
0
 public void INS_createsNewInstances()
 {
     if ((GetComponentAdapterNature() & INSTANTIATING) > 0)
     {
         IMutablePicoContainer picoContainer    = new DefaultPicoContainer(CreateDefaultComponentAdapterFactory());
         IComponentAdapter     componentAdapter = prepINS_createsNewInstances(picoContainer);
         Assert.AreSame(GetComponentAdapterType(), componentAdapter.GetType());
         object instance = componentAdapter.GetComponentInstance(picoContainer);
         Assert.IsNotNull(instance);
         // following was a "AreNotSame" assertion
         Assert.IsFalse(instance == componentAdapter.GetComponentInstance(picoContainer));
         Assert.AreSame(instance.GetType(), componentAdapter.GetComponentInstance(picoContainer).GetType());
     }
 }
Пример #6
0
 public void RES_dependenciesAreResolved()
 {
     if ((GetComponentAdapterNature() & RESOLVING) > 0)
     {
         IList    dependencies                  = new ArrayList();
         object[] wrapperDependencies           = new object[] { dependencies };
         IMutablePicoContainer picoContainer    = new DefaultPicoContainer(CreateDefaultComponentAdapterFactory());
         IComponentAdapter     componentAdapter = prepRES_dependenciesAreResolved(picoContainer);
         Assert.AreSame(GetComponentAdapterType(), componentAdapter.GetType());
         Assert.IsFalse(picoContainer.ComponentAdapters.Contains(componentAdapter));
         IPicoContainer wrappedPicoContainer =
             WrapComponentInstances(typeof(CollectingComponentAdapter), picoContainer, wrapperDependencies);
         object instance = componentAdapter.GetComponentInstance(wrappedPicoContainer);
         Assert.IsNotNull(instance);
         Assert.IsTrue(dependencies.Count > 0);
     }
 }
Пример #7
0
 public void INS_runtimeExceptionIsRethrown()
 {
     if ((GetComponentAdapterNature() & INSTANTIATING) > 0)
     {
         IMutablePicoContainer picoContainer    = new DefaultPicoContainer(CreateDefaultComponentAdapterFactory());
         IComponentAdapter     componentAdapter = prepINS_systemExceptionIsRethrown(picoContainer);
         Assert.AreSame(GetComponentAdapterType(), componentAdapter.GetType());
         try
         {
             componentAdapter.GetComponentInstance(picoContainer);
             Assert.Fail("Thrown RuntimeException excpected");
         }
         catch (PicoInvocationTargetInitializationException e)
         {
             Assert.AreEqual("test", e.GetBaseException().Message);
         }
     }
 }
Пример #8
0
 public void VER_verificationFails()
 {
     if ((GetComponentAdapterNature() & VERIFYING) > 0)
     {
         IMutablePicoContainer picoContainer    = new DefaultPicoContainer(CreateDefaultComponentAdapterFactory());
         IComponentAdapter     componentAdapter = prepVER_verificationFails(picoContainer);
         Assert.AreSame(GetComponentAdapterType(), componentAdapter.GetType());
         try
         {
             componentAdapter.Verify(picoContainer);
             Assert.Fail("PicoIntrospectionException expected");
         }
         catch (PicoIntrospectionException)
         {
         }
         catch (Exception e)
         {
             Assert.Fail("PicoIntrospectionException expected, but got " + e.GetType().Name);
         }
         try
         {
             componentAdapter.GetComponentInstance(picoContainer);
             Assert.Fail("PicoInitializationException or PicoIntrospectionException expected");
         }
         catch (PicoInitializationException)
         {
         }
         catch (PicoIntrospectionException)
         {
         }
         catch (Exception e)
         {
             Assert.Fail("PicoInitializationException or PicoIntrospectionException expected, but got " +
                         e.GetType().Name);
         }
     }
 }
Пример #9
0
        public static object Adapt(this IComponentAdapter adapter, object component, IComponentAdapterController rootAdapter)
        {
            var method = adapter.GetType().GetMethod(nameof(IComponentAdapter <ComponentBase> .Adapt));

            return(method.Invoke(adapter, new object[] { component, rootAdapter }));
        }