Add unit tests for XSSFTextRun and TextPainter, slightly more tests for XSSFSheet and enhance unit tests for XWPFParagraph and ExcelAntTest

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1649309 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2015-01-04 10:23:01 +00:00
parent 9794510d33
commit 8edf70ec8f
7 changed files with 545 additions and 35 deletions

View File

@ -0,0 +1,37 @@
/*
* 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.ss.excelant;
import static org.junit.Assert.assertNotNull;
import org.apache.poi.ss.usermodel.Workbook;
public class MockExcelAntWorkbookHandler implements IExcelAntWorkbookHandler {
public static boolean executed = false;
public static Workbook workbook = null;
public void setWorkbook(Workbook workbook) {
MockExcelAntWorkbookHandler.workbook = workbook;
}
public void execute() {
executed = true;
assertNotNull(workbook);
}
}

View File

@ -48,6 +48,12 @@ public class TestBuildFile extends BuildFileTest {
assertLogContaining("Succeeded when evaluating 'MortgageCalculator'!$B$4."); assertLogContaining("Succeeded when evaluating 'MortgageCalculator'!$B$4.");
} }
public void testEvaluateNoDetails() {
executeTarget("test-evaluate-nodetails");
assertLogContaining("Using input file: " + BuildFileTest.getDataDir() + "/spreadsheet/excelant.xls");
assertLogNotContaining("Succeeded when evaluating 'MortgageCalculator'!$B$4.");
}
public void testPrecision() { public void testPrecision() {
executeTarget("test-precision"); executeTarget("test-precision");
@ -61,12 +67,25 @@ public class TestBuildFile extends BuildFileTest {
assertLogContaining("2/3 tests passed"); assertLogContaining("2/3 tests passed");
} }
public void testPrecisionFail() {
expectSpecificBuildException("test-precision-fails", "precision not matched",
"\tFailed to evaluate cell 'MortgageCalculator'!$B$4. It evaluated to 2285.5761494145563 when the value of 2285.576149 with precision of 1.0E-10 was expected.");
}
public void testPassOnError() { public void testPassOnError() {
executeTarget("test-passonerror"); executeTarget("test-passonerror");
} }
public void testFailOnError() { public void testFailOnError() {
expectBuildException("test-failonerror", "fail on error"); expectBuildException("test-failonerror", "fail on error");
assertLogContaining("Using input file: " + BuildFileTest.getDataDir() + "/spreadsheet/excelant.xls");
assertLogNotContaining("failed because 1 of 0 evaluations failed to evaluate correctly. Failed to evaluate cell 'MortageCalculatorFunction'!$D$3");
}
public void testFailOnErrorNoDetails() {
expectBuildException("test-failonerror-nodetails", "fail on error");
assertLogNotContaining("Using input file: " + BuildFileTest.getDataDir() + "/spreadsheet/excelant.xls");
assertLogNotContaining("failed because 1 of 0 evaluations failed to evaluate correctly. Failed to evaluate cell 'MortageCalculatorFunction'!$D$3");
} }
public void testUdf() { public void testUdf() {
@ -78,4 +97,23 @@ public class TestBuildFile extends BuildFileTest {
executeTarget("test-settext"); executeTarget("test-settext");
assertLogContaining("1/1 tests passed"); assertLogContaining("1/1 tests passed");
} }
public void testAddHandler() {
executeTarget("test-addhandler");
assertLogContaining("Using input file: " + BuildFileTest.getDataDir() + "/spreadsheet/excelant.xls");
assertLogContaining("Succeeded when evaluating 'MortgageCalculator'!$B$4.");
assertNotNull("The workbook should have been passed to the handler", MockExcelAntWorkbookHandler.workbook);
assertTrue("The handler should have been executed", MockExcelAntWorkbookHandler.executed);
}
public void testAddHandlerWrongClass() {
executeTarget("test-addhandler-wrongclass");
assertLogContaining("Using input file: " + BuildFileTest.getDataDir() + "/spreadsheet/excelant.xls");
assertLogContaining("Succeeded when evaluating 'MortgageCalculator'!$B$4.");
}
public void testAddHandlerFails() {
expectSpecificBuildException("test-addhandler-fails", "NullPointException", null);
}
} }

View File

@ -57,6 +57,18 @@ under the License.
</poi:excelant> </poi:excelant>
</target> </target>
<target name="test-evaluate-nodetails">
<poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls">
<poi:test showSuccessDetails="false">
<poi:setDouble cell="'MortgageCalculator'!$B$1" value="240000"/>
<poi:setDouble cell="'MortgageCalculator'!$B$2" value ="0.11"/>
<poi:setDouble cell="'MortgageCalculator'!$B$3" value ="30"/>
<poi:evaluate showDelta="true" cell="'MortgageCalculator'!$B$4"
expectedValue="2285.576149" precision="1.0E-4" />
</poi:test>
</poi:excelant>
</target>
<target name="test-precision"> <target name="test-precision">
<poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls"> <poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls">
<poi:precision value="1.0E-4"/> <poi:precision value="1.0E-4"/>
@ -85,7 +97,22 @@ under the License.
expectedValue="2285.576149" precision="1.0E-10"/> expectedValue="2285.576149" precision="1.0E-10"/>
</poi:test> </poi:test>
</poi:excelant> </poi:excelant>
</target>
<target name="test-precision-fails">
<poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls">
<poi:precision value="1.0E-4"/>
<poi:test name="tiny-precision" showFailureDetail="true" showSuccessDetails="true">
<poi:setDouble cell="'MortgageCalculator'!$B$1" value="240000"/>
<poi:setDouble cell="'MortgageCalculator'!$B$2" value ="0.11"/>
<poi:setDouble cell="'MortgageCalculator'!$B$3" value ="30"/>
<poi:evaluate showDelta="true" cell="'MortgageCalculator'!$B$4"
expectedValue="2285.576149" precision="1.0E-10" requiredToPass="true"/>
</poi:test>
</poi:excelant>
</target> </target>
<!-- <!--
@ -120,6 +147,19 @@ under the License.
</poi:excelant> </poi:excelant>
</target> </target>
<target name="test-failonerror-notdetails">
<poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls" failOnError="true">
<poi:test name="failonerror" showFailureDetail="false" showSuccessDetails="false">
<poi:setDouble cell="'MortageCalculatorFunction'!$D$1" value="1"/>
<poi:setDouble cell="'MortageCalculatorFunction'!$D$2" value="2"/>
<poi:setFormula cell="'MortageCalculatorFunction'!$D$3" value ="SUM(D1:D2)"/>
<poi:evaluate showDelta="true" cell="'MortageCalculatorFunction'!$D$3" expectedValue="2"/>
</poi:test>
</poi:excelant>
</target>
<!-- Evaluation of user-defined functions --> <!-- Evaluation of user-defined functions -->
<target name="test-udf"> <target name="test-udf">
<poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls"> <poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls">
@ -145,4 +185,42 @@ under the License.
</poi:excelant> </poi:excelant>
</target> </target>
<target name="test-addhandler">
<poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls">
<poi:test showSuccessDetails="true">
<poi:handler className="org.apache.poi.ss.excelant.MockExcelAntWorkbookHandler"/>
<poi:setDouble cell="'MortgageCalculator'!$B$1" value="240000"/>
<poi:setDouble cell="'MortgageCalculator'!$B$2" value ="0.11"/>
<poi:setDouble cell="'MortgageCalculator'!$B$3" value ="30"/>
<poi:evaluate showDelta="true" cell="'MortgageCalculator'!$B$4"
expectedValue="2285.576149" precision="1.0E-4" />
</poi:test>
</poi:excelant>
</target>
<target name="test-addhandler-wrongclass">
<poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls">
<poi:test showSuccessDetails="true">
<poi:handler className="java.lang.String"/>
<poi:setDouble cell="'MortgageCalculator'!$B$1" value="240000"/>
<poi:setDouble cell="'MortgageCalculator'!$B$2" value ="0.11"/>
<poi:setDouble cell="'MortgageCalculator'!$B$3" value ="30"/>
<poi:evaluate showDelta="true" cell="'MortgageCalculator'!$B$4"
expectedValue="2285.576149" precision="1.0E-4" />
</poi:test>
</poi:excelant>
</target>
<target name="test-addhandler-fails">
<poi:excelant fileName="${data.dir.name}/spreadsheet/excelant.xls">
<poi:test showSuccessDetails="true">
<poi:handler/>
<poi:setDouble cell="'MortgageCalculator'!$B$1" value="240000"/>
<poi:setDouble cell="'MortgageCalculator'!$B$2" value ="0.11"/>
<poi:setDouble cell="'MortgageCalculator'!$B$3" value ="30"/>
<poi:evaluate showDelta="true" cell="'MortgageCalculator'!$B$4"
expectedValue="2285.576149" precision="1.0E-4" />
</poi:test>
</poi:excelant>
</target>
</project> </project>

View File

@ -21,12 +21,7 @@ import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertTrue; import static junit.framework.TestCase.assertTrue;
import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook; import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook;
import static org.apache.poi.xssf.XSSFTestDataSamples.writeOutAndReadBack; import static org.apache.poi.xssf.XSSFTestDataSamples.writeOutAndReadBack;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.*;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.fail;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
@ -34,6 +29,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.apache.poi.POIXMLException;
import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.poifs.crypt.CryptoFunctions; import org.apache.poi.poifs.crypt.CryptoFunctions;
import org.apache.poi.poifs.crypt.HashAlgorithm; import org.apache.poi.poifs.crypt.HashAlgorithm;
@ -58,18 +54,7 @@ import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper; import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
import org.junit.Test; import org.junit.Test;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCalcPr; import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComments;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetData;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetProtection;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCalcMode;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPane;
@SuppressWarnings("resource") @SuppressWarnings("resource")
@ -370,6 +355,7 @@ public final class TestXSSFSheet extends BaseTestSheet {
assertEquals(2 + 1, colArray[0].getMin()); // 1 based assertEquals(2 + 1, colArray[0].getMin()); // 1 based
assertEquals(7 + 1, colArray[0].getMax()); // 1 based assertEquals(7 + 1, colArray[0].getMax()); // 1 based
assertEquals(1, colArray[0].getOutlineLevel()); assertEquals(1, colArray[0].getOutlineLevel());
assertEquals(0, sheet.getColumnOutlineLevel(0));
//two level //two level
sheet.groupColumn(1, 2); sheet.groupColumn(1, 2);
@ -1167,6 +1153,8 @@ public final class TestXSSFSheet extends BaseTestSheet {
XSSFWorkbook workbook = new XSSFWorkbook(); XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Sheet 1"); XSSFSheet sheet = workbook.createSheet("Sheet 1");
assertFalse(sheet.getForceFormulaRecalculation());
// Set // Set
sheet.setForceFormulaRecalculation(true); sheet.setForceFormulaRecalculation(true);
assertEquals(true, sheet.getForceFormulaRecalculation()); assertEquals(true, sheet.getForceFormulaRecalculation());
@ -1463,4 +1451,37 @@ public final class TestXSSFSheet extends BaseTestSheet {
} }
fail(); fail();
} }
@Test
public void testReadFails() {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
try {
sheet.onDocumentRead();
fail("Throws exception because we cannot read here");
} catch (POIXMLException e) {
// expected here
}
}
@SuppressWarnings("deprecation")
@Test
public void testCreateComment() {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
assertNotNull(sheet.createComment());
}
@Test
public void testRightToLeft() {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
assertFalse(sheet.isRightToLeft());
sheet.setRightToLeft(true);
assertTrue(sheet.isRightToLeft());
sheet.setRightToLeft(false);
assertFalse(sheet.isRightToLeft());
}
} }

View File

@ -0,0 +1,142 @@
/* ====================================================================
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 static org.junit.Assert.*;
import java.awt.Color;
import java.io.IOException;
import java.util.List;
import org.junit.Test;
public class TestXSSFTextRun {
@Test
public void testXSSFTextParagraph() throws IOException {
XSSFWorkbook wb = new XSSFWorkbook();
try {
XSSFSheet sheet = wb.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFTextBox shape = drawing.createTextbox(new XSSFClientAnchor(0, 0, 0, 0, 2, 2, 3, 4));
XSSFTextParagraph para = shape.addNewTextParagraph();
para.addNewTextRun().setText("Line 1");
List<XSSFTextRun> runs = para.getTextRuns();
assertEquals(1, runs.size());
XSSFTextRun run = runs.get(0);
assertEquals("Line 1", run.getText());
assertNotNull(run.getParentParagraph());
assertNotNull(run.getXmlObject());
assertNotNull(run.getRPr());
assertEquals(new Color(0,0,0), run.getFontColor());
Color color = new Color(0, 255, 255);
run.setFontColor(color);
assertEquals(color, run.getFontColor());
assertEquals(11.0, run.getFontSize(), 0.01);
run.setFontSize(12.32);
assertEquals(12.32, run.getFontSize(), 0.01);
run.setFontSize(-1.0);
assertEquals(11.0, run.getFontSize(), 0.01);
run.setFontSize(-1.0);
assertEquals(11.0, run.getFontSize(), 0.01);
try {
run.setFontSize(0.9);
fail("Should fail");
} catch (IllegalArgumentException e) {
assertTrue(e.getMessage().contains("0.9"));
}
assertEquals(11.0, run.getFontSize(), 0.01);
assertEquals(0.0, run.getCharacterSpacing(), 0.01);
run.setCharacterSpacing(12.31);
assertEquals(12.31, run.getCharacterSpacing(), 0.01);
run.setCharacterSpacing(0.0);
assertEquals(0.0, run.getCharacterSpacing(), 0.01);
run.setCharacterSpacing(0.0);
assertEquals(0.0, run.getCharacterSpacing(), 0.01);
assertEquals("Calibri", run.getFontFamily());
run.setFontFamily("Arial", (byte)1, (byte)1, false);
assertEquals("Arial", run.getFontFamily());
run.setFontFamily("Arial", (byte)-1, (byte)1, false);
assertEquals("Arial", run.getFontFamily());
run.setFontFamily("Arial", (byte)1, (byte)-1, false);
assertEquals("Arial", run.getFontFamily());
run.setFontFamily("Arial", (byte)1, (byte)1, true);
assertEquals("Arial", run.getFontFamily());
run.setFontFamily(null, (byte)1, (byte)1, false);
assertEquals("Calibri", run.getFontFamily());
run.setFontFamily(null, (byte)1, (byte)1, false);
assertEquals("Calibri", run.getFontFamily());
run.setFont("Arial");
assertEquals("Arial", run.getFontFamily());
assertEquals((byte)0, run.getPitchAndFamily());
run.setFont(null);
assertEquals((byte)0, run.getPitchAndFamily());
assertFalse(run.isStrikethrough());
run.setStrikethrough(true);
assertTrue(run.isStrikethrough());
run.setStrikethrough(false);
assertFalse(run.isStrikethrough());
assertFalse(run.isSuperscript());
run.setSuperscript(true);
assertTrue(run.isSuperscript());
run.setSuperscript(false);
assertFalse(run.isSuperscript());
assertFalse(run.isSubscript());
run.setSubscript(true);
assertTrue(run.isSubscript());
run.setSubscript(false);
assertFalse(run.isSubscript());
assertEquals(TextCap.NONE, run.getTextCap());
assertFalse(run.isBold());
run.setBold(true);
assertTrue(run.isBold());
run.setBold(false);
assertFalse(run.isBold());
assertFalse(run.isItalic());
run.setItalic(true);
assertTrue(run.isItalic());
run.setItalic(false);
assertFalse(run.isItalic());
assertFalse(run.isUnderline());
run.setUnderline(true);
assertTrue(run.isUnderline());
run.setUnderline(false);
assertFalse(run.isUnderline());
assertNotNull(run.toString());
} finally {
wb.close();
}
}
}

View File

@ -27,21 +27,7 @@ import org.apache.poi.xwpf.XWPFTestDataSamples;
import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture; import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture;
import org.openxmlformats.schemas.drawingml.x2006.picture.PicDocument; import org.openxmlformats.schemas.drawingml.x2006.picture.PicDocument;
import org.openxmlformats.schemas.drawingml.x2006.picture.impl.PicDocumentImpl; import org.openxmlformats.schemas.drawingml.x2006.picture.impl.PicDocumentImpl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark; import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPBdr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTextAlignment;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STLineSpacingRule;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTextAlignment;
/** /**
* Tests for XWPF Paragraphs * Tests for XWPF Paragraphs
@ -342,6 +328,7 @@ public final class TestXWPFParagraph extends TestCase {
r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic(); r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic();
r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic().getGraphicData(); r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic().getGraphicData();
PicDocument pd = new PicDocumentImpl(null); PicDocument pd = new PicDocumentImpl(null);
assertTrue(pd.isNil());
} }
public void testTika792() throws Exception{ public void testTika792() throws Exception{
@ -351,4 +338,159 @@ public final class TestXWPFParagraph extends TestCase {
XWPFParagraph paragraph = doc.getParagraphs().get(0); XWPFParagraph paragraph = doc.getParagraphs().get(0);
assertEquals("s", paragraph.getText()); assertEquals("s", paragraph.getText());
} }
}
public void testSettersGetters() {
XWPFDocument doc = new XWPFDocument();
XWPFParagraph p = doc.createParagraph();
assertTrue(p.isEmpty());
assertFalse(p.removeRun(0));
p.setBorderTop(Borders.BABY_PACIFIER);
p.setBorderBetween(Borders.BABY_PACIFIER);
p.setBorderBottom(Borders.BABY_RATTLE);
assertNotNull(p.getIRuns());
assertEquals(0, p.getIRuns().size());
assertFalse(p.isEmpty());
assertNull(p.getStyleID());
assertNull(p.getStyle());
assertNull(p.getNumID());
p.setNumID(BigInteger.valueOf(12));
assertEquals(BigInteger.valueOf(12), p.getNumID());
p.setNumID(BigInteger.valueOf(13));
assertEquals(BigInteger.valueOf(13), p.getNumID());
assertNull(p.getNumFmt());
assertNull(p.getNumIlvl());
assertEquals("", p.getParagraphText());
assertEquals("", p.getPictureText());
assertEquals("", p.getFootnoteText());
p.setBorderBetween(Borders.NONE);
assertEquals(Borders.NONE, p.getBorderBetween());
p.setBorderBetween(Borders.BASIC_BLACK_DASHES);
assertEquals(Borders.BASIC_BLACK_DASHES, p.getBorderBetween());
p.setBorderBottom(Borders.NONE);
assertEquals(Borders.NONE, p.getBorderBottom());
p.setBorderBottom(Borders.BABY_RATTLE);
assertEquals(Borders.BABY_RATTLE, p.getBorderBottom());
p.setBorderLeft(Borders.NONE);
assertEquals(Borders.NONE, p.getBorderLeft());
p.setBorderLeft(Borders.BASIC_WHITE_SQUARES);
assertEquals(Borders.BASIC_WHITE_SQUARES, p.getBorderLeft());
p.setBorderRight(Borders.NONE);
assertEquals(Borders.NONE, p.getBorderRight());
p.setBorderRight(Borders.BASIC_WHITE_DASHES);
assertEquals(Borders.BASIC_WHITE_DASHES, p.getBorderRight());
p.setBorderBottom(Borders.NONE);
assertEquals(Borders.NONE, p.getBorderBottom());
p.setBorderBottom(Borders.BASIC_WHITE_DOTS);
assertEquals(Borders.BASIC_WHITE_DOTS, p.getBorderBottom());
assertFalse(p.isPageBreak());
p.setPageBreak(true);
assertTrue(p.isPageBreak());
p.setPageBreak(false);
assertFalse(p.isPageBreak());
assertEquals(-1, p.getSpacingAfter());
p.setSpacingAfter(12);
assertEquals(12, p.getSpacingAfter());
assertEquals(-1, p.getSpacingAfterLines());
p.setSpacingAfterLines(14);
assertEquals(14, p.getSpacingAfterLines());
assertEquals(-1, p.getSpacingBefore());
p.setSpacingBefore(16);
assertEquals(16, p.getSpacingBefore());
assertEquals(-1, p.getSpacingBeforeLines());
p.setSpacingBeforeLines(18);
assertEquals(18, p.getSpacingBeforeLines());
assertEquals(LineSpacingRule.AUTO, p.getSpacingLineRule());
p.setSpacingLineRule(LineSpacingRule.EXACT);
assertEquals(LineSpacingRule.EXACT, p.getSpacingLineRule());
assertEquals(-1, p.getIndentationLeft());
p.setIndentationLeft(21);
assertEquals(21, p.getIndentationLeft());
assertEquals(-1, p.getIndentationRight());
p.setIndentationRight(25);
assertEquals(25, p.getIndentationRight());
assertEquals(-1, p.getIndentationHanging());
p.setIndentationHanging(25);
assertEquals(25, p.getIndentationHanging());
assertEquals(-1, p.getIndentationFirstLine());
p.setIndentationFirstLine(25);
assertEquals(25, p.getIndentationFirstLine());
assertFalse(p.isWordWrap());
p.setWordWrap(true);
assertTrue(p.isWordWrap());
p.setWordWrap(false);
assertFalse(p.isWordWrap());
assertNull(p.getStyle());
p.setStyle("teststyle");
assertEquals("teststyle", p.getStyle());
p.addRun(CTR.Factory.newInstance());
//assertTrue(p.removeRun(0));
assertNotNull(p.getBody());
assertEquals(BodyElementType.PARAGRAPH, p.getElementType());
assertEquals(BodyType.DOCUMENT, p.getPartType());
}
public void testSearchTextNotFound() {
XWPFDocument doc = new XWPFDocument();
XWPFParagraph p = doc.createParagraph();
assertNull(p.searchText("test", new PositionInParagraph()));
assertEquals("", p.getText());
}
public void testSearchTextFound() throws IOException {
XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
List<XWPFParagraph> ps = xml.getParagraphs();
assertEquals(10, ps.size());
XWPFParagraph p = ps.get(0);
TextSegement segment = p.searchText("sample word document", new PositionInParagraph());
assertNotNull(segment);
assertEquals("sample word document", p.getText(segment));
assertTrue(p.removeRun(0));
}
@SuppressWarnings("deprecation")
public void testRuns() {
XWPFDocument doc = new XWPFDocument();
XWPFParagraph p = doc.createParagraph();
CTR run = CTR.Factory.newInstance();
XWPFRun r = new XWPFRun(run, doc.createParagraph());
p.addRun(r);
p.addRun(r);
assertNotNull(p.getRun(run));
assertNull(p.getRun(null));
}
}

View File

@ -0,0 +1,52 @@
/* ====================================================================
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.hslf.model;
import org.apache.poi.hslf.record.StyleTextPropAtom;
import org.apache.poi.hslf.record.TextCharsAtom;
import org.apache.poi.hslf.record.TextHeaderAtom;
import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.hssf.usermodel.DummyGraphics2d;
import org.junit.Test;
public class TextPainterTest {
@Test
public void testTextPainter() {
TextShape shape = new Polygon();
TextPainter painter = new TextPainter(shape);
painter.getAttributedString(new TextRun(null, new TextCharsAtom(), null));
painter.paint(new DummyGraphics2d());
painter.getTextElements((float)1.0, null);
}
@Test
public void testTextPainterWithText() {
TextShape shape = new Polygon();
TextPainter painter = new TextPainter(shape);
TextCharsAtom tca = new TextCharsAtom();
tca.setText("some text to read");
TextRun txrun = new TextRun(new TextHeaderAtom(), tca, new StyleTextPropAtom(10));
Slide sheet = new Slide(1, 1, 1);
sheet.setSlideShow(new SlideShow());
txrun.setSheet(sheet);
painter.getAttributedString(txrun, new DummyGraphics2d());
painter.paint(new DummyGraphics2d());
painter.getTextElements((float)1.0, null);
}
}