package testapp.endpoint.binding.map;
import org.junit.Test;
import org.osgl.util.C;
import testapp.endpoint.EndPointTestContext.RequestMethod;
import testapp.endpoint.ParamEncoding;
import testapp.endpoint.binding.ActionParameterBindingTestBase;
import java.util.Map;
import java.util.TreeMap;
import static testapp.endpoint.ParamEncoding.FOUR;
import static testapp.endpoint.ParamEncoding.JSON;
import static testapp.endpoint.ParamEncoding.TWO;
public abstract class SimpleTypeMapValBindingTestBase<T> extends ActionParameterBindingTestBase {
protected static final String PARAM = "v";
private String path_v;
private String path_k;
public SimpleTypeMapValBindingTestBase(String path_v, String path_k) {
this.path_v = path_v;
this.path_k = path_k;
}
@Override
protected final String urlContext() {
return "/smpr";
}
public abstract Map<String, T> nonEmptyMap();
public Map<T, String> keyTypedNonEmptyMap() {
return flip(nonEmptyMap());
}
protected final String expectedRespForNonEmptyMap() {
return com.alibaba.fastjson.JSON.toJSONString(new TreeMap<String, T>(nonEmptyMap()));
}
protected final String expectedRespForKeyTypedNonEmptyMap() {
return com.alibaba.fastjson.JSON.toJSONString(new TreeMap<T, String>(keyTypedNonEmptyMap()));
}
@Test
public final void testNullMapGetMethodTwo() throws Exception {
_verify("{}", path_v, null, RequestMethod.GET, TWO);
}
@Test
public final void testNullMapGetMethodFour() throws Exception {
_verify("{}", path_v, null, RequestMethod.GET, FOUR);
}
@Test
public final void testNullMapPostMethodTwo() throws Exception {
_verify("{}", path_v, null, RequestMethod.POST_FORM_DATA, TWO);
}
@Test
public final void testNullMapPostMethodFour() throws Exception {
_verify("{}", path_v, null, RequestMethod.POST_FORM_DATA, FOUR);
}
@Test
public final void testNullMapPostMethodJson() throws Exception {
_verify("{}", path_v, null, RequestMethod.POST_JSON, JSON);
}
@Test
public final void testNullTypedKeyMapGetMethodTwo() throws Exception {
_verify("{}", path_k, null, RequestMethod.GET, TWO);
}
@Test
public final void testNullTypedKeyMapGetMethodFour() throws Exception {
_verify("{}", path_k, null, RequestMethod.GET, FOUR);
}
@Test
public final void testNullTypedKeyMapPostMethodTwo() throws Exception {
_verify("{}", path_k, null, RequestMethod.POST_FORM_DATA, TWO);
}
@Test
public final void testNullTypedKeyMapPostMethodFour() throws Exception {
_verify("{}", path_k, null, RequestMethod.POST_FORM_DATA, FOUR);
}
@Test
public final void testNullTypedKeyMapPostMethodJson() throws Exception {
_verify("{}", path_k, null, RequestMethod.POST_JSON, JSON);
}
@Test
public final void testEmptyMapGetTwo() throws Exception {
_verify("{}", path_v, C.<String, T>map(), RequestMethod.GET, TWO);
}
@Test
public final void testEmptyMapGetFour() throws Exception {
_verify("{}", path_v, C.<String, T>map(), RequestMethod.GET, FOUR);
}
@Test
public final void testEmptyMapPostTwo() throws Exception {
_verify("{}", path_v, C.<String, T>map(), RequestMethod.POST_FORM_DATA, TWO);
}
@Test
public final void testEmptyMapPostFour() throws Exception {
_verify("{}", path_v, C.<String, T>map(), RequestMethod.POST_FORM_DATA, FOUR);
}
@Test
public final void testEmptyMapPostJson() throws Exception {
_verify("{}", path_v, C.<String, T>map(), RequestMethod.POST_JSON, JSON);
}
@Test
public final void testTypedKeyEmptyMapGetTwo() throws Exception {
_verify("{}", path_k, C.<String, T>map(), RequestMethod.GET, TWO);
}
@Test
public final void testTypedKeyEmptyMapGetFour() throws Exception {
_verify("{}", path_k, C.<String, T>map(), RequestMethod.GET, FOUR);
}
@Test
public final void testTypedKeyEmptyMapPostTwo() throws Exception {
_verify("{}", path_k, C.<String, T>map(), RequestMethod.POST_FORM_DATA, TWO);
}
@Test
public final void testTypedKeyEmptyMapPostFour() throws Exception {
_verify("{}", path_k, C.<String, T>map(), RequestMethod.POST_FORM_DATA, FOUR);
}
@Test
public final void testTypedKeyEmptyMapPostJson() throws Exception {
_verify("{}", path_k, C.<String, T>map(), RequestMethod.POST_JSON, JSON);
}
@Test
public final void testNonEmptyMapGetTwo() throws Exception {
_verify(ev(), path_v, nonEmptyMap(), RequestMethod.GET, TWO);
}
@Test
public final void testNonEmptyMapGetFour() throws Exception {
_verify(ev(), path_v, nonEmptyMap(), RequestMethod.GET, FOUR);
}
@Test
public final void testNonEmptyMapPostTwo() throws Exception {
_verify(ev(), path_v, nonEmptyMap(), RequestMethod.POST_FORM_DATA, TWO);
}
@Test
public final void testNonEmptyMapPostFour() throws Exception {
_verify(ev(), path_v, nonEmptyMap(), RequestMethod.POST_FORM_DATA, FOUR);
}
@Test
public final void testNonEmptyMapPostJson() throws Exception {
_verify(ev(), path_v, nonEmptyMap(), RequestMethod.POST_JSON, JSON);
}
@Test
public final void testKeyTypedNonEmptyMapGetTwo() throws Exception {
_verify(ek(), path_k, keyTypedNonEmptyMap(), RequestMethod.GET, TWO);
}
@Test
public void testKeyTypedNonEmptyMapGetFour() throws Exception {
_verify(ek(), path_k, keyTypedNonEmptyMap(), RequestMethod.GET, FOUR);
}
@Test
public final void testKeyTypedNonEmptyMapPostTwo() throws Exception {
_verify(ek(), path_k, keyTypedNonEmptyMap(), RequestMethod.POST_FORM_DATA, TWO);
}
@Test
public void testKeyTypedNonEmptyMapPostFour() throws Exception {
_verify(ek(), path_k, keyTypedNonEmptyMap(), RequestMethod.POST_FORM_DATA, FOUR);
}
@Test
public final void testKeyTypedNonEmptyMapPostJson() throws Exception {
_verify(ek(), path_k, keyTypedNonEmptyMap(), RequestMethod.POST_JSON, JSON);
}
private String ev() {
return expectedRespForNonEmptyMap();
}
private String ek() {
return expectedRespForKeyTypedNonEmptyMap();
}
private void _verify(
String expected,
String urlPath,
Map<?, ?> data,
RequestMethod method,
ParamEncoding encoding
) throws Exception {
context.expected(expected).url(processUrl(urlPath)).params(encoding.encode(PARAM, data)).method(method).applyTo(this);
}
protected static <T> Map<T, String> flip(Map<String, T> map) {
Map ret = C.newMap();
for (Map.Entry<String, T> entry : map.entrySet()) {
ret.put(entry.getValue(), entry.getKey());
}
return ret;
}
}