/*
* Copyright 2005 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.decisiontable.parser.xls;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import jxl.Cell;
import jxl.CellType;
import jxl.Range;
import jxl.format.CellFormat;
import org.drools.template.parser.DataListener;
/**
* @author <a href="mailto:michael.neale@gmail.com"> Michael Neale</a>
*
* Some unit tests for the corners of ExcelParser that are not explicitly
* covered by integration tests.
*/
public class ExcelParserTest extends TestCase {
public void testRemoveTrailingZero() {
String test = "1.0";
assertEquals( "1",
ExcelParser.removeTrailingZero( test ) );
test = "42.0";
assertEquals( "42",
ExcelParser.removeTrailingZero( test ) );
test = "42";
assertEquals( "42",
ExcelParser.removeTrailingZero( test ) );
}
/**
* This should test to see if a cell is in a certain range or not.
* If it is in a merged range, then it should return the top left cell.
* @throws Exception
*/
public void testCellMerge() throws Exception {
ExcelParser parser = new ExcelParser((Map<String, List<DataListener>>) null);
Range[] ranges = new Range[1];
MockRange r1 = new MockRange();
ranges[0] = r1;
r1.topLeft = new MockCell();
r1.topLeft.row = 2;
r1.topLeft.column = 2;
r1.topLeft.contents = "first";
r1.bottomRight = new MockCell();
r1.bottomRight.column = 5;
r1.bottomRight.row = 7;
r1.bottomRight.contents = "last";
MockCell cell = new MockCell();
cell.contents = "test";
cell.row = 1;
cell.column = 1;
assertNull(parser.getRangeIfMerged( cell, ranges));
cell = new MockCell();
cell.contents = "wrong";
cell.row = 2;
cell.column = 5;
assertEquals("first", parser.getRangeIfMerged( cell, ranges).getTopLeft().getContents());
}
static class MockCell<CellFeatures> implements Cell {
int column;
int row;
String contents;
public CellFormat getCellFormat() {
return null;
}
public int getColumn() {
return column;
}
public String getContents() {
return contents;
}
public int getRow() {
return row;
}
public CellType getType() {
return null;
}
public boolean isHidden() {
return false;
}
public jxl.CellFeatures getCellFeatures() {
// TODO Auto-generated method stub
return null;
}
}
static class MockRange implements Range {
MockCell bottomRight;
MockCell topLeft;
public Cell getBottomRight() {
return bottomRight;
}
public int getFirstSheetIndex() {
return 0;
}
public int getLastSheetIndex() {
return 0;
}
public Cell getTopLeft() {
return topLeft;
}
}
}