package LinGUIne.tests;
import static org.junit.Assert.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.HashMap;
import org.junit.BeforeClass;
import org.junit.Test;
import LinGUIne.model.KeyValueResultContents;
import LinGUIne.model.ResultData;
import LinGUIne.serialization.KeyValueResultTranslator;
public class KeyValueResultTranslatorTest {
static String jsonContent;
@BeforeClass
public static void setUpBeforeClass(){
String workingDir = System.getProperty("user.dir");
String testDataDir = workingDir + "/testdata/";
String testFilePath = testDataDir + "TestKeyValueResult.json";
try(BufferedReader reader = Files.newBufferedReader(new File(testFilePath).toPath(),
Charset.defaultCharset())){
jsonContent = "";
while(reader.ready()){
jsonContent += reader.readLine() + "\n";
}
}
catch(IOException e) {
fail();
}
}
@Test
public void testFromJson(){
KeyValueResultContents contents = KeyValueResultTranslator.fromJson(
jsonContent);
assertNotNull("Translator should never return null for valid "
+ "KeyValueResult json file.", contents);
}
@Test
public void testToJson(){
KeyValueResultContents contents = new KeyValueResultContents();
HashMap<String, ResultData> firstEntry = new HashMap<String, ResultData>();
HashMap<String, ResultData> secondEntry = new HashMap<String, ResultData>();
HashMap<String, ResultData> thirdEntry = new HashMap<String, ResultData>();
firstEntry.put("word", new ResultData("the"));
firstEntry.put("count", new ResultData(10));
secondEntry.put("word", new ResultData("linguine"));
secondEntry.put("count", new ResultData(7));
thirdEntry.put("word", new ResultData("test"));
thirdEntry.put("count", new ResultData(5));
contents.addKeyValuePairs(firstEntry);
contents.addKeyValuePairs(secondEntry);
contents.addKeyValuePairs(thirdEntry);
String newJsonContent = KeyValueResultTranslator.toJson(contents);
assertNotNull("Translator should never return null Json.",
newJsonContent);
assertEquals("Json returned by translator should be identical to Json "
+ "describing the same content.", jsonContent.trim(),
newJsonContent.trim());
}
}