package io.ebeaninternal.server.type;
import io.ebean.config.JsonConfig;
import io.ebeaninternal.server.text.json.WriteJson;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import java.io.IOException;
import java.io.StringWriter;
import static org.junit.Assert.assertEquals;
/**
* Base class to help json testing.
*/
public class JsonTester<T> {
protected JsonFactory factory = new JsonFactory();
protected ScalarType<T> type;
public JsonTester(ScalarType<T> type) {
this.type = type;
}
public void test(T value) throws IOException {
StringWriter writer = new StringWriter();
JsonGenerator generator = factory.createGenerator(writer);
generator.writeStartObject();
WriteJson writeJson = new WriteJson(generator, JsonConfig.Include.ALL);
writeJson.writeFieldName("key");
type.jsonWrite(generator, value);
generator.writeEndObject();
generator.flush();
JsonParser parser = factory.createParser(writer.toString());
JsonToken token = parser.nextToken();
assertEquals(JsonToken.START_OBJECT, token);
token = parser.nextToken();
assertEquals(JsonToken.FIELD_NAME, token);
parser.nextToken();
T val1 = type.jsonRead(parser);
assertEquals(value, val1);
}
}