poi/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java

298 lines
9.1 KiB
Java
Executable File

package org.apache.poi.xssf.usermodel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import junit.framework.TestCase;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
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.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;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STFontScheme;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STUnderlineValues;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignRun;
public class TestXSSFFont extends TestCase{
public void testConstructor(){
XSSFFont xssfFont=new XSSFFont();
assertNotNull(xssfFont);
assertNotNull(xssfFont.getCTFont());
}
public void testBoldweight(){
CTFont ctFont=CTFont.Factory.newInstance();
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
CTBooleanProperty bool=wrapper.getCTFont().addNewB();
bool.setVal(false);
wrapper.setB(bool);
XSSFFont xssfFont=new XSSFFont(ctFont);
assertEquals(Font.BOLDWEIGHT_NORMAL, xssfFont.getBoldweight());
xssfFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
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);
XSSFFont xssfFont=new XSSFFont(ctFont);
assertEquals(Font.ANSI_CHARSET,xssfFont.getCharSet());
xssfFont.setCharSet(Font.DEFAULT_CHARSET);
assertEquals(Charset.DEFAULT_CHARSET, wrapper.getCharset().getVal());
}
public void testFontName(){
CTFont ctFont=CTFont.Factory.newInstance();
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
CTFontName fname=ctFont.addNewName();
fname.setVal("Arial");
wrapper.setFontName(fname);
XSSFFont xssfFont=new XSSFFont(ctFont);
assertEquals("Arial", xssfFont.getFontName());
xssfFont.setFontName("Courier");
assertEquals("Courier",wrapper.getName().getVal());
}
public void testItalic(){
CTFont ctFont=CTFont.Factory.newInstance();
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
CTBooleanProperty bool=wrapper.getCTFont().addNewI();
bool.setVal(false);
wrapper.setI(bool);
XSSFFont xssfFont=new XSSFFont(ctFont);
assertEquals(false, xssfFont.getItalic());
xssfFont.setItalic(true);
assertEquals(ctFont.getIArray().length,1);
assertEquals(true, ctFont.getIArray(0).getVal());
assertEquals(true,wrapper.getI().getVal());
}
public void testStrikeout(){
CTFont ctFont=CTFont.Factory.newInstance();
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
CTBooleanProperty bool=wrapper.getCTFont().addNewStrike();
bool.setVal(false);
wrapper.setStrike(bool);
XSSFFont xssfFont=new XSSFFont(ctFont);
assertEquals(false, xssfFont.getStrikeout());
xssfFont.setStrikeout(true);
assertEquals(ctFont.getStrikeArray().length,1);
assertEquals(true, ctFont.getStrikeArray(0).getVal());
assertEquals(true,wrapper.getStrike().getVal());
}
public void testFontHeight(){
CTFont ctFont=CTFont.Factory.newInstance();
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
CTFontSize size=ctFont.addNewSz();
size.setVal(11);
wrapper.setSz(size);
XSSFFont xssfFont=new XSSFFont(ctFont);
assertEquals(11/20,xssfFont.getFontHeight());
xssfFont.setFontHeight((short)20);
assertEquals(new Double(20*20).doubleValue(),wrapper.getSz().getVal()); }
public void testFontHeightInPoint(){
CTFont ctFont=CTFont.Factory.newInstance();
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
CTFontSize size=ctFont.addNewSz();
size.setVal(14);
wrapper.setSz(size);
XSSFFont xssfFont=new XSSFFont(ctFont);
assertEquals(14,xssfFont.getFontHeightInPoints());
xssfFont.setFontHeightInPoints((short)20);
assertEquals(new Double(20).doubleValue(),wrapper.getSz().getVal());
}
public void testUnderline(){
CTFont ctFont=CTFont.Factory.newInstance();
CTFontWrapper wrapper=new CTFontWrapper(ctFont);
CTUnderlineProperty underlinePropr=wrapper.getCTFont().addNewU();
underlinePropr.setVal(STUnderlineValues.SINGLE);
wrapper.setU(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());
}
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);
XSSFFont xssfFont=new XSSFFont(ctFont);
assertEquals(Font.COLOR_NORMAL,xssfFont.getColor());
xssfFont.setColor(Font.COLOR_RED);
assertEquals(IndexedColors.RED,wrapper.getColor().getIndexed());
}
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);
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);
XSSFFont font=new XSSFFont(ctFont);
assertEquals(XSSFFont.SCHEME_MAJOR,font.getScheme());
font.setScheme(XSSFFont.SCHEME_NONE);
assertEquals(STFontScheme.NONE,wrapper.getFontScheme().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);
XSSFFont font=new XSSFFont(ctFont);
assertEquals(Font.SS_NONE,font.getTypeOffset());
font.setTypeOffset(XSSFFont.SS_SUPER);
assertEquals(STVerticalAlignRun.SUPERSCRIPT,wrapper.getVertAlign().getVal());
}
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);
font.setFontHeightInPoints((short)22);
font.setColor((short)IndexedColors.BLUE);
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);
font1.setItalic(true);
font1.setFontHeightInPoints((short)18);
font1.setColor(Font.COLOR_RED);
font1.setFontName("Arial");
CellStyle cellStyle1=workbook.createCellStyle();
cellStyle1.setFont(font1);
Cell cell1=row.createCell(0);
cell1.setCellValue(new XSSFRichTextString("red bold 18pt italic Arial"));
cell1.setCellStyle(cellStyle1);
row=sheet.createRow(4);
Font font2=new XSSFFont();
font2.setFontHeight((short)1);
font2.setFontName("Courier");
font2.setColor(Font.COLOR_NORMAL);
font2.setUnderline(Font.U_DOUBLE);
CellStyle cellStyle2=workbook.createCellStyle();
cellStyle2.setFont(font2);
Cell cell2=row.createCell(0);
cell2.setCellValue(new XSSFRichTextString("Something in courier underlined"));
cell2.setCellStyle(cellStyle2);
row=sheet.createRow(5);
cell1=row.createCell(0);
Font font3=new XSSFFont();
font3.setFontHeightInPoints((short)9);
font3.setFontName("Times");
font3.setStrikeout(true);
font3.setColor((short)IndexedColors.PINK);
CellStyle cellStyle3=workbook.createCellStyle();
cellStyle3.setFont(font3);
cell1.setCellValue(new XSSFRichTextString("pink italic Times 9pt strikeout!!!"));
cell1.setCellStyle(cellStyle3);
File tmpFile = new File("test-ooxml-font.xlsx");
if(tmpFile.exists()) tmpFile.delete();
FileOutputStream out = new FileOutputStream(tmpFile);
workbook.write(out);
out.close();
}
}