/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.uff.ic.oceano.tools.datamining.test;
/**
*
* @author DanCastellani
*/
import br.uff.ic.oceano.ostra.controle.DataMiningControl;
import br.uff.ic.oceano.ostra.exception.DataMiningException;
import br.uff.ic.oceano.ostra.model.DataMiningPattern;
import br.uff.ic.oceano.ostra.tools.datamining.MyApriori;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import junit.framework.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import weka.core.Instances;
public class TestMyApriori {
private static String pathOfTestArff = "./src/test/resources/DataMining/Oceano_Commons Utils_23-11-10_-_12-37-44_p1_a24.arff";
private static Instances instances;
private MyApriori myApriori;
private DataMiningControl dataMiningControl;
@BeforeTest
public static void setupTest() throws IOException {
instances = new Instances(new FileReader(pathOfTestArff));
}
@BeforeMethod
public void setupMethod() throws IOException {
myApriori = new MyApriori();
dataMiningControl = new DataMiningControl();
}
@Test
public void mineUsingConffidenceWithMyApriori() throws Exception {
dataMiningControl.setMetricType(DataMiningControl.CONFIDENCE);
myApriori = new MyApriori(dataMiningControl);
myApriori.buildAssociations(instances);
Assert.assertEquals(5000, myApriori.getAssociationRules().size());
}
@Test
public void mineUsingConvictionWithMyApriori() throws Exception {
dataMiningControl.setMetricType(DataMiningControl.CONVICTION);
myApriori = new MyApriori(dataMiningControl);
myApriori.buildAssociations(instances);
Assert.assertEquals(5000, myApriori.getAssociationRules().size());
}
@Test
public void mineUsingLeverageWithMyApriori() throws Exception {
dataMiningControl.setMetricType(DataMiningControl.LEVERAGE);
dataMiningControl.setMinMetric(0.1D);
dataMiningControl.setMaxRules(20);
myApriori = new MyApriori(dataMiningControl);
myApriori.buildAssociations(instances);
Assert.assertEquals(20, myApriori.getAssociationRules().size());
}
@Test
public void mineUsingLiftWithMyApriori() throws Exception {
dataMiningControl.setMetricType(DataMiningControl.LIFT);
myApriori = new MyApriori(dataMiningControl);
myApriori.buildAssociations(instances);
Assert.assertEquals(5000, myApriori.getAssociationRules().size());
}
@Test
public void mineUsingDefaultConfigurationWithMyApriori() throws Exception {
myApriori.buildAssociations(instances);
Assert.assertEquals(10, myApriori.getAssociationRules().size());
}
@Test(expectedExceptions = DataMiningException.class)
public void getRulesFromMyAprioriButThrowsDMExceptionCauseRulesNotMined() throws DataMiningException {
try {
myApriori.getAssociationRules();
} catch (DataMiningException ex) {
Assert.assertEquals(MyApriori.ERROR_NO_RULES_FOUND, ex.getMessage());
throw ex;
}
}
//@Test
public void getRulesFromMyAprioriUsingDefaultDataMiningControl() throws Exception {
myApriori.buildAssociations(instances);
List<DataMiningPattern> associationRules = myApriori.getAssociationRules();
Assert.assertEquals(10, associationRules.size());
for (DataMiningPattern dataMiningPattern : associationRules) {
Assert.assertNotNull(dataMiningPattern.getPrecedent());
Assert.assertNotNull(dataMiningPattern.getPrecedentSize());
Assert.assertNotNull(dataMiningPattern.getConsequent());
Assert.assertNotNull(dataMiningPattern.getConsequentSize());
Assert.assertNotNull(dataMiningPattern.getSupport());
Assert.assertNotNull(dataMiningPattern.getConfidence());
Assert.assertNull(dataMiningPattern.getConviction());
Assert.assertNull(dataMiningPattern.getLeverage());
Assert.assertNull(dataMiningPattern.getLift());
}
}
//@Test
public void getRulesFromMyAprioriUsingLeverage() throws Exception {
dataMiningControl.setMetricType(DataMiningControl.LEVERAGE);
dataMiningControl.setMinMetric(0.1D);
dataMiningControl.setMaxRules(20);
myApriori = new MyApriori(dataMiningControl);
myApriori.buildAssociations(instances);
List<DataMiningPattern> associationRules = myApriori.getAssociationRules();
Assert.assertEquals(20, associationRules.size());
for (DataMiningPattern dataMiningPattern : associationRules) {
// System.out.println("dataMiningPattern = " + dataMiningPattern);
Assert.assertNotNull(dataMiningPattern.getPrecedent());
Assert.assertNotNull(dataMiningPattern.getPrecedentSize());
Assert.assertNotNull(dataMiningPattern.getConsequent());
Assert.assertNotNull(dataMiningPattern.getConsequentSize());
Assert.assertNotNull(dataMiningPattern.getSupport());
Assert.assertNotNull(dataMiningPattern.getConfidence());
Assert.assertNotNull(dataMiningPattern.getConviction());
Assert.assertNotNull(dataMiningPattern.getLeverage());
Assert.assertNotNull(dataMiningPattern.getLift());
}
}
}