fixed mistake in FuncPtg.clone(), added test case, cleaned up outdated (since bug 13292) test method.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@654649 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2008-05-08 23:02:43 +00:00
parent e17b1839cd
commit a4cfce5106
2 changed files with 21 additions and 38 deletions

View File

@ -75,11 +75,9 @@ public final class FuncPtg extends AbstractFunctionPtg {
} }
public Object clone() { public Object clone() {
FuncPtg ptg = new FuncPtg(); FuncPtg ptg = new FuncPtg(field_2_fnc_index);
//ptg.field_1_num_args = field_1_num_args; ptg.setClass(ptgClass);
ptg.field_2_fnc_index = field_2_fnc_index; return ptg;
ptg.setClass(ptgClass);
return ptg;
} }
public int getSize() { public int getSize() {

View File

@ -1,4 +1,3 @@
/* ==================================================================== /* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with contributor license agreements. See the NOTICE file distributed with
@ -26,45 +25,31 @@ import org.apache.poi.hssf.record.TestcaseRecordInputStream;
* *
* @author Danny Mui (dmui at apache dot org) * @author Danny Mui (dmui at apache dot org)
*/ */
public final class TestFuncPtg extends TestCase {
public class TestFuncPtg extends TestCase public void testRead() {
{ // This ptg represents a LEN function extracted from excel
byte[] fakeData = {
public TestFuncPtg( String name ) 0x20, //function index
{ 0,
super( name ); };
}
public static void main( java.lang.String[] args )
{
junit.textui.TestRunner.run( TestFuncPtg.class );
}
/**
* Make sure the left overs are re-serialized on excel file reads to avoid
* the "Warning: Data may have been lost" prompt in excel.
* <p/>
* This ptg represents a LEN function extracted from excel
*/
public void testLeftOvers()
{
byte[] fakeData = new byte[4];
//fakeData[0] = (byte) 0x41;
fakeData[0] = (byte) 0x20; //function index
fakeData[1] = (byte) 0;
fakeData[2] = (byte) 8;
FuncPtg ptg = new FuncPtg( new TestcaseRecordInputStream((short)0, (short)fakeData.length, fakeData) ); FuncPtg ptg = new FuncPtg( new TestcaseRecordInputStream((short)0, (short)fakeData.length, fakeData) );
assertEquals( "Len formula index is not 32(20H)", (int) 0x20, ptg.getFunctionIndex() ); assertEquals( "Len formula index is not 32(20H)", 0x20, ptg.getFunctionIndex() );
assertEquals( "Number of operands in the len formula", 1, ptg.getNumberOfOperands() ); assertEquals( "Number of operands in the len formula", 1, ptg.getNumberOfOperands() );
assertEquals( "Function Name", "LEN", ptg.getName() ); assertEquals( "Function Name", "LEN", ptg.getName() );
assertEquals( "Ptg Size", 3, ptg.getSize() ); assertEquals( "Ptg Size", 3, ptg.getSize() );
//assertEquals("first leftover byte is not 0", (byte)0, ptg.leftOvers[0]); }
//assertEquals("second leftover byte is not 8", (byte)8, ptg.leftOvers[1]);
public void testClone() {
FuncPtg funcPtg = new FuncPtg(27); // ROUND() - takes 2 args
FuncPtg clone = (FuncPtg) funcPtg.clone();
if (clone.getNumberOfOperands() == 0) {
fail("clone() did copy field numberOfOperands");
}
assertEquals(2, clone.getNumberOfOperands());
assertEquals("ROUND", clone.getName());
} }
} }