/**
*
*/
package com.datascience.gal;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import com.datascience.core.base.LObject;
import com.datascience.core.nominal.NominalProject;
import com.datascience.core.base.Worker;
import com.datascience.datastoring.datamodels.full.MemoryJobStorage;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.datascience.utils.auxl.TestDataManager;
public class IncrementalDawidSkeneTest {
NominalProject project;
ArrayList<String> categories;
@Before
public void setUp(){
categories = new ArrayList<String>();
categories.add("category1");
categories.add("category2");
IncrementalDawidSkene alg = new IncrementalDawidSkene();
MemoryJobStorage js = new MemoryJobStorage();
project = new NominalProject(alg, js.getNominalData("testId"), js.getNominalResults("testId", categories));
project.getData().addNewUpdatableAlgorithm(alg);
project.initializeCategories(categories, null, null);
}
@After
public void tearDown() throws Exception {
}
@Test
public final void testInitializePriors() {
double actual = project.getAlgorithm().prior(categories.get(0));
double expected = 1. / project.getData().getCategories().size();
assertEquals(expected, actual, TestDataManager.DELTA_DOUBLE);
}
@Test
public final void testGetErrorRateForWorker() {
Worker w = new Worker("worker1");
project.getData().addWorker(w);
double errorRate = ((AbstractDawidSkene)project.getAlgorithm()).getErrorRateForWorker(
w,
categories.get(0),
categories.get(1));
assertTrue(errorRate>=0 && errorRate<=1);
}
@Test
public final void testGetObjectClassProbabilites(){
LObject<String> obj = new LObject<String>("object");
project.getData().addObject(obj);
for (Double val : ((AbstractDawidSkene)project.getAlgorithm()).getObjectClassProbabilities(obj).values()){
assertEquals(0.5, val, TestDataManager.DELTA_DOUBLE);
}
LObject<String> gold = new LObject<String>("gold_object");
gold.setGoldLabel("category1");
project.getData().addObject(gold);
Map<String, Double> cp = ((AbstractDawidSkene)project.getAlgorithm()).getObjectClassProbabilities(gold);
assertEquals(1., cp.get("category1"), TestDataManager.DELTA_DOUBLE);
assertEquals(0., cp.get("category2"), TestDataManager.DELTA_DOUBLE);
}
private boolean compareHashSets(HashSet s1, HashSet s2) {
if(s1== null && s2==null)
return true;
if(s1 != null && s2 != null)
return s1.containsAll(s2) && s2.containsAll(s1);
else
return false;
}
private <T1, T2> boolean compareHashMaps(Map<T1, T2> m1, Map<T1, T2> m2) {
if(m1== null && m2==null)
return true;
if(m1 != null && m2 != null) {
for (Entry<T1, T2> entry : m1.entrySet()) {
T1 key = entry.getKey();
if (!entry.getValue().equals(m2.get(key)))
return false;
}
return true;
} else return false;
}
}