ModuleTestBase.java
package com.fasterxml.jackson.datatype.jsr310;
import java.time.ZoneId;
import java.util.Arrays;
import java.util.Collections;
import java.util.Locale;
import java.util.Map;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class ModuleTestBase
{
protected static final ZoneId UTC = ZoneId.of("UTC");
protected static final ZoneId Z_CHICAGO = ZoneId.of("America/Chicago");
protected static final ZoneId Z_BUDAPEST = ZoneId.of("Europe/Budapest");
public static class NoCheckSubTypeValidator
extends PolymorphicTypeValidator.Base
{
private static final long serialVersionUID = 1L;
@Override
public Validity validateBaseType(MapperConfig<?> config, JavaType baseType) {
return Validity.ALLOWED;
}
}
// 14-Mar-2016, tatu: Serialization of trailing zeroes may change [datatype-jsr310#67]
// Note, tho, that "0.0" itself is special case; need to avoid scientific notation:
final protected static String NO_NANOSECS_SER = "0.0";
final protected static String NO_NANOSECS_SUFFIX = ".000000000";
protected static ObjectMapper newMapper() {
return mapperBuilder().build();
}
protected static JsonMapper.Builder mapperBuilder() {
return JsonMapper.builder()
.defaultLocale(Locale.ENGLISH)
.addModule(new JavaTimeModule());
}
protected String q(String value) {
return "\"" + value + "\"";
}
protected String a2q(String json) {
return json.replace("'", "\"");
}
protected void verifyException(Throwable e, String... matches)
{
String msg = e.getMessage();
String lmsg = (msg == null) ? "" : msg.toLowerCase();
for (String match : matches) {
String lmatch = match.toLowerCase();
if (lmsg.indexOf(lmatch) >= 0) {
return;
}
}
throw new Error("Expected an exception with one of substrings ("+Arrays.asList(matches)+"): got one with message \""+msg+"\"");
}
protected static <T> Map<T, String> asMap(T key, String value) {
return Collections.singletonMap(key, value);
}
protected static String mapAsString(String key, String value) {
return String.format("{\"%s\":\"%s\"}", key, value);
}
}