public void ShouldResolveClassWithDeeperRedundantDependencies()
{
// given
var dependency1 = new VerySimpleClass();
//var dependency2 = new ClassWithSimpleDependency();
var container = new ObjectContainer();
container.RegisterTypeAs<ClassWithDeeperRedundantDependencies, IInterface4>();
container.RegisterInstanceAs<IInterface1>(dependency1);
container.RegisterTypeAs<ClassWithSimpleDependency, IInterface3>();
// when
var obj = container.Resolve<IInterface4>();
var dependency2 = container.Resolve<IInterface3>();
// then
Assert.IsNotNull(obj);
Assert.IsInstanceOf(typeof(ClassWithDeeperRedundantDependencies), obj);
Assert.AreSame(dependency2, ((ClassWithDeeperRedundantDependencies)obj).Dependency1);
Assert.AreSame(dependency1, ((ClassWithDeeperRedundantDependencies)obj).Dependency2);
Assert.AreSame(dependency1, ((ClassWithSimpleDependency)((ClassWithDeeperRedundantDependencies)obj).Dependency1).Dependency);
}