package org.nutz.mvc.adaptor.injector;
import static org.junit.Assert.assertEquals;
import java.lang.reflect.Type;
import org.junit.Test;
import org.nutz.lang.Lang;
import org.nutz.mock.Mock;
import org.nutz.mock.servlet.MockHttpServletRequest;
import org.nutz.mvc.adaptor.ParamInjector;
public class ArrayInjectorTest {
public static ArrayInjector inj(String name, Type type, boolean auto_split) {
return new ArrayInjector(name, null, type, null, null, auto_split);
}
/**
* for issue #816
*/
@Test
public void test_array_no_split() {
// 准备数据
MockHttpServletRequest req = Mock.servlet.request();
req.setParameterValues("abc", Lang.array("A,B"));
// 执行
ParamInjector pi = inj("abc", String[].class, false);
Object obj = pi.get(null, req, null, null);
// 检测
assertEquals(String[].class, obj.getClass());
String[] ss = (String[]) obj;
assertEquals(1, ss.length);
assertEquals("A,B", ss[0]);
}
/**
* for issue #816
*/
@Test
public void test_array_auto_split() {
// 准备数据
MockHttpServletRequest req = Mock.servlet.request();
req.setParameterValues("abc", Lang.array("A,B"));
// 执行
ParamInjector pi = inj("abc", String[].class, true);
Object obj = pi.get(null, req, null, null);
// 检测
assertEquals(String[].class, obj.getClass());
String[] ss = (String[]) obj;
assertEquals(2, ss.length);
assertEquals("A", ss[0]);
assertEquals("B", ss[1]);
}
/**
* for issue #816
*/
@Test
public void test_array_no_split2() {
// 准备数据
MockHttpServletRequest req = Mock.servlet.request();
req.setParameterValues("abc", Lang.array("A,B", "X,Y"));
// 执行
ParamInjector pi = inj("abc", String[].class, false);
Object obj = pi.get(null, req, null, null);
// 检测
assertEquals(String[].class, obj.getClass());
String[] ss = (String[]) obj;
assertEquals(2, ss.length);
assertEquals("A,B", ss[0]);
assertEquals("X,Y", ss[1]);
}
}