package no.priv.garshol.duke.genetic;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import no.priv.garshol.duke.Comparator;
import no.priv.garshol.duke.Configuration;
import no.priv.garshol.duke.ConfigurationImpl;
import no.priv.garshol.duke.Property;
import no.priv.garshol.duke.PropertyImpl;
import org.junit.Before;
import org.junit.Test;
public class ComparatorAspectTest {
private Configuration config1;
private TestComparator comparator = new TestComparator();
private String propName = "NAME";
@Before
public void setup() {
config1 = new ConfigurationImpl();
List<Property> props = new ArrayList<Property>();
props.add(new PropertyImpl("ID"));
props.add(new PropertyImpl(propName, null, 0.3, 0.8));
((ConfigurationImpl) config1).setProperties(props);
((ConfigurationImpl) config1).setThreshold(0.85);
}
@Test
public void canAddCustomComparator() {
GeneticConfiguration conf = new GeneticConfiguration(config1);
Property aspectProp = new PropertyImpl(propName, null, 0.5, 0.5);
List<Comparator> compList = new ArrayList<Comparator>();
compList.add(comparator);
ComparatorAspect aspect = new ComparatorAspect(aspectProp, compList);
aspect.setRandomly(conf);
Property updatedProp = config1.getPropertyByName(propName);
Comparator randomComparator = updatedProp.getComparator();
assertTrue("should have custom comparator set, but has : " + randomComparator.getClass(), randomComparator.equals(comparator));
}
}
class TestComparator implements Comparator {
@Override
public boolean isTokenized() {
return false;
}
@Override
public double compare(String v1, String v2) {
return 0;
}
}