return yan;
}
public void testUpDownDependenciesCannotBeFollowed()
throws Exception{
Container parent = createYanContainer();
Container child = createYanContainer().inherit(parent);
//child = trans(child);
// ComponentF -> ComponentA -> ComponentB+c
child.registerConstructor(ComponentF.class);
parent.registerConstructor(ComponentA.class);
parent.registerConstructor(ComponentB.class);
child.registerConstructor(ComponentC.class);
try{
child.getInstance(ComponentF.class);
fail("should not resolve C");
}
catch(IrresolveableArgumentException e){
//e.printResolutionTrace();
assertEquals(3, e.getResolutionTrace().size());
assertEntry(e, 0, "parameter 1 of <public tests.jfun.yan.tck.BaseContainerTestCase$ComponentA(tests.jfun.yan.tck.BaseContainerTestCase$ComponentB,tests.jfun.yan.tck.BaseContainerTestCase$ComponentC)>");
assertEntry(e, 1, "parameter 0 of <public tests.jfun.yan.tck.BaseContainerTestCase$ComponentF(tests.jfun.yan.tck.BaseContainerTestCase$ComponentA)>");
assertEntry(e, 2, "getInstance <class tests.jfun.yan.tck.BaseContainerTestCase$ComponentF>");
assertParameter(e, 0, ComponentA.class, 1);
assertParameter(e, 1, ComponentF.class, 0);
assertEquals(ComponentC.class, e.getParameterType());
}
// ComponentF1 -> ComponentA1 -> ComponentB1+C1 -> ComponentD
child.registerConstructor(ComponentF1.class);
parent.registerConstructor(ComponentA1.class);
parent.registerConstructor(ComponentB1.class);
parent.registerConstructor(ComponentC1.class);
child.registerConstructor(ComponentD.class);
try{
child.getInstance(ComponentF1.class);
fail("should not resolve D");
}
catch(IrresolveableArgumentException e){
//e.printResolutionTrace(System.err);
assertEquals(4, e.getResolutionTrace().size());