package org.handwerkszeug.riak.transport.rest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.JavaType;
import org.handwerkszeug.riak.transport.rest.JsonBucket;
import org.handwerkszeug.riak.transport.rest.internal.BucketHolder;
import org.handwerkszeug.riak.util.JsonUtil;
import org.junit.Before;
import org.junit.Test;
/**
* @author taichi
*/
public class JsonBucketTest {
ObjectMapper om;
@Before
public void setUp() {
om = new ObjectMapper();
}
@Test
public void test() throws Exception {
JsonNode expected = JsonUtil.read(JsonBucketTest.class, "test");
System.out.println(expected);
JsonBucket bucket = om.readValue(expected, JsonBucket.class);
System.out.println(bucket);
JsonNode actual = to(bucket);
System.out.println(actual);
assertEquals(expected, actual);
}
@Test
public void testNull() throws Exception {
JsonNode expected = JsonUtil.read(JsonBucketTest.class, "null");
JsonBucket bucket = om.readValue(expected, JsonBucket.class);
assertNull(bucket.getBackend());
JsonNode actual = to(bucket);
assertEquals(expected, actual);
}
@Test
public void testWithIgnore() throws Exception {
JsonNode ignore = JsonUtil.read(JsonBucketTest.class, "withIgnore");
JsonBucket bucket = om.readValue(ignore, JsonBucket.class);
JsonNode actual = to(bucket);
JsonNode expected = JsonUtil.read(JsonBucketTest.class, "test");
assertEquals(expected, actual);
}
protected JsonNode to(Object value) throws IOException,
JsonGenerationException, JsonMappingException,
JsonProcessingException {
JsonFactory factory = new JsonFactory();
StringWriter sw = new StringWriter();
JsonGenerator jgen = factory.createJsonGenerator(sw);
om.writeValue(jgen, value);
return om.readTree(new StringReader(sw.toString()));
}
@Test
public void testProps() throws Exception {
JsonNode eProps = JsonUtil.read(JsonBucketTest.class, "props");
JavaType jt = om.getTypeFactory().constructType(BucketHolder.class);
BucketHolder holder = om.readValue(eProps, jt);
JsonNode expected = JsonUtil.read(JsonBucketTest.class, "test");
JsonNode actual = to(holder.props);
assertEquals(actual, expected);
JsonNode aProps = to(holder);
assertEquals(eProps, aProps);
System.out.println(aProps);
}
}