package edu.berkeley.cs.succinct.object.deserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import edu.berkeley.cs.succinct.DataType;
import edu.berkeley.cs.succinct.block.json.FieldMapping;
import junit.framework.TestCase;
import java.io.IOException;
public class JsonDeserializerTest extends TestCase {
static ObjectMapper mapper = new ObjectMapper();
static void assertJsonEquals(String json1, String json2) throws IOException {
JsonNode tree1 = mapper.readTree(json1);
JsonNode tree2 = mapper.readTree(json2);
assertTrue(tree1.equals(tree2));
}
public void testDeserialize() throws Exception {
byte[] jsonSerializedData1 = new byte[] {-120, 'a', 'b', 'c', -120, -119, '1', '8', -119};
byte[] jsonSerializedData2 =
new byte[] {-118, 'a', 'b', 'c', -118, -117, 'd', 'e', 'f', -117, -119, '1', '6', '.', '5',
-119};
String expectedJsonString1 = "{\"name\":\"abc\", \"age\":18.0}";
String expectedJsonString2 = "{\"name\": {\"first\":\"abc\", \"last\":\"def\"}, \"age\":16.5}";
FieldMapping mapping = new FieldMapping();
mapping.put("name", (byte) -120, DataType.STRING);
mapping.put("age", (byte) -119, DataType.FLOAT);
mapping.put("name.first", (byte) -118, DataType.STRING);
mapping.put("name.last", (byte) -117, DataType.STRING);
JsonDeserializer deserializer = new JsonDeserializer(mapping);
String jsonString1 = deserializer.deserialize(jsonSerializedData1);
assertJsonEquals(expectedJsonString1, jsonString1);
String jsonString2 = deserializer.deserialize(jsonSerializedData2);
assertJsonEquals(expectedJsonString2, jsonString2);
}
}