You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2008/09/18 09:42:41 UTC

svn commit: r696584 [2/2] - in /poi/branches/ooxml: ./ src/examples/src/org/apache/poi/xssf/usermodel/examples/ src/ooxml/interfaces-jdk14/org/apache/poi/ss/usermodel/ src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/ src/ooxml/java/org/apache/po...

Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFColor.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFColor.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFColor.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFColor.java Thu Sep 18 00:42:40 2008
@@ -16,61 +16,183 @@
 ==================================================================== */
 package org.apache.poi.xssf.usermodel.extensions;
 
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorderPr;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
 
+/**
+ * Represents a color in SpreadsheetML
+ */
 public class XSSFColor {
 	
-	private CTColor color;
-	
-	public XSSFColor(CTColor color) {
-		this.color = color;
-		if (this.color == null) {
-			this.color = CTColor.Factory.newInstance();
-		}
+	private CTColor ctColor;
+
+    /**
+     * Create an instance of XSSFColor from the supplied XML bean
+     */
+    public XSSFColor(CTColor color) {
+		this.ctColor = color;
 	}
 	
-	public boolean isAuto() {
-		return color.getAuto();
+    /**
+     * Create an new instance of XSSFColor
+     */
+    public XSSFColor() {
+        this.ctColor = CTColor.Factory.newInstance();
+    }
+
+    /**
+     * A boolean value indicating the ctColor is automatic and system ctColor dependent.
+     */
+    public boolean isAuto() {
+		return ctColor.getAuto();
 	}
 	
+    /**
+     * A boolean value indicating the ctColor is automatic and system ctColor dependent.
+     */
 	public void setAuto(boolean auto) {
-		color.setAuto(auto);
+		ctColor.setAuto(auto);
 	}
-	
-	public long getIndexed() {
-		return color.getIndexed();
+
+    /**
+     * Indexed ctColor value. Only used for backwards compatibility. References a ctColor in indexedColors.
+     */
+    public int getIndexed() {
+		return (int)ctColor.getIndexed();
 	}
 	
-	public void setIndexed(long indexed) {
-		color.setIndexed(indexed);
+    /**
+     * Indexed ctColor value. Only used for backwards compatibility. References a ctColor in indexedColors.
+     */
+	public void setIndexed(int indexed) {
+		ctColor.setIndexed(indexed);
 	}
-	
-	public byte[] getRgb() {
-		return color.getRgb();
+
+    /**
+     * Standard Alpha Red Green Blue ctColor value (ARGB).
+     */
+    public byte[] getRgb() {
+		return ctColor.getRgb();
 	}
 	
+    /**
+     * Standard Alpha Red Green Blue ctColor value (ARGB).
+     */
 	public void setRgb(byte[] rgb) {
-		color.setRgb(rgb);
+		ctColor.setRgb(rgb);
 	}
-	
-	public long getTheme() {
-		return color.getTheme();
-	}
-	
-	public void setTheme(long theme) {
-		color.setTheme(theme);
+
+    /**
+     * Index into the <clrScheme> collection, referencing a particular <sysClr> or
+     *  <srgbClr> value expressed in the Theme part.
+     */
+    public int getTheme() {
+		return (int)ctColor.getTheme();
 	}
 	
-	public double getTint() {
-		return color.getTint();
+    /**
+     * Index into the <clrScheme> collection, referencing a particular <sysClr> or
+     *  <srgbClr> value expressed in the Theme part.
+     */
+	public void setTheme(int theme) {
+		ctColor.setTheme(theme);
 	}
-	
+
+    /**
+     * Specifies the tint value applied to the ctColor.
+     *
+     * <p>
+     * If tint is supplied, then it is applied to the RGB value of the ctColor to determine the final
+     * ctColor applied.
+     * </p>
+     * <p>
+     * The tint value is stored as a double from -1.0 .. 1.0, where -1.0 means 100% darken and
+     * 1.0 means 100% lighten. Also, 0.0 means no change.
+     * </p>
+     * <p>
+     * In loading the RGB value, it is converted to HLS where HLS values are (0..HLSMAX), where
+     * HLSMAX is currently 255.
+     * </p>
+     * Here are some examples of how to apply tint to ctColor:
+     * <blockquote>
+     * <pre>
+     * If (tint &lt; 0)
+     * Lum’ = Lum * (1.0 + tint)
+     *
+     * For example: Lum = 200; tint = -0.5; Darken 50%
+     * Lum‘ = 200 * (0.5) =&gt; 100
+     * For example: Lum = 200; tint = -1.0; Darken 100% (make black)
+     * Lum‘ = 200 * (1.0-1.0) =&gt; 0
+     * If (tint &gt; 0)
+     * Lum‘ = Lum * (1.0-tint) + (HLSMAX – HLSMAX * (1.0-tint))
+     * For example: Lum = 100; tint = 0.75; Lighten 75%
+     *
+     * Lum‘ = 100 * (1-.75) + (HLSMAX – HLSMAX*(1-.75))
+     * = 100 * .25 + (255 – 255 * .25)
+     * = 25 + (255 – 63) = 25 + 192 = 217
+     * For example: Lum = 100; tint = 1.0; Lighten 100% (make white)
+     * Lum‘ = 100 * (1-1) + (HLSMAX – HLSMAX*(1-1))
+     * = 100 * 0 + (255 – 255 * 0)
+     * = 0 + (255 – 0) = 255
+     * </pre>
+     * </blockquote>
+     *
+     * @return the tint value
+     */
+    public double getTint() {
+		return ctColor.getTint();
+	}
+	
+    /**
+     * Specifies the tint value applied to the ctColor.
+     *
+     * <p>
+     * If tint is supplied, then it is applied to the RGB value of the ctColor to determine the final
+     * ctColor applied.
+     * </p>
+     * <p>
+     * The tint value is stored as a double from -1.0 .. 1.0, where -1.0 means 100% darken and
+     * 1.0 means 100% lighten. Also, 0.0 means no change.
+     * </p>
+     * <p>
+     * In loading the RGB value, it is converted to HLS where HLS values are (0..HLSMAX), where
+     * HLSMAX is currently 255.
+     * </p>
+     * Here are some examples of how to apply tint to ctColor:
+     * <blockquote>
+     * <pre>
+     * If (tint &lt; 0)
+     * Lum’ = Lum * (1.0 + tint)
+     *
+     * For example: Lum = 200; tint = -0.5; Darken 50%
+     * Lum‘ = 200 * (0.5) =&gt; 100
+     * For example: Lum = 200; tint = -1.0; Darken 100% (make black)
+     * Lum‘ = 200 * (1.0-1.0) =&gt; 0
+     * If (tint &gt; 0)
+     * Lum‘ = Lum * (1.0-tint) + (HLSMAX – HLSMAX * (1.0-tint))
+     * For example: Lum = 100; tint = 0.75; Lighten 75%
+     *
+     * Lum‘ = 100 * (1-.75) + (HLSMAX – HLSMAX*(1-.75))
+     * = 100 * .25 + (255 – 255 * .25)
+     * = 25 + (255 – 63) = 25 + 192 = 217
+     * For example: Lum = 100; tint = 1.0; Lighten 100% (make white)
+     * Lum‘ = 100 * (1-1) + (HLSMAX – HLSMAX*(1-1))
+     * = 100 * 0 + (255 – 255 * 0)
+     * = 0 + (255 – 0) = 255
+     * </pre>
+     * </blockquote>
+     *
+     * @param tint the tint value
+     */
 	public void setTint(double tint) {
-		color.setTint(tint);
+		ctColor.setTint(tint);
 	}
 
-	public void setToBorder(CTBorderPr border) {
-		border.setColor(this.color);
-	}
+    /**
+     * Returns the underlying XML bean
+     *
+     * @return the underlying XML bean
+     */
+    public CTColor getCTColor(){
+        return ctColor;
+    }
 }

Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/CTFontWrapper.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/CTFontWrapper.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/CTFontWrapper.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/CTFontWrapper.java Thu Sep 18 00:42:40 2008
@@ -1,176 +0,0 @@
-package org.apache.poi.xssf.util;
-
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontName;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontScheme;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontSize;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIntProperty;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTUnderlineProperty;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTVerticalAlignFontProperty;
-
-/*
- * The font element in xml is definited like <choice maxOccurs="unbounded">.
- * So in the java object CTFont all methods get and set returns an array of elements also if there is always defined
- * only one type of attribute per type.
- * This class is made to make simple using method get and set instead of getArray() or set(index,object).
- * We consider always the index 0 like the only one index to refer of CT_Font attribute.
- * 
- */
-
-
-public class CTFontWrapper{
-
-	private CTFont font;
-		
-	
-	public CTFontWrapper(CTFont font){
-		this.font=font;		
-	}
-	
-	public CTFont getCTFont(){
-		return font;
-	}
-	
-	
-	public CTBooleanProperty getB(){
-		if( font.getBArray().length>0) 
-			return font.getBArray(0);
-		else 
-			return null;
-	}
-	
-	
-	public CTIntProperty getCharset(){
-		if(font.getCharsetArray().length>0)
-			return font.getCharsetArray(0);
-		else
-			return null;
-	}
-	
-	public CTColor getColor(){
-		if(font.getColorArray().length>0)
-			return font.getColorArray(0);
-		else
-			return null;
-	}
-	
-	public CTBooleanProperty getStrike(){
-		if(font.getStrikeArray().length>0)
-			return font.getStrikeArray(0);
-		else
-			return null;
-	}
-	
-	public CTVerticalAlignFontProperty getVertAlign() {
-		if(font.getVertAlignArray().length>0)
-			return font.getVertAlignArray(0);
-		else
-			return null;
-	}
-	
-	public CTFontName setName(){
-		if(font.getNameArray().length>0)
-			return font.getNameArray(0);
-		else
-			return null;
-	}
-	
-	public CTFontSize getSz(){
-		if(font.getSzArray().length>0)
-			return font.getSzArray(0);
-		else
-			return null;
-	}
-	
-	public CTBooleanProperty getI(){
-		if(font.getIArray().length>0)
-			return font.getIArray(0);
-		else
-			return null;
-	}
-	
-	
-	
-	public CTUnderlineProperty getU(){
-		if(font.getUArray().length>0)
-			return font.getUArray(0);
-		else
-			return null;
-	}
-	
-	public void setB(CTBooleanProperty value){
-		font.setBArray(0,value);
-	}
-	
-	public void setCharset(CTIntProperty value){
-		font.setCharsetArray(0, value);
-	}
-	
-	public void setColor(CTColor value){
-		font.setColorArray(0,value);
-		}
-
-	public void setFontName(CTFontName value){
-		font.setNameArray(0,value);
-	}
-	
-	public void setSz(CTFontSize value){
-		font.setSzArray(0,value);
-	}
-	public void setI(CTBooleanProperty value){
-		font.setIArray(0,value);
-	}
-	
-	public void setU(CTUnderlineProperty value){
-		font.setUArray(0,value);	
-	}
-	
-	
-	public void setStrike(CTBooleanProperty value){
-		font.setStrikeArray(0,value);
-	}
-	
-	
-	public void setVertAlign(CTVerticalAlignFontProperty value){
-		font.setVertAlignArray(0,value);
-	}
-
-	
-	public void setName(CTFontName fontName) {
-		font.setNameArray(0,fontName);
-	}
-
-	public CTFontName getName() {
-		return font.getNameArray(0);
-	}
-
-	public CTIntProperty getFamily() {
-		return font.getFamilyArray(0);		
-	}
-
-	public void setFamily(CTIntProperty family) {
-		 font.setFamilyArray(0,family);		
-	}
-
-	
-	public void setFontScheme(CTFontScheme ctFontScheme) {
-		font.setSchemeArray(0,ctFontScheme);
-	}
-
-	public CTFontScheme getFontScheme() {
-		return font.getSchemeArray(0);
-	}
-	
-	// methods used in FontFormatting
-	
-	public CTBooleanProperty getOutline(){
-		return font.getOutlineArray(0);
-	}
-	
-	
-	
-}
-
-	
\ No newline at end of file

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java Thu Sep 18 00:42:40 2008
@@ -132,8 +132,6 @@
 			POITextExtractor extractor = extractors[i];
 			
 			String text = extractor.getText().replaceAll("[\r\t]", "");
-			//System.out.println(text.length());
-			//System.out.println(text);
 			assertTrue(text.startsWith("First Sheet\nTest spreadsheet\n2nd row2nd row 2nd column\n"));
 			Pattern pattern = Pattern.compile(".*13(\\.0+)?\\s+Sheet3.*", Pattern.DOTALL);
 			Matcher m = pattern.matcher(text);

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java Thu Sep 18 00:42:40 2008
@@ -32,6 +32,7 @@
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.XSSFTestDataSamples;
 import org.apache.poi.xssf.model.CommentsTable;
+import org.apache.poi.xssf.model.SharedStringsTable;
 import org.apache.poi.xssf.model.SharedStringSource;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
@@ -336,7 +337,7 @@
 
     private static XSSFRow createParentObjects() {
         XSSFWorkbook wb = new XSSFWorkbook();
-        wb.setSharedStringSource(new DummySharedStringSource());
+        wb.setSharedStringSource(new SharedStringsTable());
         XSSFSheet sheet = new XSSFSheet(wb);
         XSSFRow row = new XSSFRow(sheet);
         return row;

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java Thu Sep 18 00:42:40 2008
@@ -1,5 +1,7 @@
 package org.apache.poi.xssf.usermodel;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -11,9 +13,8 @@
 import org.apache.poi.ss.usermodel.Font;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.xssf.util.CTFontWrapper;
 import org.apache.poi.xssf.util.Charset;
-import org.apache.poi.xssf.util.IndexedColors;
+import org.openxml4j.opc.Package;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;
@@ -38,60 +39,51 @@
 
 	public void testBoldweight(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
-
-		CTBooleanProperty bool=wrapper.getCTFont().addNewB();
+		CTBooleanProperty bool=ctFont.addNewB();
 		bool.setVal(false);
-		wrapper.setB(bool);	
-
+		ctFont.setBArray(0,bool);
 		XSSFFont xssfFont=new XSSFFont(ctFont);
-		assertEquals(Font.BOLDWEIGHT_NORMAL, xssfFont.getBoldweight());
+		assertEquals(false, xssfFont.getBold());
 
 
-		xssfFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+		xssfFont.setBold(true);
 		assertEquals(ctFont.getBArray().length,1);
 		assertEquals(true, ctFont.getBArray(0).getVal());
-		assertEquals(true,wrapper.getB().getVal());
-
 	}
 
 	public void testCharSet(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
 		CTIntProperty prop=ctFont.addNewCharset();
 		prop.setVal(Charset.ANSI_CHARSET);
-		
-		wrapper.setCharset(prop);
+
+		ctFont.setCharsetArray(0,prop);
 		XSSFFont xssfFont=new XSSFFont(ctFont);
 		assertEquals(Font.ANSI_CHARSET,xssfFont.getCharSet());
-		
+
 		xssfFont.setCharSet(Font.DEFAULT_CHARSET);
-		assertEquals(Charset.DEFAULT_CHARSET, wrapper.getCharset().getVal());
+		assertEquals(Charset.DEFAULT_CHARSET,ctFont.getCharsetArray(0).getVal());
 	}
 
 
 	public void testFontName(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
 		CTFontName fname=ctFont.addNewName();
 		fname.setVal("Arial");
-		wrapper.setFontName(fname);
+		ctFont.setNameArray(0,fname);
 
 		XSSFFont xssfFont=new XSSFFont(ctFont);
 		assertEquals("Arial", xssfFont.getFontName());
 
 		xssfFont.setFontName("Courier");
-		assertEquals("Courier",wrapper.getName().getVal());
+		assertEquals("Courier",ctFont.getNameArray(0).getVal());
 	}
 
 
 	public void testItalic(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
-
-		CTBooleanProperty bool=wrapper.getCTFont().addNewI();
+		CTBooleanProperty bool=ctFont.addNewI();
 		bool.setVal(false);
-		wrapper.setI(bool);	
+		ctFont.setIArray(0,bool);
 
 		XSSFFont xssfFont=new XSSFFont(ctFont);
 		assertEquals(false, xssfFont.getItalic());
@@ -99,17 +91,15 @@
 		xssfFont.setItalic(true);
 		assertEquals(ctFont.getIArray().length,1);
 		assertEquals(true, ctFont.getIArray(0).getVal());
-		assertEquals(true,wrapper.getI().getVal());
+		assertEquals(true,ctFont.getIArray(0).getVal());
 	}
 
 
 	public void testStrikeout(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
-
-		CTBooleanProperty bool=wrapper.getCTFont().addNewStrike();
+		CTBooleanProperty bool=ctFont.addNewStrike();
 		bool.setVal(false);
-		wrapper.setStrike(bool);	
+		ctFont.setStrikeArray(0,bool);
 
 		XSSFFont xssfFont=new XSSFFont(ctFont);
 		assertEquals(false, xssfFont.getStrikeout());
@@ -117,139 +107,218 @@
 		xssfFont.setStrikeout(true);
 		assertEquals(ctFont.getStrikeArray().length,1);
 		assertEquals(true, ctFont.getStrikeArray(0).getVal());
-		assertEquals(true,wrapper.getStrike().getVal());
+		assertEquals(true,ctFont.getStrikeArray(0).getVal());
 	}
 
 
 	public void testFontHeight(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
 		CTFontSize size=ctFont.addNewSz();
 		size.setVal(11);
-		wrapper.setSz(size);
-		
+		ctFont.setSzArray(0,size);
+
 		XSSFFont xssfFont=new XSSFFont(ctFont);
 		assertEquals(11/20,xssfFont.getFontHeight());
-		
+
 		xssfFont.setFontHeight((short)20);
-		assertEquals(new Double(20*20).doubleValue(),wrapper.getSz().getVal());	}
+		assertEquals(new Double(20*20).doubleValue(),ctFont.getSzArray(0).getVal());
+	}
 
 
 	public void testFontHeightInPoint(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
 		CTFontSize size=ctFont.addNewSz();
 		size.setVal(14);
-		wrapper.setSz(size);
-		
+		ctFont.setSzArray(0,size);
+
 		XSSFFont xssfFont=new XSSFFont(ctFont);
 		assertEquals(14,xssfFont.getFontHeightInPoints());
-		
+
 		xssfFont.setFontHeightInPoints((short)20);
-		assertEquals(new Double(20).doubleValue(),wrapper.getSz().getVal());
+		assertEquals(new Double(20).doubleValue(),ctFont.getSzArray(0).getVal());
 	}
 
 
 	public void testUnderline(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
-
-		CTUnderlineProperty underlinePropr=wrapper.getCTFont().addNewU();
+		CTUnderlineProperty underlinePropr=ctFont.addNewU();
 		underlinePropr.setVal(STUnderlineValues.SINGLE);
-		wrapper.setU(underlinePropr);	
+		ctFont.setUArray(0,underlinePropr);
 
 		XSSFFont xssfFont=new XSSFFont(ctFont);
 		assertEquals(Font.U_SINGLE, xssfFont.getUnderline());
 
 		xssfFont.setUnderline(Font.U_DOUBLE);
 		assertEquals(ctFont.getUArray().length,1);
-		assertEquals(STUnderlineValues.DOUBLE,wrapper.getU().getVal());
-		}			
+		assertEquals(STUnderlineValues.DOUBLE,ctFont.getUArray(0).getVal());
+		}
 
 	public void testColor(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
 		CTColor color=ctFont.addNewColor();
-		//color.setIndexed(IndexedColors.DEFAULT_COLOR);
 		color.setIndexed(XSSFFont.DEFAULT_FONT_COLOR);
-		wrapper.setColor(color);
-		
+		ctFont.setColorArray(0,color);
+
 		XSSFFont xssfFont=new XSSFFont(ctFont);
 		assertEquals(Font.COLOR_NORMAL,xssfFont.getColor());
-		
-		xssfFont.setColor(Font.COLOR_RED);
-		assertEquals(IndexedColors.RED,wrapper.getColor().getIndexed());
+
+		xssfFont.setColor(IndexedColors.RED.getIndex());
+		assertEquals(IndexedColors.RED.getIndex(), ctFont.getColorArray(0).getIndexed());
 	}
+/*
+	public void testRgbColor(){
+		CTFont ctFont=CTFont.Factory.newInstance();
+		CTColor color=ctFont.addNewColor();
+		color.setRgb(new byte[]{});
+		ctFont.setColorArray(0,color);
+
+		XSSFFont xssfFont=new XSSFFont(ctFont);
+		assertEquals(,xssfFont.getRgbColor());
 
+		xssfFont.setRgbColor(new XSSFColor(new java.awt.Color(10,19,10)));
+		//assertEquals(,ctFont.getColorArray(0).getRgb());
+	}
+
+	public void testThemeColor(){
+		CTFont ctFont=CTFont.Factory.newInstance();
+		CTColor color=ctFont.addNewColor();
+		color.setTheme();
+		ctFont.setColorArray(0,color);
 
+		XSSFFont xssfFont=new XSSFFont(ctFont);
+		assertEquals(,xssfFont.getThemeColor());
+
+		xssfFont.setThemeColor(Font.COLOR_RED);
+		assertEquals(,ctFont.getColorArray(0).getTheme());
+		assertEquals(,ctFont.getColorArray(0).getTint());
+	}
+*/
 	public void testFamily(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
 		CTIntProperty family=ctFont.addNewFamily();
 		family.setVal(XSSFFont.FONT_FAMILY_MODERN);
-		wrapper.setFamily(family);
-		
+		ctFont.setFamilyArray(0,family);
+
 		XSSFFont xssfFont=new XSSFFont(ctFont);
 		assertEquals(XSSFFont.FONT_FAMILY_MODERN,xssfFont.getFamily());
-
 	}
 
-	
+
 	public void testScheme(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
 		CTFontScheme scheme=ctFont.addNewScheme();
 		scheme.setVal(STFontScheme.MAJOR);
-		wrapper.setFontScheme(scheme);
-		
+		ctFont.setSchemeArray(0,scheme);
+
 		XSSFFont font=new XSSFFont(ctFont);
 		assertEquals(XSSFFont.SCHEME_MAJOR,font.getScheme());
-		
+
 		font.setScheme(XSSFFont.SCHEME_NONE);
-		assertEquals(STFontScheme.NONE,wrapper.getFontScheme().getVal());		
+		assertEquals(STFontScheme.NONE,ctFont.getSchemeArray(0).getVal());
 	}
 
 	public void testTypeOffset(){
 		CTFont ctFont=CTFont.Factory.newInstance();
-		CTFontWrapper wrapper=new CTFontWrapper(ctFont);
 		CTVerticalAlignFontProperty valign=ctFont.addNewVertAlign();
 		valign.setVal(STVerticalAlignRun.BASELINE);
-		wrapper.setVertAlign(valign);
-		
+		ctFont.setVertAlignArray(0,valign);
+
 		XSSFFont font=new XSSFFont(ctFont);
 		assertEquals(Font.SS_NONE,font.getTypeOffset());
-		
+
 		font.setTypeOffset(XSSFFont.SS_SUPER);
-		assertEquals(STVerticalAlignRun.SUPERSCRIPT,wrapper.getVertAlign().getVal());	
+		assertEquals(STVerticalAlignRun.SUPERSCRIPT,ctFont.getVertAlignArray(0).getVal());
 	}
-	
+
+	/**
+	 * Tests that we can define fonts to a new
+	 *  file, save, load, and still see them
+	 * @throws Exception
+	 */
+	public void testCreateSave() throws Exception {
+		XSSFWorkbook wb = new XSSFWorkbook();
+		XSSFSheet s1 = (XSSFSheet)wb.createSheet();
+		Row r1 = s1.createRow(0);
+		Cell r1c1 = r1.createCell(0);
+		r1c1.setCellValue(2.2);
+
+		assertEquals(1, wb.getNumberOfFonts());
+
+		XSSFFont font=wb.createFont();
+		font.setBold(true);
+		font.setStrikeout(true);
+		font.setColor(IndexedColors.YELLOW.getIndex());
+		font.setFontName("Courier");
+        wb.createCellStyle().setFont(font);
+        assertEquals(2, wb.getNumberOfFonts());
+
+		CellStyle cellStyleTitle=wb.createCellStyle();
+		cellStyleTitle.setFont(font);
+		r1c1.setCellStyle(cellStyleTitle);
+
+		// Save and re-load
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		wb.write(baos);
+		ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+
+		wb = new XSSFWorkbook(Package.open(bais));
+		s1 = (XSSFSheet)wb.getSheetAt(0);
+
+		assertEquals(2, wb.getNumberOfFonts());
+		assertNotNull(s1.getRow(0).getCell(0).getCellStyle().getFont(wb));
+		assertEquals(IndexedColors.YELLOW.getIndex(), s1.getRow(0).getCell(0).getCellStyle().getFont(wb).getColor());
+		assertEquals("Courier", s1.getRow(0).getCell(0).getCellStyle().getFont(wb).getFontName());
+
+		// Now add an orphaned one
+		XSSFFont font2 = wb.createFont();
+		font2.setItalic(true);
+		font2.setFontHeightInPoints((short)15);
+		wb.createCellStyle().setFont(font2);
+        assertEquals(3, wb.getNumberOfFonts());
+
+		// Save and re-load
+		baos = new ByteArrayOutputStream();
+		wb.write(baos);
+		bais = new ByteArrayInputStream(baos.toByteArray());
+
+		wb = new XSSFWorkbook(Package.open(bais));
+		s1 = (XSSFSheet)wb.getSheetAt(0);
+
+		assertEquals(3, wb.getNumberOfFonts());
+		assertNotNull(wb.getFontAt((short)1));
+		assertNotNull(wb.getFontAt((short)2));
+
+		assertEquals(15, wb.getFontAt((short)2).getFontHeightInPoints());
+		assertEquals(true, wb.getFontAt((short)2).getItalic());
+	}
+
 
 	public void testXSSFFont() throws IOException{
 		XSSFWorkbook workbook=new XSSFWorkbook();
 		//Font font1=workbook.createFont();
-		
+
 		Sheet sheet=workbook.createSheet("sheet 1 - test font");
-		
-		
+
+
 		Row row=sheet.createRow(0);
 		Cell cell=row.createCell(0);
 		cell.setCellValue(new XSSFRichTextString("XSSFFont test example file"));
-		Font font=new XSSFFont();
-		font.setBoldweight(Font.BOLDWEIGHT_BOLD);
+		XSSFFont font=new XSSFFont();
+		font.setBold(true);
 		font.setFontHeightInPoints((short)22);
-		font.setColor((short)IndexedColors.BLUE);
+		font.setColor(IndexedColors.BLUE.getIndex());
 		font.setFontName("Verdana");
 		CellStyle cellStyleTitle=workbook.createCellStyle();
 		cellStyleTitle.setFont(font);
 		cell.setCellStyle(cellStyleTitle);
 
-		
+
 		row=sheet.createRow(3);
-		Font font1=new XSSFFont();
-		font1.setBoldweight(Font.BOLDWEIGHT_BOLD);
+		XSSFFont font1=new XSSFFont();
+		font1.setBold(true);
 		font1.setItalic(true);
 		font1.setFontHeightInPoints((short)18);
-		font1.setColor(Font.COLOR_RED);
+		font1.setColor(IndexedColors.RED.getIndex());
 		font1.setFontName("Arial");
 		CellStyle cellStyle1=workbook.createCellStyle();
 		cellStyle1.setFont(font1);
@@ -279,7 +348,7 @@
 		font3.setFontHeightInPoints((short)9);
 		font3.setFontName("Times");
 		font3.setStrikeout(true);
-		font3.setColor((short)IndexedColors.PINK);
+		font3.setColor(IndexedColors.PINK.getIndex());
 		CellStyle cellStyle3=workbook.createCellStyle();
 		cellStyle3.setFont(font3);
 

Added: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java?rev=696584&view=auto
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java (added)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java Thu Sep 18 00:42:40 2008
@@ -0,0 +1,135 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.apache.poi.xssf.usermodel;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Comment;
+import org.apache.poi.ss.usermodel.CreationHelper;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.SharedStringSource;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.model.CommentsTable;
+import org.apache.xmlbeans.XmlOptions;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
+
+/**
+ * Tests functionality of the XSSFRichTextRun object
+ *
+ * @author Yegor Kozlov
+ */
+public class TestXSSFRichTextString extends TestCase {
+
+    public void testCreate() throws Exception {
+
+        XSSFRichTextString rt = new XSSFRichTextString("Apache POI");
+        assertEquals("Apache POI", rt.getString());
+
+        CTRst st = rt.getCTRst();
+        assertTrue(st.isSetT());
+        assertEquals("Apache POI", st.getT());
+
+        rt.append(" is cool stuff");
+        assertEquals(2, st.sizeOfRArray());
+        assertFalse(st.isSetT());
+
+        assertEquals("Apache POI is cool stuff", rt.getString());
+    }
+
+
+    public void testApplyFont() throws Exception {
+
+        XSSFRichTextString rt = new XSSFRichTextString();
+        rt.append("123");
+        rt.append("4567");
+        rt.append("89");
+
+        XSSFFont font1 = new XSSFFont();
+        font1.setBold(true);
+
+        rt.applyFont(2, 5, font1);
+
+        assertEquals(4, rt.numFormattingRuns());
+        assertEquals(0, rt.getIndexOfFormattingRun(0));
+        assertEquals(2, rt.getLengthOfFormattingRun(0));
+
+        assertEquals(2, rt.getIndexOfFormattingRun(1));
+        assertEquals(3, rt.getLengthOfFormattingRun(1));
+
+        assertEquals(5, rt.getIndexOfFormattingRun(2));
+        assertEquals(2, rt.getLengthOfFormattingRun(2));
+
+        assertEquals(7, rt.getIndexOfFormattingRun(3));
+        assertEquals(2, rt.getLengthOfFormattingRun(3));
+    }
+
+    public void testClearFormatting() throws Exception {
+
+        XSSFRichTextString rt = new XSSFRichTextString("Apache POI");
+        assertEquals("Apache POI", rt.getString());
+
+        rt.clearFormatting();
+
+        CTRst st = rt.getCTRst();
+        assertTrue(st.isSetT());
+        assertEquals("Apache POI", rt.getString());
+        assertEquals(0, rt.numFormattingRuns());
+
+        XSSFFont font = new XSSFFont();
+        font.setBold(true);
+
+        rt.applyFont(7, 10, font);
+        assertEquals(2, rt.numFormattingRuns());
+        rt.clearFormatting();
+        assertEquals("Apache POI", rt.getString());
+        assertEquals(0, rt.numFormattingRuns());
+
+    }
+
+    public void testGetFonts() throws Exception {
+
+        XSSFRichTextString rt = new XSSFRichTextString();
+
+        XSSFFont font1 = new XSSFFont();
+        font1.setFontName("Arial");
+        font1.setItalic(true);
+        rt.append("The quick", font1);
+
+        XSSFFont font1$ = rt.getFontOfFormattingRun(0);
+        assertEquals(font1.getItalic(), font1$.getItalic());
+        assertEquals(font1.getFontName(), font1$.getFontName());
+
+        XSSFFont font2 = new XSSFFont();
+        font2.setFontName("Courier");
+        font2.setBold(true);
+        rt.append(" brown fox", font2);
+
+        XSSFFont font2$ = rt.getFontOfFormattingRun(1);
+        assertEquals(font2.getBold(), font2$.getBold());
+        assertEquals(font2.getFontName(), font2$.getFontName());
+
+    }
+}

Propchange: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java Thu Sep 18 00:42:40 2008
@@ -24,6 +24,7 @@
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.xssf.usermodel.TestXSSFCell.DummySharedStringSource;
+import org.apache.poi.xssf.model.SharedStringsTable;
 
 /**
  * Tests for XSSFRow
@@ -167,7 +168,7 @@
         row.setZeroHeight(true);
         assertTrue(row.getZeroHeight());
     }
-        
+
     /**
      * Tests for the missing/blank cell policy stuff
      */
@@ -184,7 +185,7 @@
         row.createCell((short)1).setCellValue(3.2);
         row.createCell((short)4, Cell.CELL_TYPE_BLANK);
         row.createCell((short)5).setCellValue(4);
-        
+
         // First up, no policy
         assertEquals(Cell.CELL_TYPE_STRING,  row.getCell(0).getCellType());
         assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType());
@@ -192,7 +193,7 @@
         assertEquals(null, row.getCell(3));
         assertEquals(Cell.CELL_TYPE_BLANK,   row.getCell(4).getCellType());
         assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5).getCellType());
-        
+
         // RETURN_NULL_AND_BLANK - same as default
         assertEquals(Cell.CELL_TYPE_STRING,  row.getCell(0, Row.RETURN_NULL_AND_BLANK).getCellType());
         assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, Row.RETURN_NULL_AND_BLANK).getCellType());
@@ -200,7 +201,7 @@
         assertEquals(null, row.getCell(3, Row.RETURN_NULL_AND_BLANK));
         assertEquals(Cell.CELL_TYPE_BLANK,   row.getCell(4, Row.RETURN_NULL_AND_BLANK).getCellType());
         assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, Row.RETURN_NULL_AND_BLANK).getCellType());
-        
+
         // RETURN_BLANK_AS_NULL - nearly the same
         assertEquals(Cell.CELL_TYPE_STRING,  row.getCell(0, XSSFRow.RETURN_BLANK_AS_NULL).getCellType());
         assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, XSSFRow.RETURN_BLANK_AS_NULL).getCellType());
@@ -208,7 +209,7 @@
         assertEquals(null, row.getCell(3, XSSFRow.RETURN_BLANK_AS_NULL));
         assertEquals(null, row.getCell(4, XSSFRow.RETURN_BLANK_AS_NULL));
         assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, XSSFRow.RETURN_BLANK_AS_NULL).getCellType());
-        
+
         // CREATE_NULL_AS_BLANK - creates as needed
         assertEquals(Cell.CELL_TYPE_STRING,  row.getCell(0, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
         assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
@@ -216,7 +217,7 @@
         assertEquals(Cell.CELL_TYPE_BLANK,   row.getCell(3, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
         assertEquals(Cell.CELL_TYPE_BLANK,   row.getCell(4, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
         assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, XSSFRow.CREATE_NULL_AS_BLANK).getCellType());
-        
+
         // Check created ones get the right column
         assertEquals((short)0, row.getCell(0, XSSFRow.CREATE_NULL_AS_BLANK).getCellNum());
         assertEquals((short)1, row.getCell(1, XSSFRow.CREATE_NULL_AS_BLANK).getCellNum());
@@ -244,7 +245,7 @@
 
     private static XSSFSheet createParentObjects() {
         XSSFWorkbook wb = new XSSFWorkbook();
-        wb.setSharedStringSource(new DummySharedStringSource());
+        wb.setSharedStringSource(new SharedStringsTable());
         return new XSSFSheet(wb);
     }
 }

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java Thu Sep 18 00:42:40 2008
@@ -639,12 +639,10 @@
     }
     
     public void testGetActiveCell() {
-    	Workbook workbook = new XSSFWorkbook();
-    	CTSheet ctSheet = CTSheet.Factory.newInstance();
-    	CTWorksheet ctWorksheet = CTWorksheet.Factory.newInstance();
-    	XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, (XSSFWorkbook) workbook);
-    	ctWorksheet.addNewSheetViews().addNewSheetView().addNewSelection().setActiveCell("R5");
-    	
+    	XSSFWorkbook workbook = new XSSFWorkbook();
+    	XSSFSheet sheet = workbook.createSheet();
+    	sheet.setActiveCell("R5");
+
     	assertEquals("R5", sheet.getActiveCell());
     	
     }
@@ -733,7 +731,6 @@
     	assertEquals(1, ctWorksheet.getColsArray(0).getColArray(0).getStyle());
     	XSSFRow row = (XSSFRow) sheet.createRow(0);
     	XSSFCell cell = (XSSFCell) sheet.getRow(0).createCell(3);
-    	//System.out.println(cell.getCellStyle());
     	
     }
     
@@ -772,7 +769,6 @@
 	    	XSSFSheet sheet = new XSSFSheet(ctSheet, ctWorksheet, (XSSFWorkbook) workbook);
 
 	    	//one level
-	    	System.out.println("livello 1");
 	    	sheet.groupColumn((short)2,(short)7);
 	    	sheet.groupColumn((short)10,(short)11);
 	    	CTCols cols=sheet.getWorksheet().getColsArray(0);
@@ -784,7 +780,6 @@
 	    	assertEquals(1, colArray[0].getOutlineLevel());
 
 	    	//two level  
-	    	System.out.println("\n livello 2");
 	    	sheet.groupColumn((short)1,(short)2);
 	    	cols=sheet.getWorksheet().getColsArray(0);
 	    	assertEquals(4,cols.sizeOfColArray());
@@ -792,7 +787,6 @@
 	    	assertEquals(2, colArray[1].getOutlineLevel());
 
 	    	//three level
-	    	System.out.println("\n livello 3");
 	    	sheet.groupColumn((short)6,(short)8);
 	    	sheet.groupColumn((short)2,(short)3);
 	    	cols=sheet.getWorksheet().getColsArray(0);
@@ -855,5 +849,13 @@
 
 	    	assertEquals(1,sheet.getSheetTypeSheetFormatPr().getOutlineLevelRow());
 	    }
+            
+            public void testSetZoom() {
+                Workbook workBook = new XSSFWorkbook();
+                XSSFSheet sheet1 = (XSSFSheet) workBook.createSheet("new sheet");
+                sheet1.setZoom(3,4);   // 75 percent magnification
+                long zoom = sheet1.getSheetTypeSheetView().getZoomScale();
+                assertEquals(zoom, 75);
+            }
 
 }

Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java Thu Sep 18 00:42:40 2008
@@ -247,7 +247,7 @@
     	
     	//get default font, then change 2 values and check against different values (height changes)
     	Font font=workbook.createFont();
-    	font.setBoldweight(Font.BOLDWEIGHT_BOLD);
+    	((XSSFFont)font).setBold(true);
     	font.setUnderline(Font.U_DOUBLE);
     	StylesSource styleSource=new StylesTable();
     	long index=styleSource.putFont(font);
@@ -291,6 +291,25 @@
         assertNotNull(fontAt);
     }
     
+    public void testGetNumberOfFonts(){
+     	XSSFWorkbook wb = new XSSFWorkbook();
+
+        XSSFFont f1=wb.createFont();
+     	f1.setBold(true);
+     	wb.createCellStyle().setFont(f1);
+
+        XSSFFont f2=wb.createFont();
+     	f2.setUnderline(Font.U_DOUBLE);
+        wb.createCellStyle().setFont(f2);
+
+        XSSFFont f3=wb.createFont();
+     	f3.setFontHeightInPoints((short)23);
+        wb.createCellStyle().setFont(f3);
+
+        assertEquals(4,wb.getNumberOfFonts());
+     	assertEquals(Font.U_DOUBLE,wb.getFontAt((short)2).getUnderline());
+    }
+    
     public void testGetNumCellStyles(){
      	XSSFWorkbook workbook = new XSSFWorkbook();
         short i = workbook.getNumCellStyles();



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org