package at.ac.ait.archistar.data;
import static org.fest.assertions.api.Assertions.*;
import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import at.ac.ait.archistar.engine.dataobjects.CustomSerializer;
import at.ac.ait.archistar.engine.dataobjects.FSObject;
import at.ac.ait.archistar.engine.dataobjects.SimpleFile;
public class CustomSerializerTest {
private static final String testData = "datadatadata";
private static final String testFilename = "testfilename.dat";
private CustomSerializer serializer;
byte[] serializedData;
@Before
public void prepareTestdata() {
Map<String, String> metadata = new HashMap<>();
metadata.put("key0", "value0");
metadata.put("key1", "value1");
byte[] testString = testData.getBytes();
SimpleFile fs = new SimpleFile(testFilename, testString, metadata);
serializer = new CustomSerializer();
serializedData = serializer.serialize(fs);
}
@Test
public void testDataWasCreated() {
assertThat(serializedData).isNotNull();
}
@Test
public void testDeserializationOfObject() {
FSObject des = serializer.deserialize(serializedData);
assertThat(des).isNotNull();
}
@Test
public void testPathAfterDeserialization() {
FSObject des = serializer.deserialize(serializedData);
assertThat(des.getPath()).isEqualTo(testFilename);
}
@Test
public void testMetadataAfterDeserialization() {
FSObject des = serializer.deserialize(serializedData);
assertThat(des.getMetadata()).contains(entry("key0", "value0"), entry("key1", "value1"));
}
@Test
public void testDataAfterDeserialization() {
FSObject des = serializer.deserialize(serializedData);
assertThat(des).isInstanceOf(SimpleFile.class);
String decoded = new String(((SimpleFile) des).getData());
assertThat(decoded).isEqualTo(testData);
}
}