package com.datascience.serialization.json; import com.datascience.core.base.LObject; import com.datascience.core.base.Worker; import com.datascience.datastoring.datamodels.memory.InMemoryResults; import com.datascience.core.results.DatumResult; import com.datascience.core.results.IResults; import com.datascience.core.results.WorkerResult; import com.datascience.datastoring.datamodels.full.MemoryJobStorage; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class ResultsJSONingTest { private Gson gson; public ResultsJSONingTest() { GsonBuilder builder = JSONUtils.getFilledDefaultGsonBuilder(); gson = builder.create(); } @Test public void resultsSerializationTest() { ArrayList<String> categories = new ArrayList<String>(); categories.add("category1"); categories.add("category2"); MemoryJobStorage js = new MemoryJobStorage(); IResults<String, DatumResult, WorkerResult> results = js.getNominalResults("testid", categories); LObject<String> obj = new LObject<String>("obj"); obj.setEvaluationLabel("category2"); DatumResult dr = results.getOrCreateDatumResult(obj); Map<String, Double> categoryProb = new HashMap<String, Double>(); categoryProb.put("category1", 0.3); categoryProb.put("category2", 0.7); dr.setCategoryProbabilites(categoryProb); results.addDatumResult(obj, dr); String serialized = gson.toJson(results); LObject<String> imaginaryObj = new LObject<String>("ImaginaryObj"); Worker imaginaryWorker = new Worker("ImaginaryWorker"); InMemoryResults<String, DatumResult, WorkerResult> deserialized = gson.fromJson(serialized, new TypeToken<InMemoryResults<String, DatumResult, WorkerResult>>(){}.getType()); // Assert.assertEquals(deserialized.getOrCreateDatumResult(imaginaryObj).getClass(), // results.getOrCreateDatumResult(imaginaryObj).getClass()); // Assert.assertEquals(deserialized.getOrCreateWorkerResult(imaginaryWorker).getClass(), // results.getOrCreateWorkerResult(imaginaryWorker).getClass()); // ^^^ above doesn't work - it works when jsoned at job level Assert.assertNotNull(deserialized.getDatumResult(obj)); DatumResult ddr = deserialized.getDatumResult(obj); Assert.assertEquals(ddr.getCategoryProbabilites(), dr.getCategoryProbabilites()); Assert.assertEquals(gson.toJson(deserialized), serialized); } }