acoliver 02/05/19 14:41:00
Modified: src/testcases/org/apache/poi/hssf/record
TestLegendRecord.java
src/java/org/apache/poi/hssf/record LegendRecord.java
src/records/definitions legend_record.xml
src/records/styles record_test.xsl
Log:
Fixed tests for legend and implemented testresult for bitfields
Revision Changes Path
1.3 +55 -38
jakarta-poi/src/testcases/org/apache/poi/hssf/record/TestLegendRecord.java
Index: TestLegendRecord.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/record/TestLegendRecord.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestLegendRecord.java 11 Feb 2002 04:23:10 -0000 1.2
+++ TestLegendRecord.java 19 May 2002 21:40:59 -0000 1.3
@@ -1,3 +1,4 @@
+
/* ====================================================================
* The Apache Software License, Version 1.1
*
@@ -52,8 +53,10 @@
* <http://www.apache.org/>.
*/
+
package org.apache.poi.hssf.record;
+
import junit.framework.TestCase;
/**
@@ -61,19 +64,14 @@
* class works correctly. Test data taken directly from a real
* Excel file.
*
- * @author Glen Stampoultzis (glens at apache.org)
+
+ * @author Andrew C. Oliver (acoliver at apache.org)
*/
public class TestLegendRecord
extends TestCase
{
byte[] data = new byte[] {
- (byte)0xB2,(byte)0x0D,(byte)0x00,(byte)0x00, //field_1_xPosition
- (byte)0x39,(byte)0x06,(byte)0x00,(byte)0x00, //field_2_yPosition
- (byte)0xD9,(byte)0x01,(byte)0x00,(byte)0x00, //field_3_xSize
- (byte)0x34,(byte)0x02,(byte)0x00,(byte)0x00, //field_4_ySize
- (byte)0x03, //field_5_type
- (byte)0x01, //field_6_spacing
- (byte)0x1F,(byte)0x00 //field_7_options
+
(byte)0x76,(byte)0x0E,(byte)0x00,(byte)0x00,(byte)0x86,(byte)0x07,(byte)0x00,(byte)0x00,(byte)0x19,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x8B,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x03,(byte)0x01,(byte)0x1F,(byte)0x00
};
public TestLegendRecord(String name)
@@ -84,44 +82,63 @@
public void testLoad()
throws Exception
{
+ LegendRecord record = new LegendRecord((short)0x1015, (short)data.length,
data);
+
+
+ assertEquals( (int)0xe76, record.getXAxisUpperLeft());
+
+ assertEquals( (int)0x786, record.getYAxisUpperLeft());
+
+ assertEquals( (int)0x119, record.getXSize());
+
+ assertEquals( (int)0x8b, record.getYSize());
+
+ assertEquals( (byte)0x3, record.getType());
+
+ assertEquals( (byte)0x1, record.getSpacing());
+
+ assertEquals( (short)0x1f, record.getOptions());
+ assertEquals( true, record.isAutoPosition() );
+ assertEquals( true, record.isAutoSeries() );
+ assertEquals( true, record.isAutoXPositioning() );
+ assertEquals( true, record.isAutoYPositioning() );
+ assertEquals( true, record.isVertical() );
+ assertEquals( false, record.isDataTable() );
- LegendRecord legendRecord = new LegendRecord((short)0x1015,
(short)data.length, data);
- assertEquals(3506, legendRecord.getXPosition());
- assertEquals(1593, legendRecord.getYPosition());
- assertEquals(473, legendRecord.getXSize());
- assertEquals(564, legendRecord.getYSize());
- assertEquals(LegendRecord.TYPE_RIGHT, legendRecord.getType());
- assertEquals(LegendRecord.SPACING_MEDIUM, legendRecord.getSpacing());
- assertEquals(31, legendRecord.getOptions());
- assertEquals(true, legendRecord.isAutoPosition());
- assertEquals(true, legendRecord.isAutoSeries());
- assertEquals(true, legendRecord.isAutoPosX());
- assertEquals(true, legendRecord.isAutoPosY());
- assertEquals(true, legendRecord.isVert());
- assertEquals(false, legendRecord.isContainsDataTable());
- assertEquals(24, legendRecord.getRecordSize());
+ assertEquals( 24, record.getRecordSize() );
- legendRecord.validateSid((short)0x1015);
+ record.validateSid((short)0x1015);
}
public void testStore()
{
- LegendRecord legendRecord = new LegendRecord();
- legendRecord.setXPosition(3506);
- legendRecord.setYPosition(1593);
- legendRecord.setXSize(473);
- legendRecord.setYSize(564);
- legendRecord.setType(LegendRecord.TYPE_RIGHT);
- legendRecord.setSpacing(LegendRecord.SPACING_MEDIUM);
- legendRecord.setAutoPosition(true);
- legendRecord.setAutoSeries(true);
- legendRecord.setAutoPosX(true);
- legendRecord.setAutoPosY(true);
- legendRecord.setVert(true);
- legendRecord.setContainsDataTable(false);
+ LegendRecord record = new LegendRecord();
+
+
+
+ record.setXAxisUpperLeft( (int)0xe76 );
+
+ record.setYAxisUpperLeft( (int)0x786 );
+
+ record.setXSize( (int)0x119 );
+
+ record.setYSize( (int)0x8b );
+
+ record.setType( (byte)0x3 );
+
+ record.setSpacing( (byte)0x1 );
+
+ record.setOptions( (short)0x1f );
+ record.setAutoPosition( true );
+ record.setAutoSeries( true );
+ record.setAutoXPositioning( true );
+ record.setAutoYPositioning( true );
+ record.setVertical( true );
+ record.setDataTable( false );
+
- byte [] recordBytes = legendRecord.serialize();
+ byte [] recordBytes = record.serialize();
assertEquals(recordBytes.length - 4, data.length);
for (int i = 0; i < data.length; i++)
assertEquals("At offset " + i, data[i], recordBytes[i+4]);
1.6 +74 -74
jakarta-poi/src/java/org/apache/poi/hssf/record/LegendRecord.java
Index: LegendRecord.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/LegendRecord.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- LegendRecord.java 1 May 2002 08:02:18 -0000 1.5
+++ LegendRecord.java 19 May 2002 21:40:59 -0000 1.6
@@ -61,18 +61,18 @@
import org.apache.poi.util.*;
/**
- * The legend record specifies the location of legend on a chart and it's overall
size.
+ * Defines a legend for a chart.
* NOTE: This source is automatically generated please do not modify this file.
Either subclass or
* remove the record in src/records/definitions.
- * @author Glen Stampoultzis (glens at apache.org)
+ * @author Andrew C. Oliver (acoliver at apache.org)
*/
public class LegendRecord
extends Record
{
public final static short sid = 0x1015;
- private int field_1_xPosition;
- private int field_2_yPosition;
+ private int field_1_xAxisUpperLeft;
+ private int field_2_yAxisUpperLeft;
private int field_3_xSize;
private int field_4_ySize;
private byte field_5_type;
@@ -81,7 +81,7 @@
public final static byte TYPE_TOP = 2;
public final static byte TYPE_RIGHT = 3;
public final static byte TYPE_LEFT = 4;
- public final static byte TYPE_NOT_DOCKED = 7;
+ public final static byte TYPE_UNDOCKED = 7;
private byte field_6_spacing;
public final static byte SPACING_CLOSE = 0;
public final static byte SPACING_MEDIUM = 1;
@@ -89,10 +89,10 @@
private short field_7_options;
private BitField autoPosition = new
BitField(0x1);
private BitField autoSeries = new
BitField(0x2);
- private BitField autoPosX = new
BitField(0x4);
- private BitField autoPosY = new
BitField(0x8);
- private BitField vert = new
BitField(0x10);
- private BitField containsDataTable = new
BitField(0x20);
+ private BitField autoXPositioning = new
BitField(0x4);
+ private BitField autoYPositioning = new
BitField(0x8);
+ private BitField vertical = new
BitField(0x10);
+ private BitField dataTable = new
BitField(0x20);
public LegendRecord()
@@ -144,8 +144,8 @@
protected void fillFields(byte [] data, short size, int offset)
{
- field_1_xPosition = LittleEndian.getInt(data, 0x0 + offset);
- field_2_yPosition = LittleEndian.getInt(data, 0x4 + offset);
+ field_1_xAxisUpperLeft = LittleEndian.getInt(data, 0x0 + offset);
+ field_2_yAxisUpperLeft = LittleEndian.getInt(data, 0x4 + offset);
field_3_xSize = LittleEndian.getInt(data, 0x8 + offset);
field_4_ySize = LittleEndian.getInt(data, 0xc + offset);
field_5_type = data[ 0x10 + offset ];
@@ -160,15 +160,15 @@
buffer.append("[Legend]\n");
- buffer.append(" .xPosition = ")
+ buffer.append(" .xAxisUpperLeft = ")
.append("0x")
- .append(HexDump.toHex((int)getXPosition()))
- .append(" (").append(getXPosition()).append(" )\n");
+ .append(HexDump.toHex((int)getXAxisUpperLeft()))
+ .append(" (").append(getXAxisUpperLeft()).append(" )\n");
- buffer.append(" .yPosition = ")
+ buffer.append(" .yAxisUpperLeft = ")
.append("0x")
- .append(HexDump.toHex((int)getYPosition()))
- .append(" (").append(getYPosition()).append(" )\n");
+ .append(HexDump.toHex((int)getYAxisUpperLeft()))
+ .append(" (").append(getYAxisUpperLeft()).append(" )\n");
buffer.append(" .xSize = ")
.append("0x")
@@ -196,10 +196,10 @@
.append(" (").append(getOptions()).append(" )\n");
buffer.append(" .autoPosition =
").append(isAutoPosition ()).append('\n');
buffer.append(" .autoSeries = ").append(isAutoSeries
()).append('\n');
- buffer.append(" .autoPosX = ").append(isAutoPosX
()).append('\n');
- buffer.append(" .autoPosY = ").append(isAutoPosY
()).append('\n');
- buffer.append(" .vert = ").append(isVert
()).append('\n');
- buffer.append(" .containsDataTable =
").append(isContainsDataTable ()).append('\n');
+ buffer.append(" .autoXPositioning =
").append(isAutoXPositioning ()).append('\n');
+ buffer.append(" .autoYPositioning =
").append(isAutoYPositioning ()).append('\n');
+ buffer.append(" .vertical = ").append(isVertical
()).append('\n');
+ buffer.append(" .dataTable = ").append(isDataTable
()).append('\n');
buffer.append("[/Legend]\n");
return buffer.toString();
@@ -210,8 +210,8 @@
LittleEndian.putShort(data, 0 + offset, sid);
LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
- LittleEndian.putInt(data, 4 + offset, field_1_xPosition);
- LittleEndian.putInt(data, 8 + offset, field_2_yPosition);
+ LittleEndian.putInt(data, 4 + offset, field_1_xAxisUpperLeft);
+ LittleEndian.putInt(data, 8 + offset, field_2_yAxisUpperLeft);
LittleEndian.putInt(data, 12 + offset, field_3_xSize);
LittleEndian.putInt(data, 16 + offset, field_4_ySize);
data[ 20 + offset ] = field_5_type;
@@ -226,7 +226,7 @@
*/
public int getRecordSize()
{
- return 4 + 4 + 4 + 4 + 4 + 1 + 1 + 2;
+ return 4 + 4 + 4 + 4 + 4 + 1 + 1 + 2;
}
public short getSid()
@@ -236,35 +236,35 @@
/**
- * Get the x position field for the Legend record.
+ * Get the x axis upper left field for the Legend record.
*/
- public int getXPosition()
+ public int getXAxisUpperLeft()
{
- return field_1_xPosition;
+ return field_1_xAxisUpperLeft;
}
/**
- * Set the x position field for the Legend record.
+ * Set the x axis upper left field for the Legend record.
*/
- public void setXPosition(int field_1_xPosition)
+ public void setXAxisUpperLeft(int field_1_xAxisUpperLeft)
{
- this.field_1_xPosition = field_1_xPosition;
+ this.field_1_xAxisUpperLeft = field_1_xAxisUpperLeft;
}
/**
- * Get the y position field for the Legend record.
+ * Get the y axis upper left field for the Legend record.
*/
- public int getYPosition()
+ public int getYAxisUpperLeft()
{
- return field_2_yPosition;
+ return field_2_yAxisUpperLeft;
}
/**
- * Set the y position field for the Legend record.
+ * Set the y axis upper left field for the Legend record.
*/
- public void setYPosition(int field_2_yPosition)
+ public void setYAxisUpperLeft(int field_2_yAxisUpperLeft)
{
- this.field_2_yPosition = field_2_yPosition;
+ this.field_2_yAxisUpperLeft = field_2_yAxisUpperLeft;
}
/**
@@ -308,7 +308,7 @@
* TYPE_TOP
* TYPE_RIGHT
* TYPE_LEFT
- * TYPE_NOT_DOCKED
+ * TYPE_UNDOCKED
*/
public byte getType()
{
@@ -325,7 +325,7 @@
* TYPE_TOP
* TYPE_RIGHT
* TYPE_LEFT
- * TYPE_NOT_DOCKED
+ * TYPE_UNDOCKED
*/
public void setType(byte field_5_type)
{
@@ -377,7 +377,7 @@
/**
* Sets the auto position field value.
- * set to true if legend is docked
+ * automatic positioning (1=docked)
*/
public void setAutoPosition(boolean value)
{
@@ -385,7 +385,7 @@
}
/**
- * set to true if legend is docked
+ * automatic positioning (1=docked)
* @return the auto position field value.
*/
public boolean isAutoPosition()
@@ -395,7 +395,7 @@
/**
* Sets the auto series field value.
- * automatic series distribution
+ * excel 5 only (true)
*/
public void setAutoSeries(boolean value)
{
@@ -403,7 +403,7 @@
}
/**
- * automatic series distribution
+ * excel 5 only (true)
* @return the auto series field value.
*/
public boolean isAutoSeries()
@@ -412,75 +412,75 @@
}
/**
- * Sets the auto pos x field value.
- * x positioning is done automatically
+ * Sets the auto x positioning field value.
+ * position of legend on the x axis is automatic
*/
- public void setAutoPosX(boolean value)
+ public void setAutoXPositioning(boolean value)
{
- field_7_options = autoPosX.setShortBoolean(field_7_options, value);
+ field_7_options = autoXPositioning.setShortBoolean(field_7_options, value);
}
/**
- * x positioning is done automatically
- * @return the auto pos x field value.
+ * position of legend on the x axis is automatic
+ * @return the auto x positioning field value.
*/
- public boolean isAutoPosX()
+ public boolean isAutoXPositioning()
{
- return autoPosX.isSet(field_7_options);
+ return autoXPositioning.isSet(field_7_options);
}
/**
- * Sets the auto pos y field value.
- * y positioning is done automatically
+ * Sets the auto y positioning field value.
+ * position of legend on the y axis is automatic
*/
- public void setAutoPosY(boolean value)
+ public void setAutoYPositioning(boolean value)
{
- field_7_options = autoPosY.setShortBoolean(field_7_options, value);
+ field_7_options = autoYPositioning.setShortBoolean(field_7_options, value);
}
/**
- * y positioning is done automatically
- * @return the auto pos y field value.
+ * position of legend on the y axis is automatic
+ * @return the auto y positioning field value.
*/
- public boolean isAutoPosY()
+ public boolean isAutoYPositioning()
{
- return autoPosY.isSet(field_7_options);
+ return autoYPositioning.isSet(field_7_options);
}
/**
- * Sets the vert field value.
- * if true legend is vertical (otherwise it's horizonal)
+ * Sets the vertical field value.
+ * vertical or horizontal legend (1 or 0 respectively). Always 0 if not
automatic.
*/
- public void setVert(boolean value)
+ public void setVertical(boolean value)
{
- field_7_options = vert.setShortBoolean(field_7_options, value);
+ field_7_options = vertical.setShortBoolean(field_7_options, value);
}
/**
- * if true legend is vertical (otherwise it's horizonal)
- * @return the vert field value.
+ * vertical or horizontal legend (1 or 0 respectively). Always 0 if not
automatic.
+ * @return the vertical field value.
*/
- public boolean isVert()
+ public boolean isVertical()
{
- return vert.isSet(field_7_options);
+ return vertical.isSet(field_7_options);
}
/**
- * Sets the contains data table field value.
- * true if the chart contains the data table
+ * Sets the data table field value.
+ * 1 if chart contains data table
*/
- public void setContainsDataTable(boolean value)
+ public void setDataTable(boolean value)
{
- field_7_options = containsDataTable.setShortBoolean(field_7_options, value);
+ field_7_options = dataTable.setShortBoolean(field_7_options, value);
}
/**
- * true if the chart contains the data table
- * @return the contains data table field value.
+ * 1 if chart contains data table
+ * @return the data table field value.
*/
- public boolean isContainsDataTable()
+ public boolean isDataTable()
{
- return containsDataTable.isSet(field_7_options);
+ return dataTable.isSet(field_7_options);
}
1.5 +19 -7 jakarta-poi/src/records/definitions/legend_record.xml
Index: legend_record.xml
===================================================================
RCS file: /home/cvs/jakarta-poi/src/records/definitions/legend_record.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- legend_record.xml 19 May 2002 18:51:09 -0000 1.4
+++ legend_record.xml 19 May 2002 21:40:59 -0000 1.5
@@ -32,12 +32,24 @@
<testresult value="0x1"/>
</field>
<field type="int" size="2" name="options" description="various bit
settings">
- <bit number="0" name="auto position" description="automatic positioning
(1=docked)"/>
- <bit number="1" name="auto series" description="excel 5 only (true)"/>
- <bit mask="0x4" name="auto x positioning" description="position of
legend on the x axis is automatic"/>
- <bit mask="0x8" name="auto y positioning" description="position of
legend on the y axis is automatic"/>
- <bit mask="0x10" name="vertical" description="vertical or horizontal
legend (1 or 0 respectively). Always 0 if not automatic."/>
- <bit mask="0x20" name="data table" description="1 if chart contains
data table"/>
+ <bit number="0" name="auto position" description="automatic positioning
(1=docked)">
+ <testresult value="true"/>
+ </bit>
+ <bit number="1" name="auto series" description="excel 5 only (true)">
+ <testresult value="true"/>
+ </bit>
+ <bit number="2" name="auto x positioning" description="position of
legend on the x axis is automatic">
+ <testresult value="true"/>
+ </bit>
+ <bit number="3" name="auto y positioning" description="position of
legend on the y axis is automatic">
+ <testresult value="true"/>
+ </bit>
+ <bit number="4" name="vertical" description="vertical or horizontal
legend (1 or 0 respectively). Always 0 if not automatic.">
+ <testresult value="true"/>
+ </bit>
+ <bit number="5" name="data table" description="1 if chart contains data
table">
+ <testresult value="false"/>
+ </bit>
<!-- rest is always 0 -->
<testresult value="0x1f"/>
</field>
@@ -45,5 +57,5 @@
<testdata>
76 0E 00 00 86 07 00 00 19 01 00 00 8B 00 00 00 03 01 1F 00
</testdata>
- <testsize>10</testsize>
+ <testsize>24</testsize>
</record>
1.5 +2 -2 jakarta-poi/src/records/styles/record_test.xsl
Index: record_test.xsl
===================================================================
RCS file: /home/cvs/jakarta-poi/src/records/styles/record_test.xsl,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- record_test.xsl 18 May 2002 15:54:02 -0000 1.4
+++ record_test.xsl 19 May 2002 21:40:59 -0000 1.5
@@ -143,12 +143,12 @@
</xsl:template>
<xsl:template match="bit" mode="get">
-<xsl:text> </xsl:text>assertEquals( XXX, record.is<xsl:value-of
select="recutil:getFieldName1stCap(@name,0)"/>() );<xsl:text>
+<xsl:text> </xsl:text>assertEquals( <xsl:value-of
select="./testresult/@value"/>, record.is<xsl:value-of
select="recutil:getFieldName1stCap(@name,0)"/>() );<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="bit" mode="set">
-<xsl:text> </xsl:text>record.set<xsl:value-of
select="recutil:getFieldName1stCap(@name,0)"/>( XXX );<xsl:text>
+<xsl:text> </xsl:text>record.set<xsl:value-of
select="recutil:getFieldName1stCap(@name,0)"/>( <xsl:value-of
select="./testresult/@value"/> );<xsl:text>
</xsl:text>
</xsl:template>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>