public void ShouldResolveClassWithDeeperDependencies()
{
// given
var dependency1 = new VerySimpleClass();
//var dependency2 = new ClassWithSimpleDependency();
var container = new ObjectContainer();
container.RegisterTypeAs<ClassWithDeeperDependency, 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(ClassWithDeeperDependency), obj);
Assert.AreSame(dependency2, ((ClassWithDeeperDependency)obj).Dependency);
Assert.AreSame(dependency1, ((ClassWithSimpleDependency)((ClassWithDeeperDependency)obj).Dependency).Dependency);
}