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]); } } }
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()); } }
public void DEF_verifyWithoutDependencyWorks() { IMutablePicoContainer picoContainer = new DefaultPicoContainer(CreateDefaultComponentAdapterFactory()); IComponentAdapter componentAdapter = prepDEF_verifyWithoutDependencyWorks(picoContainer); Assert.AreSame(GetComponentAdapterType(), componentAdapter.GetType()); componentAdapter.Verify(picoContainer); }
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); }
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()); } }
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); } }
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); } } }
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); } } }
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 })); }