@Test
public void testMultipleSingleParameters() {

    final ConversionResult result = new ConversionResult();
    final List<DataListener> listeners = new ArrayList<DataListener>();
    final GuidedDecisionTableGeneratorListener listener = new GuidedDecisionTableGeneratorListener(result,
                                                                                                   dmo);
    listeners.add(listener);
    //Convert
    final ExcelParser parser = new ExcelParser(listeners);
    final InputStream is = this.getClass().getResourceAsStream("MultipleSingleParameters.xls");
    try {
        parser.parseFile(is);
    } finally {
        try {
            is.close();
        } catch (IOException ioe) {
            fail(ioe.getMessage());
        }
    }
    //Check conversion results
    assertEquals(0,
                 result.getMessages().size());
    //Check basics
    List<GuidedDecisionTable52> dtables = listener.getGuidedDecisionTables();
    assertNotNull(dtables);
    assertEquals(1,
                 dtables.size());
    GuidedDecisionTable52 dtable = dtables.get(0);
    assertEquals("MultipleSingleParameters",
                 dtable.getTableName());
    assertEquals(GuidedDecisionTable52.TableFormat.EXTENDED_ENTRY,
                 dtable.getTableFormat());
    //Check expanded columns
    List<BaseColumn> columns = dtable.getExpandedColumns();
    assertNotNull(columns);
    assertEquals(4,
                 columns.size());
    assertTrue(columns.get(0) instanceof RowNumberCol52);
    assertTrue(columns.get(1) instanceof RuleNameColumn);
    assertTrue(columns.get(2) instanceof DescriptionCol52);
    assertTrue(columns.get(3) instanceof BRLConditionVariableColumn);
    //Check individual condition columns
    assertEquals(1,
                 dtable.getConditions().size());
    assertTrue(dtable.getConditions().get(0) instanceof BRLConditionColumn);
    //Column 1
    BRLConditionColumn conditionCol0 = ((BRLConditionColumn) dtable.getConditions().get(0));
    assertEquals("Converted from ['Re-using single parameter']",
                 conditionCol0.getHeader());
    assertEquals(1,
                 conditionCol0.getChildColumns().size());
    List<IPattern> conditionCol0definition = conditionCol0.getDefinition();
    assertEquals(1,
                 conditionCol0definition.size());
    assertTrue(conditionCol0definition.get(0) instanceof FreeFormLine);
    FreeFormLine conditionCol0ffl = (FreeFormLine) conditionCol0definition.get(0);
    assertEquals("Driver(@{param1} != null, @{param1} == true)",
                 conditionCol0ffl.getText());
    //Column 1 - Variable 1
    BRLConditionVariableColumn conditionCol0param0 = conditionCol0.getChildColumns().get(0);
    assertEquals("param1",
                 conditionCol0param0.getVarName());
    assertEquals("Re-using single parameter",
                 conditionCol0param0.getHeader());
    assertEquals(DataType.TYPE_OBJECT,
                 conditionCol0param0.getFieldType());
    assertNull(conditionCol0param0.getFactType());
    assertNull(conditionCol0param0.getFactField());
    //Check data
    assertEquals(2,
                 dtable.getData().size());
    assertTrue(isRowEquivalent(new Object[]{1, "", "Row 1", "isQualified"},
                               dtable.getData().get(0)));
    assertTrue(isRowEquivalent(new Object[]{2, "", "Row 2", "isLicensed"},
                               dtable.getData().get(1)));
}