package de.galan.verjson.samples;
import static org.assertj.core.api.Assertions.*;
import org.junit.Before;
import org.junit.Test;
import de.galan.commons.test.AbstractTestParent;
import de.galan.commons.time.ApplicationClock;
import de.galan.verjson.core.Verjson;
import de.galan.verjson.samples.v1.Example1;
import de.galan.verjson.samples.v1.Example1Versions;
import de.galan.verjson.samples.v2.Example2;
import de.galan.verjson.samples.v2.Example2Versions;
import de.galan.verjson.samples.v3.Example3;
import de.galan.verjson.samples.v3.Example3Versions;
/**
* Test handling of null inputs
*
* @author daniel
*/
public class VerjsonUsageNullTest extends AbstractTestParent {
private Verjson<Example1> v1;
private Verjson<Example2> v2;
private Verjson<Example3> v3;
@Before
public void before() {
v1 = Verjson.create(Example1.class, new Example1Versions());
v2 = Verjson.create(Example2.class, new Example2Versions());
v3 = Verjson.create(Example3.class, new Example3Versions());
ApplicationClock.setUtc("2014-05-06T06:42:28Z");
}
@Test
public void nullValue() throws Exception {
String written1 = v1.write(new Example1());
assertThat(written1).isEqualTo("{\"$v\":1,\"$ts\":\"2014-05-06T06:42:28.000Z\",\"$d\":{}}");
assertThat(v1.read(written1)).isEqualTo(new Example1());
assertThat(v2.read(written1)).isEqualToComparingFieldByField(new Example2());
assertThat(v2.read(written1)).isEqualTo(new Example2());
assertThat(v3.read(written1)).isEqualTo(new Example3());
}
}