@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);
  }
 public static NominalProject setUpNominalProject() {
   IncrementalMV imv = new IncrementalMV();
   MemoryJobStorage js = new MemoryJobStorage();
   Collection<String> categories = Arrays.asList(new String[] {"A", "B", "C"});
   NominalProject project =
       new NominalProject(
           imv, js.getNominalData("testId"), js.getNominalResults("testId", categories));
   project.initializeCategories(categories, null, null);
   project.getData().addNewUpdatableAlgorithm(imv);
   return project;
 }