package org.nutz.ioc.loader.xml;
import static org.junit.Assert.*;
import java.util.Collection;
import org.junit.Test;
import org.nutz.ioc.Ioc;
import org.nutz.ioc.IocLoader;
import org.nutz.ioc.ObjectLoadException;
import org.nutz.ioc.impl.NutIoc;
import org.nutz.ioc.loader.xml.meta.Bee;
import org.nutz.ioc.meta.IocField;
import org.nutz.ioc.meta.IocObject;
import org.nutz.ioc.meta.IocValue;
public class XmlIocLoaderTest {
IocLoader getNew(String fileName) {
return new XmlIocLoader(fileName);
}
@Test
public void testXmlIocLoader() throws ObjectLoadException {
IocLoader iocLoader = getNew("org/nutz/ioc/loader/xml/conf/zzh-offered.xml");
assertTrue(iocLoader.getName() != null);
assertTrue(iocLoader.getName().length > 0);
for (String name : iocLoader.getName()) {
assertNotNull(name);
assertNotNull(iocLoader.load(null, name));
IocObject iocObject = iocLoader.load(null, name);
if (iocObject.hasArgs()) {
for (IocValue iocValue : iocObject.getArgs()) {
iocValue.getType();
iocValue.getValue();
checkValue(iocValue);
}
}
if (iocObject.getFields() != null) {
for (IocField iocField : iocObject.getFields()) {
assertNotNull(iocField.getName());
if (iocField.getValue() != null) {
IocValue iocValue = iocField.getValue();
checkValue(iocValue);
}
}
}
}
iocLoader.load(null, "obj").getFields()[0].getValue().getValue();
}
private void checkValue(IocValue iocValue) {
iocValue.getType();
if (iocValue.getValue() != null && iocValue.getValue() instanceof Collection<?>) {
Collection<?> collection = (Collection<?>) iocValue.getValue();
for (Object object : collection) {
assertNotNull(object);
}
}
}
@Test
public void test_simple_case() {
Ioc ioc = new NutIoc(getNew("org/nutz/ioc/loader/xml/conf/simple.xml"));
Bee c = ioc.get(Bee.class, "C");
assertEquals("TheC", c.getName());
assertEquals(15, c.getAge());
assertEquals("TheQueen", c.getMother().getName());
assertEquals(3, c.getFriends().size());
assertEquals("TheA", c.getFriends().get(0).getName());
assertEquals("TheB", c.getFriends().get(1).getName());
assertEquals(1,c.getMap().size());
assertEquals("ABC",c.getMap().get("abc"));
}
}