/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.segmentation.server.preference.family;
import net.codjo.sql.builder.JoinKey;
import net.codjo.sql.builder.QueryConfig;
import net.codjo.xml.fast.XmlParser;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import org.xml.sax.InputSource;
/**
* Classe de test de <code>SelectConfigBuilderTest</code>.
*/
public class SelectConfigBuilderTest extends TestCase {
public void test_constructor() throws Exception {
QueryConfig config =
loadXmlConfiguration("AP_ROOT", "SelectConfigBuilderTest.xml");
Map jkMap = config.getJoinKeyMap();
assertEquals("AP_ROOT", config.getRootTableName());
assertEquals("AP_PORTFOLIO.PHOTO='$photo$'",
config.getRootExpression().getWhereClause());
assertEquals("Nb de clef de jointure", 3, jkMap.size());
JoinKey joinKey =
assertJoinKey(jkMap, "AP_A", "AP_ROOT", JoinKey.Type.INNER, "AP_A");
assertEquals(1, joinKey.getPartList().size());
assertPart(joinKey.getPartList(), 0, "COL_R1", "=", "COL_A1");
joinKey = assertJoinKey(jkMap, "AP_B", "AP_A", JoinKey.Type.LEFT, "AP_B");
assertEquals(2, joinKey.getPartList().size());
assertPart(joinKey.getPartList(), 0, "COL_A1", "=", "COL_B1");
assertPart(joinKey.getPartList(), 1, "COL_A2", "<", "COL_B2");
joinKey = assertJoinKey(jkMap, "AP_C", "AP_C", JoinKey.Type.RIGHT, "AP_ROOT");
assertEquals(1, joinKey.getPartList().size());
assertPart(joinKey.getPartList(), 0, "COL_C1", ">=", "COL_R1");
}
private QueryConfig loadXmlConfiguration(String rootTableName, String xmlFileName)
throws Exception {
XmlParser xmlParser = new XmlParser();
SelectConfigBuilder selectConfigBuilder = new SelectConfigBuilder();
selectConfigBuilder.setRootTableName(rootTableName);
xmlParser.parse(new InputSource(SelectConfigBuilder.class.getResourceAsStream(
xmlFileName)), selectConfigBuilder);
QueryConfig config = selectConfigBuilder.getConfig();
assertNotNull(config);
return config;
}
public void test_select_bug() throws Exception {
QueryConfig selectConfig =
loadXmlConfiguration("AP_ROOT", "SelectConfigBuilderTestSelectBug.xml");
assertNull(selectConfig.getRootExpression());
}
private void assertPart(List partList, int partIndex, String leftColumn,
String operator, String rightColumn) {
JoinKey.Part part = ((JoinKey.Part)partList.get(partIndex));
assertEquals(leftColumn, part.getLeftColumn());
assertEquals(operator, part.getOperator());
assertEquals(rightColumn, part.getRightColumn());
}
private JoinKey assertJoinKey(Map joinKeyMap, String mapTable, String leftTableName,
JoinKey.Type joinType, String rightTableName) {
JoinKey joinKey = (JoinKey)joinKeyMap.get(mapTable);
assertNotNull("Jointure pour " + mapTable + " est pr�sente", joinKey);
assertEquals(leftTableName, joinKey.getLeftTableName());
assertEquals(joinType, joinKey.getJoinType());
assertEquals(rightTableName, joinKey.getRightTableName());
return joinKey;
}
}