Assert.assertEquals(1, grandchild.getBeans(Cow.class).size());
}
@Test
public void testCircular() {
BeanManagerImpl root = BeanManagerImpl.newRootManager(STATIC_INSTANCE, "root", services);
Container.initialize(root, services);
BeanManagerImpl child = BeanManagerImpl.newRootManager(STATIC_INSTANCE, "child", services);
BeanManagerImpl grandchild = BeanManagerImpl.newRootManager(STATIC_INSTANCE, "grandchild", services);
grandchild.addAccessibleBeanManager(child);
child.addAccessibleBeanManager(root);
grandchild.addAccessibleBeanManager(root);
root.addAccessibleBeanManager(grandchild);
addBean(root, Cow.class);
addBean(child, Chicken.class);
addBean(grandchild, Pig.class);
Assert.assertEquals(1, root.getBeans(Pig.class).size());
Assert.assertEquals(0, root.getBeans(Chicken.class).size());
Assert.assertEquals(1, root.getBeans(Cow.class).size());
Assert.assertEquals(0, child.getBeans(Pig.class).size());
Assert.assertEquals(1, child.getBeans(Chicken.class).size());
Assert.assertEquals(1, child.getBeans(Cow.class).size());
Assert.assertEquals(1, grandchild.getBeans(Pig.class).size());
Assert.assertEquals(1, grandchild.getBeans(Chicken.class).size());
Assert.assertEquals(1, grandchild.getBeans(Cow.class).size());
}