/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.segmentation.server.paramImport;
import net.codjo.database.common.api.structure.SqlTable;
import net.codjo.tokio.TokioFixture;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
public class AbstractControlManagerTest extends TestCase {
private TokioFixture tokioFixture = new TokioFixture(AbstractControlManagerTest.class);
private ControlManagerMock manager;
public void test_controlOk() throws Exception {
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "CLASSIFICATION_NAME", "CLASSIFICATION_TYPE", "IS_QUARANTINE"},
{"0", "Label 1", "Type 1", "false"},
{"2", "Label 2", "Type 2", "false"}
};
manager.setData(data);
manager.control();
assertEquals(0, manager.getQuarantine().length);
}
public void test_longLabel() throws Exception {
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "CLASSIFICATION_NAME", "CLASSIFICATION_TYPE", "IS_QUARANTINE"},
{"0", "Label 1", "Type 1", "false"},
{"2", "Label too long for you babe!", "Type 2", "false"}
};
manager.setData(data);
manager.control();
String[][] quarantine = manager.getQuarantine();
assertEquals(2, quarantine.length);
assertEquals("CLASSIFICATION_ID", quarantine[0][0]);
assertEquals("CLASSIFICATION_NAME", quarantine[0][1]);
assertEquals("CLASSIFICATION_TYPE", quarantine[0][2]);
assertEquals("ANOMALY_LOG", quarantine[0][3]);
assertEquals("2", quarantine[1][0]);
assertEquals("Label too long for you babe!", quarantine[1][1]);
assertEquals("Type 2", quarantine[1][2]);
assertEquals("Le libell� de l'axe est trop long", quarantine[1][3]);
assertEquals("false", data[1][3]);
assertEquals("true", data[2][3]);
}
public void test_repeatedIds() throws Exception {
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "CLASSIFICATION_NAME", "CLASSIFICATION_TYPE", "IS_QUARANTINE"},
{"2", "Label 2", "Type 2", "false"},
{"2", "Label 3", "Type 3", "false"},
{"3", "Label 4", "Type 4", "false"},
{"2", "Label 5", "Type 5", "false"}
};
manager.setData(data);
manager.control();
String[][] quarantine = manager.getQuarantine();
assertEquals(4, quarantine.length);
assertEquals("2", quarantine[1][0]);
assertEquals("Label 2", quarantine[1][1]);
assertEquals("Type 2", quarantine[1][2]);
assertEquals("Doublon de l'id Axe dans le fichier", quarantine[1][3]);
assertEquals("2", quarantine[2][0]);
assertEquals("Label 3", quarantine[2][1]);
assertEquals("Type 3", quarantine[2][2]);
assertEquals("Doublon de l'id Axe dans le fichier", quarantine[2][3]);
assertEquals("2", quarantine[3][0]);
assertEquals("Label 5", quarantine[3][1]);
assertEquals("Type 5", quarantine[3][2]);
assertEquals("Doublon de l'id Axe dans le fichier", quarantine[3][3]);
}
public void test_unicity() throws Exception {
tokioFixture.insertInputInDb("controlUnicity");
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "CLASSIFICATION_NAME", "CLASSIFICATION_TYPE", "IS_QUARANTINE"},
{"1", "Label 1", "Type 1", "false"},
{"2", "Label 2", "Type 2", "false"},
{"3", "Label 3", "Type 3", "false"}
};
manager.setData(data);
manager.control();
String[][] quarantine = manager.getQuarantine();
assertEquals(3, quarantine.length);
assertEquals("1", quarantine[1][0]);
assertEquals("Label 1", quarantine[1][1]);
assertEquals("Type 1", quarantine[1][2]);
assertEquals("L'id de l'axe existe d�j� en base", quarantine[1][3]);
assertEquals("3", quarantine[2][0]);
assertEquals("Label 3", quarantine[2][1]);
assertEquals("Type 3", quarantine[2][2]);
assertEquals("L'id de l'axe existe d�j� en base", quarantine[2][3]);
}
public void test_getQuarantineStream() throws Exception {
String expected
= "AXE_ID\tLABEL_AXE\tFAMILY_AXE\tANOMALY_LOG\n2\tAxe event 2\tEVENT\twrong axe id\n3\tAxe event 3\tEVENT\tanother dummy log\n";
List<String[]> quarantineList = new ArrayList<String[]>();
quarantineList.add(new String[]{"AXE_ID", "LABEL_AXE", "FAMILY_AXE", "CUSTOM_FIELD", "IS_QUARANTINE",
"ANOMALY_LOG"});
quarantineList.add(new String[]{"2", "Axe event 2", "EVENT", null, "true", "wrong axe id"});
quarantineList.add(new String[]{"3", "Axe event 3", "EVENT", null, "true", "another dummy log"});
manager.setData(new String[][]{
{"AXE_ID", "LABEL_AXE", "FAMILY_AXE", "CUSTOM_FIELD", "IS_QUARANTINE", "ANOMALY_LOG"}});
manager.setFileHeader(new String[]{"AXE_ID", "LABEL_AXE", "FAMILY_AXE"});
manager.setQuarantine(quarantineList);
assertEquals(expected, manager.getQuarantineStream());
}
@Override
protected void setUp() throws Exception {
tokioFixture.doSetUp();
tokioFixture.getJdbcFixture()
.create(SqlTable.table("PM_MY_CLASSIFICATION"), "CLASSIFICATION_ID int not null,");
manager = new ControlManagerMock();
manager.setConnection(tokioFixture.getConnection());
}
@Override
protected void tearDown() throws Exception {
tokioFixture.doTearDown();
tokioFixture.getJdbcFixture().drop(SqlTable.table("PM_MY_CLASSIFICATION"));
}
}