package net.codjo.segmentation.server.paramImport.classificationStructure;
import net.codjo.tokio.TokioFixture;
import junit.framework.TestCase;
/**
*
*/
public class ClassificationStructureControlManagerTest extends TestCase {
private ClassificationStructureControlManager controlManager;
private TokioFixture fixture = new TokioFixture(ClassificationStructureControlManagerTest.class);
public void test_getMaxLengthForColumn() throws Exception {
assertEquals(50, controlManager.getMaxLengthForColumn("SLEEVE_CODE"));
assertEquals(50, controlManager.getMaxLengthForColumn("SLEEVE_NAME"));
}
public void test_getUniqueColumns() throws Exception {
assertEquals("CLASSIFICATION_ID", controlManager.getPrimaryKeyColumns()[0]);
assertEquals("SLEEVE_CODE", controlManager.getPrimaryKeyColumns()[1]);
}
public void test_getUnicitySQLQuery() throws Exception {
assertNull(controlManager.getUnicitySQLQuery());
}
public void test_repeatedValues_multipleColumns() throws Exception {
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_DUSTBIN", "IS_QUARANTINE"},
{"1", "01-1", "1", "false"},
{"2", "01-1", "1", "false"},
{"2", "01-1", "0", "false"},
{"3", "01-1", "1", "false"}
};
controlManager.setData(data);
controlManager.controlRepeatedValues();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(3, quarantine.length);
assertEquals("2", quarantine[1][0]);
assertEquals("01-1", quarantine[1][1]);
assertEquals("Doublon de l'id Axe et du code Poche dans le fichier", quarantine[1][3]);
assertEquals("2", quarantine[2][0]);
assertEquals("01-1", quarantine[2][1]);
assertEquals("Doublon de l'id Axe et du code Poche dans le fichier", quarantine[2][3]);
}
public void test_columnLength() throws Exception {
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_NAME", "IS_QUARANTINE"},
{"1", "01-1", "blabla", "false"},
{"2", "C'est l'histoire de Toto qui part en vacances et qui se la coule douce",
"Un nom", "false"},
{"3", "01-1", "Cette fois c'est l'histoire de Titi qui va rejoindre Toto en vacances",
"false"}
};
controlManager.setData(data);
controlManager.controlMaxLength();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(3, quarantine.length);
assertEquals("2", quarantine[1][0]);
assertEquals("Le code poche est trop long", quarantine[1][3]);
assertEquals("3", quarantine[2][0]);
assertEquals("Le libell� de la poche est trop long", quarantine[2][3]);
}
public void test_classificationExistsInDb() throws Exception {
fixture.insertInputInDb("classificationExistsInDb");
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_NAME", "IS_QUARANTINE"},
{"1", "01-1", "Poche1", "false"},
{"2", "01-1", "Poche2", "false"},
{"3", "01-1", "Poche3", "false"}
};
controlManager.setData(data);
controlManager.controlParentExistsInDb();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(2, quarantine.length);
assertEquals("2", quarantine[1][0]);
assertEquals("Cet axe n'existe pas en base", quarantine[1][3]);
}
public void test_noOtherSleeveInDb() throws Exception {
fixture.insertInputInDb("noOtherSleeveInDb");
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "IS_QUARANTINE"},
{"1", "01-1", "false"},
{"1", "01-2", "false"},
{"2", "01-1", "false"},
{"3", "01-1", "false"}
};
controlManager.setData(data);
controlManager.controlNoSleevesInDb();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(3, quarantine.length);
assertEquals("1", quarantine[1][0]);
assertEquals("01-1", quarantine[1][1]);
assertEquals("Cet axe existe d�j� en base avec des poches", quarantine[1][2]);
assertEquals("1", quarantine[2][0]);
assertEquals("01-2", quarantine[2][1]);
assertEquals("Cet axe existe d�j� en base avec des poches", quarantine[2][2]);
}
public void test_sleeveCodeFormat() throws Exception {
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_NAME", "IS_QUARANTINE"},
{"1", "01-1", "Poche 1", "false"},
{"1", "01-2", "Poche 2", "false"},
{"1", "01-3", "Poche 3", "false"},
{"1", "01-3-0", "Poche 4 KO", "false"},
{"1", "01-4", "Fourre-tout", "false"},
{"1", "02-3.1", "Poche 5", "false"},
{"1", "02-3.2", "Poche 6", "false"},
{"1", "02-3.2.2", "Poche 7 KO", "false"},
{"1", "909-3.2.2", "Poche 8 KO", "false"},
{"1", "9093.2.2", "Poche 10 KO", "false"},
{"1", "9", "Poche 11 KO", "false"},
{"1", "04-3.1.2.1", "Poche 12", "false"},
{"1", "04-3.1.2.1.6", "Poche 13 KO", "false"},
{"1", "03-3.2.1", "Poche 14", "false"}};
controlManager.setData(data);
controlManager.controlSleeveCodeFormat();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(7, quarantine.length);
assertEquals("Poche 4 KO", quarantine[1][2]);
assertEquals("Le code poche est incorrect", quarantine[1][3]);
assertEquals("Poche 7 KO", quarantine[2][2]);
assertEquals("Le code poche est incorrect", quarantine[2][3]);
assertEquals("Poche 8 KO", quarantine[3][2]);
assertEquals("Le code poche est incorrect", quarantine[3][3]);
assertEquals("Poche 10 KO", quarantine[4][2]);
assertEquals("Le code poche est incorrect", quarantine[4][3]);
assertEquals("Poche 11 KO", quarantine[5][2]);
assertEquals("Le code poche est incorrect", quarantine[5][3]);
assertEquals("Poche 13 KO", quarantine[6][2]);
assertEquals("Le code poche est incorrect", quarantine[6][3]);
}
public void test_oneDustBin() throws Exception {
String[][] data =
new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_NAME", "SLEEVE_DUSTBIN", "IS_QUARANTINE"},
{"1", "01-1", "Poche 1", "0", "false"},
{"1", "01-2", "Poche 2", "0", "false"},
{"1", "01-3", "Poche 3", "0", "false"},
{"1", "01-4", "Fourre-tout", "1", "false"},
{"2", "02-3.1", "Poche 5", "0", "false"},
{"2", "02-3.2", "Fourre-tout2", "1", "false"},
{"2", "04-3.1.2.1", "Fourre-tout3", "1", "false"},
{"3", "03-3.2.1", "Poche 14", "0", "false"},
{"3", "03-3.2.2", "Poche 14", "0", "false"},
{"3", "03-3.2.3", "Poche 14", "0", "false"}};
controlManager.setData(data);
controlManager.controlOneDustbin();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(7, quarantine.length);
assertEquals("2", quarantine[1][0]);
assertEquals("02-3.1", quarantine[1][1]);
assertEquals("Cet axe contient plus d'une poche fourre-tout", quarantine[1][4]);
assertEquals("2", quarantine[2][0]);
assertEquals("02-3.2", quarantine[2][1]);
assertEquals("Cet axe contient plus d'une poche fourre-tout", quarantine[2][4]);
assertEquals("2", quarantine[3][0]);
assertEquals("04-3.1.2.1", quarantine[3][1]);
assertEquals("Cet axe contient plus d'une poche fourre-tout", quarantine[3][4]);
assertEquals("3", quarantine[4][0]);
assertEquals("03-3.2.1", quarantine[4][1]);
assertEquals("Cet axe ne comporte pas de poche fourre-tout", quarantine[4][4]);
assertEquals("3", quarantine[5][0]);
assertEquals("03-3.2.2", quarantine[5][1]);
assertEquals("Cet axe ne comporte pas de poche fourre-tout", quarantine[5][4]);
assertEquals("3", quarantine[6][0]);
assertEquals("03-3.2.3", quarantine[6][1]);
assertEquals("Cet axe ne comporte pas de poche fourre-tout", quarantine[6][4]);
}
public void test_formula_ok() throws Exception {
String[][] data = new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_NAME", "SLEEVE_DUSTBIN", "TERMINAL_ELEMENT",
"FORMULA", "IS_QUARANTINE"},
{"1", "01-1", "Poche 1", "0", "1", "in('a', 'b', 'c')", "false"},
{"1", "01-2", "Poche 2", "0", "1", "mon num == 2 ", "false"},
{"1", "01-3", "Poche 3", "0", "1", "Date d'agr�ment > '30/09/2007'", "false"},
{"1", "01-4", "Fourre-tout", "1", "1", "", "false"},
{"2", "02-3.1", "Formule Incorrecte", "0", "1", "(ma cl� < 8", "false"},
{"2", "02-3.2", "Fourre-tout2", "1", "1", "", "false"}};
controlManager.setData(data);
controlManager.controlFormula();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(2, quarantine.length);
assertEquals("2", quarantine[1][0]);
assertEquals("02-3.1", quarantine[1][1]);
assertEquals("La formule de la poche est incorrecte", quarantine[1][6]);
}
public void test_formula_forbiddenWhenDustbin() throws Exception {
String[][] data = new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_NAME", "SLEEVE_DUSTBIN", "TERMINAL_ELEMENT",
"FORMULA", "IS_QUARANTINE"},
{"2", "01-1", "Poche ok", "0", "1", "ma cl� < 8", "false"},
{"2", "01-2", "Fourre-tout2", "1", "1", "ma cl� > 8", "false"}};
controlManager.setData(data);
controlManager.controlFormula();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(2, quarantine.length);
assertEquals("2", quarantine[1][0]);
assertEquals("01-2", quarantine[1][1]);
assertEquals("La poche fourre-tout ne peut pas contenir de formules", quarantine[1][6]);
}
public void test_formula_notNullIfTerminalElement() throws Exception {
String[][] data = new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_NAME", "SLEEVE_DUSTBIN", "TERMINAL_ELEMENT",
"FORMULA", "IS_QUARANTINE"},
{"1", "01-1", "Poche 1", "0", "1", "mon num == 2", "false"},
{"1", "01-2", "Poche 2", "0", "1", null, "false"}};
controlManager.setData(data);
controlManager.controlFormula();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(2, quarantine.length);
assertEquals("1", quarantine[1][0]);
assertEquals("01-2", quarantine[1][1]);
assertEquals("Cette poche ne comporte pas de formules", quarantine[1][6]);
}
public void test_formula_noFormulaIfNotIfTerminalElement() throws Exception {
String[][] data = new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_NAME", "SLEEVE_DUSTBIN", "TERMINAL_ELEMENT",
"FORMULA", "IS_QUARANTINE"},
{"1", "01-1", "Poche 1", "0", "1", "mon num == 2", "false"},
{"1", "01-2", "Poche 2", "0", "0", "mon num == 3", "false"}};
controlManager.setData(data);
controlManager.controlFormula();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(2, quarantine.length);
assertEquals("1", quarantine[1][0]);
assertEquals("01-2", quarantine[1][1]);
assertEquals("Un noeud ne peut pas avoir de formule", quarantine[1][6]);
}
public void test_flagOtherSleevesWhenAxeInError() throws Exception {
fixture.insertInputInDb("flagOtherSleevesWhenAxeInError");
String[][] data = new String[][]{
{"CLASSIFICATION_ID", "SLEEVE_CODE", "SLEEVE_NAME", "SLEEVE_DUSTBIN", "TERMINAL_ELEMENT",
"FORMULA", "IS_QUARANTINE"},
{"1", "01-1", "Un libelle trop longue qui va faire passer en quarantine les autres poches", "0",
"0", "", "false"},
{"1", "01-2", "Poche 2", "0", "0", null, "false"},
{"1", "01-3", "Poche 3", "0", "0", null, "false"},
{"1", "01-4", "Fourre-tout", "1", "1", "", "false"},
{"2", "02-3.1", "Poche 5", "0", "1", "ma cl� < 8", "false"},
{"2", "02-3.2", "Fourre-tout", "1", "1", "", "false"}};
controlManager.setData(data);
controlManager.control();
String[][] quarantine = controlManager.getQuarantine();
assertEquals(5, quarantine.length);
assertEquals("1", quarantine[1][0]);
assertEquals("01-1", quarantine[1][1]);
assertEquals("Le libell� de la poche est trop long", quarantine[1][6]);
assertEquals("1", quarantine[2][0]);
assertEquals("01-2", quarantine[2][1]);
assertEquals("Cet axe comporte une autre poche en erreur", quarantine[2][6]);
assertEquals("1", quarantine[3][0]);
assertEquals("01-3", quarantine[3][1]);
assertEquals("Cet axe comporte une autre poche en erreur", quarantine[3][6]);
assertEquals("1", quarantine[4][0]);
assertEquals("01-4", quarantine[4][1]);
assertEquals("Cet axe comporte une autre poche en erreur", quarantine[4][6]);
}
@Override
protected void setUp() throws Exception {
fixture.doSetUp();
controlManager = new ClassificationStructureControlManager();
controlManager.setConnection(fixture.getConnection());
}
@Override
protected void tearDown() throws Exception {
fixture.doTearDown();
}
}