package jp.co.worksap.workspace;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.io.IOException;
import java.util.Map;
import jp.co.worksap.workspace.common.OperatingSystem;
import jp.co.worksap.workspace.common.OperatingSystemKeyDeserializer;
import jp.co.worksap.workspace.ide.eclipse.EclipsePlugin;
import jp.co.worksap.workspace.ide.eclipse.Version;
import lombok.Setter;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.junit.Test;
import com.google.common.collect.Maps;
import com.google.common.io.Resources;
/**
* <p>Test case to ensure that each XxxDeserializer works well.
*/
public class DeserializersTest {
@Test
public void test() throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();
Data parsedData = mapper.readValue(Resources.getResource("DeserializersTest.json"), Data.class);
Map<OperatingSystem, OperatingSystem> expectedMap = Maps.newHashMap();
expectedMap.put(OperatingSystem.WIN32, OperatingSystem.WIN32);
assertThat(parsedData.version, is(equalTo(Version.fromString("1.0.0"))));
assertThat(parsedData.plugin, is(equalTo(EclipsePlugin.of("org.eclipse.egit.feature.group"))));
assertThat(parsedData.os, is(equalTo(expectedMap)));
}
@Setter
public static final class Data {
Version version;
@JsonDeserialize(keyUsing = OperatingSystemKeyDeserializer.class)
Map<OperatingSystem, OperatingSystem> os;
EclipsePlugin plugin;
}
}