Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java Sat Dec 12 23:15:20 2020 @@ -26,10 +26,12 @@ import java.util.function.Consumer; import java.util.function.Function; import org.apache.poi.ooxml.POIXMLDocumentPart; +import org.apache.poi.ooxml.util.POIXMLUnits; import org.apache.poi.util.Internal; +import org.apache.poi.util.Units; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJcTable; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTString; @@ -40,7 +42,7 @@ import org.openxmlformats.schemas.wordpr import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJcTable; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth; /** @@ -279,7 +281,7 @@ public class XWPFTable implements IBodyE */ public int getWidth() { CTTblPr tblPr = getTblPr(); - return tblPr.isSetTblW() ? tblPr.getTblW().getW().intValue() : -1; + return tblPr.isSetTblW() ? (int)Units.toDXA(POIXMLUnits.parseLength(tblPr.getTblW().xgetW())) : -1; } /** @@ -407,8 +409,8 @@ public class XWPFTable implements IBodyE */ public void setTableAlignment(TableRowAlign tra) { CTTblPr tPr = getTblPr(true); - CTJc jc = tPr.isSetJc() ? tPr.getJc() : tPr.addNewJc(); - jc.setVal(STJc.Enum.forInt(tra.getValue())); + CTJcTable jc = tPr.isSetJc() ? tPr.getJc() : tPr.addNewJc(); + jc.setVal(STJcTable.Enum.forInt(tra.getValue())); } /** @@ -985,7 +987,7 @@ public class XWPFTable implements IBodyE if (tcm != null) { CTTblWidth tw = margin.apply(tcm); if (tw != null) { - return tw.getW().intValue(); + return (int) Units.toDXA(POIXMLUnits.parseLength(tw.xgetW())); } } return 0; @@ -1154,11 +1156,11 @@ public class XWPFTable implements IBodyE if (typeValue == STTblWidth.DXA || typeValue == STTblWidth.AUTO || typeValue == STTblWidth.NIL) { - result = 0.0 + ctWidth.getW().intValue(); + result = 0.0 + Units.toDXA(POIXMLUnits.parseLength(ctWidth.xgetW())); } else if (typeValue == STTblWidth.PCT) { // Percentage values are stored as integers that are 50 times // percentage. - result = ctWidth.getW().intValue() / 50.0; + result = Units.toDXA(POIXMLUnits.parseLength(ctWidth.xgetW())) / 50.0; } else { // Should never get here }
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java Sat Dec 12 23:15:20 2020 @@ -23,7 +23,9 @@ import java.util.HashMap; import java.util.List; import org.apache.poi.ooxml.POIXMLDocumentPart; +import org.apache.poi.ooxml.util.POIXMLUnits; import org.apache.poi.util.Internal; +import org.apache.poi.util.Units; import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlObject; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; @@ -528,8 +530,8 @@ public class XWPFTableCell implements IB * @return Width value as a double-precision decimal. * @since 4.0.0 */ - public double getWidthDecimal() { - return XWPFTable.getWidthDecimal(getTcWidth()); + public double getWidthDecimal() { + return XWPFTable.getWidthDecimal(getTcWidth()); } /** @@ -541,7 +543,7 @@ public class XWPFTableCell implements IB * @since 4.0.0 */ public TableWidthType getWidthType() { - return XWPFTable.getWidthType(getTcWidth()); + return XWPFTable.getWidthType(getTcWidth()); } /** @@ -551,7 +553,7 @@ public class XWPFTableCell implements IB * @since 4.0.0 */ public void setWidth(String widthValue) { - XWPFTable.setWidthValue(widthValue, getTcWidth()); + XWPFTable.setWidthValue(widthValue, getTcWidth()); } private CTTblWidth getTcWidth() { @@ -582,6 +584,6 @@ public class XWPFTableCell implements IB } public int getWidth() { - return getTcWidth().getW().intValue(); + return (int) Units.toDXA(POIXMLUnits.parseLength(getTcWidth().xgetW())); } } Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java Sat Dec 12 23:15:20 2020 @@ -20,10 +20,12 @@ import java.math.BigInteger; import java.util.ArrayList; import java.util.List; +import org.apache.poi.ooxml.util.POIXMLUnits; import org.apache.poi.util.Internal; -import org.apache.poi.xwpf.model.WMLHelper; +import org.apache.poi.util.Units; import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlObject; +import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STOnOff1; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHeight; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow; @@ -101,7 +103,7 @@ public class XWPFTableRow { */ public int getHeight() { CTTrPr properties = getTrPr(); - return properties.sizeOfTrHeightArray() == 0 ? 0 : properties.getTrHeightArray(0).getVal().intValue(); + return properties.sizeOfTrHeightArray() == 0 ? 0 : (int) Units.toDXA(POIXMLUnits.parseLength(properties.getTrHeightArray(0).xgetVal())); } /** @@ -229,7 +231,7 @@ public class XWPFTableRow { CTTrPr trpr = getTrPr(); if (trpr.sizeOfCantSplitArray() > 0) { CTOnOff onoff = trpr.getCantSplitArray(0); - isCant = (onoff.isSetVal() ? WMLHelper.convertSTOnOffToBoolean(onoff.getVal()) : true); + isCant = !onoff.isSetVal() || POIXMLUnits.parseOnOff(onoff.xgetVal()); } } return isCant; @@ -246,7 +248,7 @@ public class XWPFTableRow { public void setCantSplitRow(boolean split) { CTTrPr trpr = getTrPr(); CTOnOff onoff = (trpr.sizeOfCantSplitArray() > 0 ? trpr.getCantSplitArray(0) : trpr.addNewCantSplit()); - onoff.setVal(WMLHelper.convertBooleanToSTOnOff(split)); + onoff.setVal(split ? STOnOff1.ON : STOnOff1.OFF); } /** @@ -254,7 +256,7 @@ public class XWPFTableRow { * table split across pages. NOTE - Word will not repeat a table row unless * all preceding rows of the table are also repeated. This function returns * false if the row will not be repeated even if the repeat tag is present - * for this row. + * for this row. * * @return true if table's header row should be repeated at the top of each * page of table, false otherwise. @@ -269,14 +271,14 @@ public class XWPFTableRow { } return repeat; } - + private boolean getRepeat() { boolean repeat = false; if (ctRow.isSetTrPr()) { CTTrPr trpr = getTrPr(); if (trpr.sizeOfTblHeaderArray() > 0) { CTOnOff rpt = trpr.getTblHeaderArray(0); - repeat = (rpt.isSetVal() ? WMLHelper.convertSTOnOffToBoolean(rpt.getVal()) : true); + repeat = !rpt.isSetVal() || POIXMLUnits.parseOnOff(rpt.xgetVal()); } } return repeat; @@ -293,6 +295,6 @@ public class XWPFTableRow { public void setRepeatHeader(boolean repeat) { CTTrPr trpr = getTrPr(); CTOnOff onoff = (trpr.sizeOfTblHeaderArray() > 0 ? trpr.getTblHeaderArray(0) : trpr.addNewTblHeader()); - onoff.setVal(WMLHelper.convertBooleanToSTOnOff(repeat)); + onoff.setVal(repeat ? STOnOff1.ON : STOnOff1.OFF); } } Copied: poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip (from r1884367, poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema.zip) URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip?p2=poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip&p1=poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema.zip&r1=1884367&r2=1884368&rev=1884368&view=diff ============================================================================== Binary files - no diff available. Modified: poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== Binary files - no diff available. Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java Sat Dec 12 23:15:20 2020 @@ -21,6 +21,11 @@ import static org.junit.Assert.assertEqu import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; + +import org.apache.poi.ooxml.util.POIXMLUnits; import org.apache.poi.openxml4j.OpenXML4JTestDataSamples; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackageAccess; @@ -47,10 +52,6 @@ import org.junit.Test; import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTTwoCellAnchor; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.List; - public final class TestContentTypeManager { /** @@ -176,10 +177,10 @@ public final class TestContentTypeManage anchor = (XSSFClientAnchor) helper.createClientAnchor(); CTMarker markerFrom = oldAnchor.getFrom(); CTMarker markerTo = oldAnchor.getTo(); - anchor.setDx1((int) markerFrom.getColOff()); - anchor.setDx2((int) markerTo.getColOff()); - anchor.setDy1((int) markerFrom.getRowOff()); - anchor.setDy2((int) markerTo.getRowOff()); + anchor.setDx1((int) POIXMLUnits.parseLength(markerFrom.xgetColOff())); + anchor.setDx2((int) POIXMLUnits.parseLength(markerTo.xgetColOff())); + anchor.setDy1((int) POIXMLUnits.parseLength(markerFrom.xgetRowOff())); + anchor.setDy2((int) POIXMLUnits.parseLength(markerTo.xgetRowOff())); anchor.setCol1(markerFrom.getCol()); anchor.setCol2(markerTo.getCol()); anchor.setRow1(markerFrom.getRow()); Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestXDDFColor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestXDDFColor.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestXDDFColor.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestXDDFColor.java Sat Dec 12 23:15:20 2020 @@ -124,5 +124,8 @@ public class TestXDDFColor { built = (XDDFColorRgbPercent) XDDFColor.from(654321, 654321, 654321); assertEquals(expected, built.getXmlObject().toString()); assertEquals("FFFFFF", built.toRGBHex()); + + built = (XDDFColorRgbPercent) XDDFColor.from(75000, 50000, 25000); + assertEquals("BF7F3F", built.toRGBHex()); } } Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java Sat Dec 12 23:15:20 2020 @@ -17,6 +17,8 @@ package org.apache.poi.xssf.usermodel; +import static org.junit.Assert.*; + import java.io.IOException; import org.apache.poi.common.usermodel.fonts.FontCharset; @@ -33,9 +35,11 @@ import org.apache.poi.util.LocaleUtil; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; import org.junit.Test; +import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STVerticalAlignRun; 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.CTFontFamily; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontName; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontScheme; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontSize; @@ -44,9 +48,6 @@ import org.openxmlformats.schemas.spread 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; - -import static org.junit.Assert.*; public final class TestXSSFFont extends BaseTestFont{ @@ -330,7 +331,7 @@ public final class TestXSSFFont extends @Test public void testFamily() { CTFont ctFont=CTFont.Factory.newInstance(); - CTIntProperty family=ctFont.addNewFamily(); + CTFontFamily family=ctFont.addNewFamily(); family.setVal(FontFamily.MODERN.getValue()); ctFont.setFamilyArray(0,family); Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java Sat Dec 12 23:15:20 2020 @@ -34,10 +34,10 @@ import org.apache.poi.ss.usermodel.Sheet import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.StylesTable; import org.junit.Test; +import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STXstring; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRPrElt; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STXstring; /** * Tests functionality of the XSSFRichTextRun object Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java Sat Dec 12 23:15:20 2020 @@ -35,7 +35,6 @@ import java.util.regex.Pattern; import com.microsoft.schemas.office.excel.CTClientData; import com.microsoft.schemas.office.excel.STObjectType; -import com.microsoft.schemas.office.excel.STTrueFalseBlank; import com.microsoft.schemas.office.office.CTShapeLayout; import com.microsoft.schemas.office.office.STConnectType; import com.microsoft.schemas.office.office.STInsetMode; @@ -43,12 +42,13 @@ import com.microsoft.schemas.vml.CTShado import com.microsoft.schemas.vml.CTShape; import com.microsoft.schemas.vml.CTShapetype; import com.microsoft.schemas.vml.STExt; -import com.microsoft.schemas.vml.STTrueFalse; import org.apache.poi.POIDataSamples; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.XmlOptions; import org.junit.Test; +import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STTrueFalse; +import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STTrueFalseBlank; public class TestXSSFVMLDrawing { Copied: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSF3DChartData.java (from r1884337, poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFLineChartData.java) URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSF3DChartData.java?p2=poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSF3DChartData.java&p1=poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFLineChartData.java&r1=1884337&r2=1884368&rev=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFLineChartData.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSF3DChartData.java Sat Dec 12 23:15:20 2020 @@ -18,18 +18,23 @@ package org.apache.poi.xssf.usermodel.ch import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.SheetBuilder; import org.apache.poi.xddf.usermodel.chart.AxisPosition; import org.apache.poi.xddf.usermodel.chart.ChartTypes; +import org.apache.poi.xddf.usermodel.chart.XDDFArea3DChartData; +import org.apache.poi.xddf.usermodel.chart.XDDFBar3DChartData; import org.apache.poi.xddf.usermodel.chart.XDDFCategoryAxis; import org.apache.poi.xddf.usermodel.chart.XDDFChartData; import org.apache.poi.xddf.usermodel.chart.XDDFDataSource; import org.apache.poi.xddf.usermodel.chart.XDDFDataSourcesFactory; +import org.apache.poi.xddf.usermodel.chart.XDDFLine3DChartData; import org.apache.poi.xddf.usermodel.chart.XDDFNumericalDataSource; import org.apache.poi.xddf.usermodel.chart.XDDFValueAxis; import org.apache.poi.xssf.usermodel.XSSFChart; @@ -40,9 +45,9 @@ import org.apache.poi.xssf.usermodel.XSS import org.junit.Test; /** - * Tests for XSSF Line Charts + * Tests for XSSF Area3d Charts */ -public class TestXSSFLineChartData { +public class TestXSSF3DChartData { private static final Object[][] plotData = { {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"}, @@ -50,27 +55,58 @@ public class TestXSSFLineChartData { }; @Test - public void testOneSeriePlot() throws IOException { - XSSFWorkbook wb = new XSSFWorkbook(); - XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, plotData).build(); - XSSFDrawing drawing = sheet.createDrawingPatriarch(); - XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 1, 1, 10, 30); - XSSFChart chart = drawing.createChart(anchor); - - XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM); - XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT); - - XDDFDataSource<String> xs = XDDFDataSourcesFactory.fromStringCellRange(sheet, CellRangeAddress.valueOf("A1:J1")); - XDDFNumericalDataSource<Double> ys = XDDFDataSourcesFactory.fromNumericCellRange(sheet, CellRangeAddress.valueOf("A2:J2")); - - XDDFChartData lineChartData = chart.createData(ChartTypes.LINE, bottomAxis, leftAxis); - XDDFChartData.Series series = lineChartData.addSeries(xs, ys); - - assertNotNull(series); - assertEquals(1, lineChartData.getSeries().size()); - assertTrue(lineChartData.getSeries().contains(series)); + public void testArea3D() throws IOException { + // This test currently doesn't produce a valid area 3d chart and is only used to test accessors + try (XSSFWorkbook wb = new XSSFWorkbook()) { + XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, plotData).build(); + XSSFDrawing drawing = sheet.createDrawingPatriarch(); + XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 1, 1, 10, 30); + + Map<ChartTypes, Consumer<XDDFChartData>> map = new HashMap<>(); + map.put(ChartTypes.AREA3D, this::handleArea3D); + map.put(ChartTypes.BAR3D, this::handleBar3D); + map.put(ChartTypes.LINE3D, this::handleLine3D); + + for (Map.Entry<ChartTypes, Consumer<XDDFChartData>> me : map.entrySet()) { + + XSSFChart chart = drawing.createChart(anchor); + + XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM); + XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT); + + XDDFDataSource<String> xs = XDDFDataSourcesFactory.fromStringCellRange(sheet, CellRangeAddress.valueOf("A1:J1")); + XDDFNumericalDataSource<Double> ys = XDDFDataSourcesFactory.fromNumericCellRange(sheet, CellRangeAddress.valueOf("A2:J2")); + + XDDFChartData data = chart.createData(me.getKey(), bottomAxis, leftAxis); + XDDFChartData.Series series = data.addSeries(xs, ys); + + assertNotNull(series); + assertEquals(1, data.getSeriesCount()); + assertEquals(series, data.getSeries(0)); + chart.plot(data); + + me.getValue().accept(data); + } + } + } + + private void handleArea3D(XDDFChartData data) { + XDDFArea3DChartData xArea3d = (XDDFArea3DChartData)data; + xArea3d.setGapDepth(10); + assertEquals(10, (int)xArea3d.getGapDepth()); + } + + private void handleBar3D(XDDFChartData data) { + XDDFBar3DChartData xBar3d = (XDDFBar3DChartData) data; + xBar3d.setGapDepth(10); + assertEquals(10, (int)xBar3d.getGapDepth()); + xBar3d.setGapWidth(10); + assertEquals(10, (int)xBar3d.getGapWidth()); + } - chart.plot(lineChartData); - wb.close(); + private void handleLine3D(XDDFChartData data) { + XDDFLine3DChartData xLine3d = (XDDFLine3DChartData) data; + xLine3d.setGapDepth(10); + assertEquals(10, (int)xLine3d.getGapDepth()); } } Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java Sat Dec 12 23:15:20 2020 @@ -32,6 +32,7 @@ import org.junit.Test; import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture; import org.openxmlformats.schemas.drawingml.x2006.picture.PicDocument; import org.openxmlformats.schemas.drawingml.x2006.picture.impl.PicDocumentImpl; +import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STOnOff1; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd; @@ -46,7 +47,6 @@ import org.openxmlformats.schemas.wordpr 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; /** @@ -163,9 +163,9 @@ public final class TestXWPFParagraph { assertEquals(10, p.getSpacingBefore()); p.setSpacingAfter(100); - assertEquals(100, spacing.getAfter().intValue()); + assertEquals("100", spacing.xgetAfter().getStringValue()); p.setSpacingBefore(100); - assertEquals(100, spacing.getBefore().intValue()); + assertEquals("100", spacing.xgetBefore().getStringValue()); p.setSpacingBetween(.25, LineSpacingRule.EXACT); assertEquals(.25, p.getSpacingBetween(), 0.01); @@ -197,7 +197,7 @@ public final class TestXWPFParagraph { assertEquals(LineSpacingRule.AT_LEAST, p.getSpacingLineRule()); p.setSpacingAfter(100); - assertEquals(100, spacing.getAfter().intValue()); + assertEquals("100", spacing.xgetAfter().getStringValue()); } } @@ -234,7 +234,7 @@ public final class TestXWPFParagraph { assertEquals(10, p.getIndentationLeft()); p.setIndentationLeft(100); - assertEquals(100, ind.getLeft().intValue()); + assertEquals("100", ind.xgetLeft().getStringValue()); } } @Test @@ -264,11 +264,11 @@ public final class TestXWPFParagraph { CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); CTOnOff wordWrap = ppr.addNewWordWrap(); - wordWrap.setVal(STOnOff.FALSE); + wordWrap.setVal(STOnOff1.OFF); assertFalse(p.isWordWrap()); p.setWordWrapped(true); - assertEquals(STOnOff.TRUE, ppr.getWordWrap().getVal()); + assertEquals("on", ppr.getWordWrap().getVal()); } } @@ -281,11 +281,11 @@ public final class TestXWPFParagraph { CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); CTOnOff pageBreak = ppr.addNewPageBreakBefore(); - pageBreak.setVal(STOnOff.FALSE); + pageBreak.setVal(STOnOff1.OFF); assertFalse(p.isPageBreak()); p.setPageBreak(true); - assertEquals(STOnOff.TRUE, ppr.getPageBreakBefore().getVal()); + assertEquals("on", ppr.getPageBreakBefore().getVal()); } } @@ -713,7 +713,7 @@ public final class TestXWPFParagraph { assertTrue(p.removeRun(0)); } } - + @Test public void testFieldRuns() throws IOException { try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FldSimple.docx")) { @@ -777,7 +777,7 @@ public final class TestXWPFParagraph { /** * Tests for numbered lists - * + * * See also https://github.com/jimklo/apache-poi-sample/blob/master/src/main/java/com/sri/jklo/StyledDocument.java * for someone else trying a similar thing */ Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java Sat Dec 12 23:15:20 2020 @@ -16,6 +16,19 @@ ==================================================================== */ package org.apache.poi.xwpf.usermodel; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.util.Iterator; +import java.util.List; + import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.util.LocaleUtil; import org.apache.poi.util.Units; @@ -28,16 +41,19 @@ import org.junit.Test; import org.openxmlformats.schemas.drawingml.x2006.main.CTBlip; import org.openxmlformats.schemas.drawingml.x2006.main.CTBlipFillProperties; import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.math.BigInteger; -import java.util.Iterator; -import java.util.List; - -import static org.junit.Assert.*; +import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STOnOff1; +import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STVerticalAlignRun; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBrClear; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STEm; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STThemeColor; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STUnderline; /** * Tests for XWPF Run @@ -88,34 +104,34 @@ public class TestXWPFRun { @Test public void testCTOnOff() { CTRPr rpr = ctRun.addNewRPr(); - CTOnOff bold = rpr.addNewB(); + CTOnOff bold = rpr.addNewB(); XWPFRun run = new XWPFRun(ctRun, irb); // True values: "true", "1", "on" - bold.setVal(STOnOff.TRUE); + bold.setVal(STOnOff1.ON); assertTrue(run.isBold()); - bold.setVal(STOnOff.X_1); + bold.setVal(STOnOff1.ON); assertTrue(run.isBold()); - bold.setVal(STOnOff.ON); + bold.setVal(STOnOff1.ON); assertTrue(run.isBold()); // False values: "false", "0", "off" - bold.setVal(STOnOff.FALSE); + bold.setVal(STOnOff1.OFF); assertFalse(run.isBold()); - bold.setVal(STOnOff.X_0); + bold.setVal(STOnOff1.OFF); assertFalse(run.isBold()); - bold.setVal(STOnOff.OFF); + bold.setVal(STOnOff1.OFF); assertFalse(run.isBold()); } @Test public void testSetGetBold() { CTRPr rpr = ctRun.addNewRPr(); - rpr.addNewB().setVal(STOnOff.TRUE); + rpr.addNewB().setVal(STOnOff1.ON); XWPFRun run = new XWPFRun(ctRun, irb); assertTrue(run.isBold()); @@ -123,31 +139,31 @@ public class TestXWPFRun { run.setBold(false); // Implementation detail: POI natively prefers <w:b w:val="false"/>, // but should correctly read val="0" and val="off" - assertEquals(STOnOff.FALSE, rpr.getB().getVal()); + assertEquals("off", rpr.getB().getVal()); } @Test public void testSetGetItalic() { CTRPr rpr = ctRun.addNewRPr(); - rpr.addNewI().setVal(STOnOff.TRUE); + rpr.addNewI().setVal(STOnOff1.ON); XWPFRun run = new XWPFRun(ctRun, irb); assertTrue(run.isItalic()); run.setItalic(false); - assertEquals(STOnOff.FALSE, rpr.getI().getVal()); + assertEquals("off", rpr.getI().getVal()); } @Test public void testSetGetStrike() { CTRPr rpr = ctRun.addNewRPr(); - rpr.addNewStrike().setVal(STOnOff.TRUE); + rpr.addNewStrike().setVal(STOnOff1.ON); XWPFRun run = new XWPFRun(ctRun, irb); assertTrue(run.isStrikeThrough()); run.setStrikeThrough(false); - assertEquals(STOnOff.FALSE, rpr.getStrike().getVal()); + assertEquals("off", rpr.getStrike().getVal()); } @Test @@ -186,10 +202,10 @@ public class TestXWPFRun { assertEquals(7.0, run.getFontSizeAsDouble(), 0.01); run.setFontSize(24); - assertEquals(48, rpr.getSz().getVal().longValue()); + assertEquals("48", rpr.getSz().getVal().toString()); run.setFontSize(24.5f); - assertEquals(49, rpr.getSz().getVal().longValue()); + assertEquals("49", rpr.getSz().getVal().toString()); assertEquals(25, run.getFontSize()); assertEquals(24.5, run.getFontSizeAsDouble(), 0.01); } @@ -203,7 +219,7 @@ public class TestXWPFRun { assertEquals(4000, run.getTextPosition()); run.setTextPosition(2400); - assertEquals(2400, rpr.getPosition().getVal().longValue()); + assertEquals("2400", rpr.getPosition().getVal().toString()); } @Test @@ -408,7 +424,7 @@ public class TestXWPFRun { assertFalse(run.isItalic()); assertFalse(run.isStrikeThrough()); assertNull(run.getCTR().getRPr()); - + doc.close(); } @@ -481,17 +497,17 @@ public class TestXWPFRun { assertEquals(1, doc.getAllPictures().size()); assertEquals(1, r.getEmbeddedPictures().size()); - + XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc); XWPFParagraph pBack = docBack.getParagraphArray(2); XWPFRun rBack = pBack.getRuns().get(0); - + assertEquals(1, docBack.getAllPictures().size()); assertEquals(1, rBack.getEmbeddedPictures().size()); docBack.close(); doc.close(); } - + /** * Bugzilla #58237 - Unable to add image to word document header */ @@ -501,7 +517,7 @@ public class TestXWPFRun { XWPFHeader hdr = doc.createHeader(HeaderFooterType.DEFAULT); XWPFParagraph p = hdr.createParagraph(); XWPFRun r = p.createRun(); - + assertEquals(0, hdr.getAllPictures().size()); assertEquals(0, r.getEmbeddedPictures().size()); @@ -509,23 +525,23 @@ public class TestXWPFRun { assertEquals(1, hdr.getAllPictures().size()); assertEquals(1, r.getEmbeddedPictures().size()); - + XWPFPicture pic = r.getEmbeddedPictures().get(0); CTPicture ctPic = pic.getCTPicture(); CTBlipFillProperties ctBlipFill = ctPic.getBlipFill(); assertNotNull(ctBlipFill); - + CTBlip ctBlip = ctBlipFill.getBlip(); - + assertNotNull(ctBlip); assertEquals("rId1", ctBlip.getEmbed()); - + XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc); XWPFHeader hdrBack = docBack.getHeaderArray(0); XWPFParagraph pBack = hdrBack.getParagraphArray(0); XWPFRun rBack = pBack.getRuns().get(0); - + assertEquals(1, hdrBack.getAllPictures().size()); assertEquals(1, rBack.getEmbeddedPictures().size()); docBack.close(); @@ -633,7 +649,7 @@ public class TestXWPFRun { run.setTextPosition(-1); assertEquals(-1, run.getTextPosition()); - + document.close(); } @@ -658,7 +674,7 @@ public class TestXWPFRun { run.setImprinted(true); run.setItalic(true); } - + @Test public void testSetGetTextScale() throws IOException { XWPFDocument document = new XWPFDocument(); @@ -668,7 +684,7 @@ public class TestXWPFRun { assertEquals(200, run.getTextScale()); document.close(); } - + @Test public void testSetGetTextHighlightColor() throws IOException { XWPFDocument document = new XWPFDocument(); @@ -680,7 +696,7 @@ public class TestXWPFRun { assertTrue(run.isHighlighted()); run.setTextHighlightColor("none"); assertFalse(run.isHighlighted()); - + document.close(); } @@ -695,7 +711,7 @@ public class TestXWPFRun { assertFalse(run.isVanish()); document.close(); } - + @Test public void testSetGetVerticalAlignment() throws IOException { XWPFDocument document = new XWPFDocument(); @@ -732,7 +748,7 @@ public class TestXWPFRun { assertEquals(STEm.DOT, run.getEmphasisMark()); document.close(); } - + @Test public void testSetGetUnderlineColor() throws IOException { XWPFDocument document = new XWPFDocument(); @@ -747,7 +763,7 @@ public class TestXWPFRun { assertEquals("auto", run.getUnderlineColor()); document.close(); } - + @Test public void testSetGetUnderlineThemeColor() throws IOException { XWPFDocument document = new XWPFDocument(); @@ -762,13 +778,13 @@ public class TestXWPFRun { assertEquals(STThemeColor.NONE, run.getUnderlineThemeColor()); document.close(); } - + @Test public void testSetStyleId() throws IOException { XWPFDocument document = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx"); final XWPFRun run = document.createParagraph().createRun(); - + String styleId = "bolditalic"; run.setStyle(styleId); String candStyleId = run.getCTR().getRPr().getRStyle().getVal(); Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java?rev=1884368&r1=1884367&r2=1884368&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java Sat Dec 12 23:15:20 2020 @@ -19,7 +19,6 @@ package org.apache.poi.xwpf.usermodel; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static org.junit.Assert.fail; import java.io.IOException; import java.math.BigInteger; @@ -35,6 +34,7 @@ import org.openxmlformats.schemas.wordpr import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblCellMar; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGrid; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGridCol; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder; @@ -46,218 +46,190 @@ import org.openxmlformats.schemas.wordpr public class TestXWPFTable { @Test - public void testConstructor() { - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable xtab = new XWPFTable(ctTable, doc); - assertNotNull(xtab); - assertEquals(1, ctTable.sizeOfTrArray()); - assertEquals(1, ctTable.getTrArray(0).sizeOfTcArray()); - assertNotNull(ctTable.getTrArray(0).getTcArray(0).getPArray(0)); - - ctTable = CTTbl.Factory.newInstance(); - xtab = new XWPFTable(ctTable, doc, 3, 2); - assertNotNull(xtab); - assertEquals(3, ctTable.sizeOfTrArray()); - assertEquals(2, ctTable.getTrArray(0).sizeOfTcArray()); - assertNotNull(ctTable.getTrArray(0).getTcArray(0).getPArray(0)); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); - } - } - - @Test - public void testTblGrid() { - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - CTTblGrid cttblgrid = ctTable.addNewTblGrid(); - cttblgrid.addNewGridCol().setW(BigInteger.valueOf(123)); - cttblgrid.addNewGridCol().setW(BigInteger.valueOf(321)); - - XWPFTable xtab = new XWPFTable(ctTable, doc); - assertEquals(123, xtab.getCTTbl().getTblGrid().getGridColArray(0).getW().intValue()); - assertEquals(321, xtab.getCTTbl().getTblGrid().getGridColArray(1).getW().intValue()); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); - } - } - - @Test - public void testGetText() { - XWPFDocument doc = new XWPFDocument(); - CTTbl table = CTTbl.Factory.newInstance(); - CTRow row = table.addNewTr(); - CTTc cell = row.addNewTc(); - CTP paragraph = cell.addNewP(); - CTR run = paragraph.addNewR(); - CTText text = run.addNewT(); - text.setStringValue("finally I can write!"); - - XWPFTable xtab = new XWPFTable(table, doc); - assertEquals("finally I can write!\n", xtab.getText()); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); - } - } - - @Test - public void testCreateRow() { - XWPFDocument doc = new XWPFDocument(); - - CTTbl table = CTTbl.Factory.newInstance(); - CTRow r1 = table.addNewTr(); - r1.addNewTc().addNewP(); - r1.addNewTc().addNewP(); - CTRow r2 = table.addNewTr(); - r2.addNewTc().addNewP(); - r2.addNewTc().addNewP(); - CTRow r3 = table.addNewTr(); - r3.addNewTc().addNewP(); - r3.addNewTc().addNewP(); - - XWPFTable xtab = new XWPFTable(table, doc); - assertEquals(3, xtab.getNumberOfRows()); - assertNotNull(xtab.getRow(2)); - - //add a new row - xtab.createRow(); - assertEquals(4, xtab.getNumberOfRows()); - - //check number of cols - assertEquals(2, table.getTrArray(0).sizeOfTcArray()); - - //check creation of first row - xtab = new XWPFTable(CTTbl.Factory.newInstance(), doc); - assertEquals(1, xtab.getCTTbl().getTrArray(0).sizeOfTcArray()); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); - } - } - - @Test - public void testSetGetWidth() { - XWPFDocument doc = new XWPFDocument(); - - XWPFTable xtab = doc.createTable(); - - assertEquals(0, xtab.getWidth()); - assertEquals(TableWidthType.AUTO, xtab.getWidthType()); - - xtab.setWidth(1000); - assertEquals(TableWidthType.DXA, xtab.getWidthType()); - assertEquals(1000, xtab.getWidth()); - - xtab.setWidth("auto"); - assertEquals(TableWidthType.AUTO, xtab.getWidthType()); - assertEquals(0, xtab.getWidth()); - assertEquals(0.0, xtab.getWidthDecimal(), 0.01); - - xtab.setWidth("999"); - assertEquals(TableWidthType.DXA, xtab.getWidthType()); - assertEquals(999, xtab.getWidth()); - - xtab.setWidth("50.5%"); - assertEquals(TableWidthType.PCT, xtab.getWidthType()); - assertEquals(50.5, xtab.getWidthDecimal(), 0.01); - - // Test effect of setting width type to a new value - - // From PCT to NIL: - xtab.setWidthType(TableWidthType.NIL); - assertEquals(TableWidthType.NIL, xtab.getWidthType()); - assertEquals(0, xtab.getWidth()); - - xtab.setWidth("999"); // Sets type to DXA - assertEquals(TableWidthType.DXA, xtab.getWidthType()); - - // From DXA to AUTO: - xtab.setWidthType(TableWidthType.AUTO); - assertEquals(TableWidthType.AUTO, xtab.getWidthType()); - assertEquals(0, xtab.getWidth()); - - xtab.setWidthType(TableWidthType.PCT); - assertEquals(TableWidthType.PCT, xtab.getWidthType()); - - // From PCT to DXA: - xtab.setWidth("33.3%"); - xtab.setWidthType(TableWidthType.DXA); - assertEquals(TableWidthType.DXA, xtab.getWidthType()); - assertEquals(0, xtab.getWidth()); - - // From DXA to DXA: (value should be unchanged) - xtab.setWidth("999"); - xtab.setWidthType(TableWidthType.DXA); - assertEquals(TableWidthType.DXA, xtab.getWidthType()); - assertEquals(999, xtab.getWidth()); - - // From DXA to PCT: - xtab.setWidthType(TableWidthType.PCT); - assertEquals(TableWidthType.PCT, xtab.getWidthType()); - assertEquals(100.0, xtab.getWidthDecimal(), 0.0); - - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); - } - } - - @Test - public void testSetGetHeight() { - XWPFDocument doc = new XWPFDocument(); - - CTTbl table = CTTbl.Factory.newInstance(); - - XWPFTable xtab = new XWPFTable(table, doc); - XWPFTableRow row = xtab.createRow(); - row.setHeight(20); - assertEquals(20, row.getHeight()); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); + public void testConstructor() throws IOException { + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable xtab = new XWPFTable(ctTable, doc); + assertNotNull(xtab); + assertEquals(1, ctTable.sizeOfTrArray()); + assertEquals(1, ctTable.getTrArray(0).sizeOfTcArray()); + assertNotNull(ctTable.getTrArray(0).getTcArray(0).getPArray(0)); + + ctTable = CTTbl.Factory.newInstance(); + xtab = new XWPFTable(ctTable, doc, 3, 2); + assertNotNull(xtab); + assertEquals(3, ctTable.sizeOfTrArray()); + assertEquals(2, ctTable.getTrArray(0).sizeOfTcArray()); + assertNotNull(ctTable.getTrArray(0).getTcArray(0).getPArray(0)); + } + } + + @Test + public void testTblGrid() throws IOException { + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + CTTblGrid cttblgrid = ctTable.addNewTblGrid(); + cttblgrid.addNewGridCol().setW(BigInteger.valueOf(123)); + cttblgrid.addNewGridCol().setW(BigInteger.valueOf(321)); + + XWPFTable xtab = new XWPFTable(ctTable, doc); + CTTblGridCol[] ca = xtab.getCTTbl().getTblGrid().getGridColArray(); + assertEquals("123", ca[0].getW().toString()); + assertEquals("321", ca[1].getW().toString()); + } + } + + @Test + public void testGetText() throws IOException { + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl table = CTTbl.Factory.newInstance(); + CTRow row = table.addNewTr(); + CTTc cell = row.addNewTc(); + CTP paragraph = cell.addNewP(); + CTR run = paragraph.addNewR(); + CTText text = run.addNewT(); + text.setStringValue("finally I can write!"); + + XWPFTable xtab = new XWPFTable(table, doc); + assertEquals("finally I can write!\n", xtab.getText()); + } + } + + @Test + public void testCreateRow() throws IOException { + try (XWPFDocument doc = new XWPFDocument()) { + + CTTbl table = CTTbl.Factory.newInstance(); + CTRow r1 = table.addNewTr(); + r1.addNewTc().addNewP(); + r1.addNewTc().addNewP(); + CTRow r2 = table.addNewTr(); + r2.addNewTc().addNewP(); + r2.addNewTc().addNewP(); + CTRow r3 = table.addNewTr(); + r3.addNewTc().addNewP(); + r3.addNewTc().addNewP(); + + XWPFTable xtab = new XWPFTable(table, doc); + assertEquals(3, xtab.getNumberOfRows()); + assertNotNull(xtab.getRow(2)); + + //add a new row + xtab.createRow(); + assertEquals(4, xtab.getNumberOfRows()); + + //check number of cols + assertEquals(2, table.getTrArray(0).sizeOfTcArray()); + + //check creation of first row + xtab = new XWPFTable(CTTbl.Factory.newInstance(), doc); + assertEquals(1, xtab.getCTTbl().getTrArray(0).sizeOfTcArray()); } } @Test - public void testSetGetMargins() { + public void testSetGetWidth() throws IOException { + try (XWPFDocument doc = new XWPFDocument()) { + + XWPFTable xtab = doc.createTable(); + + assertEquals(0, xtab.getWidth()); + assertEquals(TableWidthType.AUTO, xtab.getWidthType()); + + xtab.setWidth(1000); + assertEquals(TableWidthType.DXA, xtab.getWidthType()); + assertEquals(1000, xtab.getWidth()); + + xtab.setWidth("auto"); + assertEquals(TableWidthType.AUTO, xtab.getWidthType()); + assertEquals(0, xtab.getWidth()); + assertEquals(0.0, xtab.getWidthDecimal(), 0.01); + + xtab.setWidth("999"); + assertEquals(TableWidthType.DXA, xtab.getWidthType()); + assertEquals(999, xtab.getWidth()); + + xtab.setWidth("50.5%"); + assertEquals(TableWidthType.PCT, xtab.getWidthType()); + assertEquals(50.5, xtab.getWidthDecimal(), 0.01); + + // Test effect of setting width type to a new value + + // From PCT to NIL: + xtab.setWidthType(TableWidthType.NIL); + assertEquals(TableWidthType.NIL, xtab.getWidthType()); + assertEquals(0, xtab.getWidth()); + + xtab.setWidth("999"); // Sets type to DXA + assertEquals(TableWidthType.DXA, xtab.getWidthType()); + + // From DXA to AUTO: + xtab.setWidthType(TableWidthType.AUTO); + assertEquals(TableWidthType.AUTO, xtab.getWidthType()); + assertEquals(0, xtab.getWidth()); + + xtab.setWidthType(TableWidthType.PCT); + assertEquals(TableWidthType.PCT, xtab.getWidthType()); + + // From PCT to DXA: + xtab.setWidth("33.3%"); + xtab.setWidthType(TableWidthType.DXA); + assertEquals(TableWidthType.DXA, xtab.getWidthType()); + assertEquals(0, xtab.getWidth()); + + // From DXA to DXA: (value should be unchanged) + xtab.setWidth("999"); + xtab.setWidthType(TableWidthType.DXA); + assertEquals(TableWidthType.DXA, xtab.getWidthType()); + assertEquals(999, xtab.getWidth()); + + // From DXA to PCT: + xtab.setWidthType(TableWidthType.PCT); + assertEquals(TableWidthType.PCT, xtab.getWidthType()); + assertEquals(100.0, xtab.getWidthDecimal(), 0.0); + } + } + + @Test + public void testSetGetHeight() throws IOException { + try (XWPFDocument doc = new XWPFDocument()) { + + CTTbl table = CTTbl.Factory.newInstance(); + + XWPFTable xtab = new XWPFTable(table, doc); + XWPFTableRow row = xtab.createRow(); + row.setHeight(20); + assertEquals(20, row.getHeight()); + } + } + + @Test + public void testSetGetMargins() throws IOException { // instantiate the following class so it'll get picked up by // the XmlBean process and added to the jar file. it's required // for the following XWPFTable methods. CTTblCellMar ctm = CTTblCellMar.Factory.newInstance(); assertNotNull(ctm); // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // set margins - table.setCellMargins(50, 50, 250, 450); - // get margin components - int t = table.getCellMarginTop(); - assertEquals(50, t); - int l = table.getCellMarginLeft(); - assertEquals(50, l); - int b = table.getCellMarginBottom(); - assertEquals(250, b); - int r = table.getCellMarginRight(); - assertEquals(450, r); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // set margins + table.setCellMargins(50, 50, 250, 450); + // get margin components + int t = table.getCellMarginTop(); + assertEquals(50, t); + int l = table.getCellMarginLeft(); + assertEquals(50, l); + int b = table.getCellMarginBottom(); + assertEquals(250, b); + int r = table.getCellMarginRight(); + assertEquals(450, r); } } @Test - public void testSetGetHBorders() { + public void testSetGetHBorders() throws IOException { // instantiate the following classes so they'll get picked up by // the XmlBean process and added to the jar file. they are required // for the following XWPFTable methods. @@ -266,388 +238,348 @@ public class TestXWPFTable { STBorder stb = STBorder.Factory.newInstance(); assertNotNull(stb); // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // check initial state - XWPFBorderType bt = table.getInsideHBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - int sz = table.getInsideHBorderSize(); - assertEquals(-1, sz); - int sp = table.getInsideHBorderSpace(); - assertEquals(-1, sp); - String clr = table.getInsideHBorderColor(); - assertNull(clr); - // set inside horizontal border - table.setInsideHBorder(XWPFBorderType.SINGLE, 4, 0, "FF0000"); - // get inside horizontal border components - bt = table.getInsideHBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - sz = table.getInsideHBorderSize(); - assertEquals(4, sz); - sp = table.getInsideHBorderSpace(); - assertEquals(0, sp); - clr = table.getInsideHBorderColor(); - assertEquals("FF0000", clr); - // remove the border and verify state - table.removeInsideHBorder(); - bt = table.getInsideHBorderType(); - assertNull(bt); - sz = table.getInsideHBorderSize(); - assertEquals(-1, sz); - sp = table.getInsideHBorderSpace(); - assertEquals(-1, sp); - clr = table.getInsideHBorderColor(); - assertNull(clr); - // check other borders - bt = table.getInsideVBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - bt = table.getTopBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - bt = table.getBottomBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - bt = table.getLeftBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - bt = table.getRightBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - // remove the rest all at once and test - table.removeBorders(); - bt = table.getInsideVBorderType(); - assertNull(bt); - bt = table.getTopBorderType(); - assertNull(bt); - bt = table.getBottomBorderType(); - assertNull(bt); - bt = table.getLeftBorderType(); - assertNull(bt); - bt = table.getRightBorderType(); - assertNull(bt); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // check initial state + XWPFBorderType bt = table.getInsideHBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + int sz = table.getInsideHBorderSize(); + assertEquals(-1, sz); + int sp = table.getInsideHBorderSpace(); + assertEquals(-1, sp); + String clr = table.getInsideHBorderColor(); + assertNull(clr); + // set inside horizontal border + table.setInsideHBorder(XWPFBorderType.SINGLE, 4, 0, "FF0000"); + // get inside horizontal border components + bt = table.getInsideHBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + sz = table.getInsideHBorderSize(); + assertEquals(4, sz); + sp = table.getInsideHBorderSpace(); + assertEquals(0, sp); + clr = table.getInsideHBorderColor(); + assertEquals("FF0000", clr); + // remove the border and verify state + table.removeInsideHBorder(); + bt = table.getInsideHBorderType(); + assertNull(bt); + sz = table.getInsideHBorderSize(); + assertEquals(-1, sz); + sp = table.getInsideHBorderSpace(); + assertEquals(-1, sp); + clr = table.getInsideHBorderColor(); + assertNull(clr); + // check other borders + bt = table.getInsideVBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + bt = table.getTopBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + bt = table.getBottomBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + bt = table.getLeftBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + bt = table.getRightBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + // remove the rest all at once and test + table.removeBorders(); + bt = table.getInsideVBorderType(); + assertNull(bt); + bt = table.getTopBorderType(); + assertNull(bt); + bt = table.getBottomBorderType(); + assertNull(bt); + bt = table.getLeftBorderType(); + assertNull(bt); + bt = table.getRightBorderType(); + assertNull(bt); } } @Test - public void testSetGetVBorders() { + public void testSetGetVBorders() throws IOException { // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // check initial state - XWPFBorderType bt = table.getInsideVBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - int sz = table.getInsideVBorderSize(); - assertEquals(-1, sz); - int sp = table.getInsideVBorderSpace(); - assertEquals(-1, sp); - String clr = table.getInsideVBorderColor(); - assertNull(clr); - // set inside vertical border - table.setInsideVBorder(XWPFBorderType.DOUBLE, 4, 0, "00FF00"); - // get inside vertical border components - bt = table.getInsideVBorderType(); - assertEquals(XWPFBorderType.DOUBLE, bt); - sz = table.getInsideVBorderSize(); - assertEquals(4, sz); - sp = table.getInsideVBorderSpace(); - assertEquals(0, sp); - clr = table.getInsideVBorderColor(); - assertEquals("00FF00", clr); - // remove the border and verify state - table.removeInsideVBorder(); - bt = table.getInsideVBorderType(); - assertNull(bt); - sz = table.getInsideVBorderSize(); - assertEquals(-1, sz); - sp = table.getInsideVBorderSpace(); - assertEquals(-1, sp); - clr = table.getInsideVBorderColor(); - assertNull(clr); - // check the rest - bt = table.getInsideHBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - bt = table.getTopBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - bt = table.getBottomBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - bt = table.getLeftBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - bt = table.getRightBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - // remove the rest one at a time and test - table.removeInsideHBorder(); - table.removeTopBorder(); - table.removeBottomBorder(); - table.removeLeftBorder(); - table.removeRightBorder(); - bt = table.getInsideHBorderType(); - assertNull(bt); - bt = table.getTopBorderType(); - assertNull(bt); - bt = table.getBottomBorderType(); - assertNull(bt); - bt = table.getLeftBorderType(); - assertNull(bt); - bt = table.getRightBorderType(); - assertNull(bt); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // check initial state + XWPFBorderType bt = table.getInsideVBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + int sz = table.getInsideVBorderSize(); + assertEquals(-1, sz); + int sp = table.getInsideVBorderSpace(); + assertEquals(-1, sp); + String clr = table.getInsideVBorderColor(); + assertNull(clr); + // set inside vertical border + table.setInsideVBorder(XWPFBorderType.DOUBLE, 4, 0, "00FF00"); + // get inside vertical border components + bt = table.getInsideVBorderType(); + assertEquals(XWPFBorderType.DOUBLE, bt); + sz = table.getInsideVBorderSize(); + assertEquals(4, sz); + sp = table.getInsideVBorderSpace(); + assertEquals(0, sp); + clr = table.getInsideVBorderColor(); + assertEquals("00FF00", clr); + // remove the border and verify state + table.removeInsideVBorder(); + bt = table.getInsideVBorderType(); + assertNull(bt); + sz = table.getInsideVBorderSize(); + assertEquals(-1, sz); + sp = table.getInsideVBorderSpace(); + assertEquals(-1, sp); + clr = table.getInsideVBorderColor(); + assertNull(clr); + // check the rest + bt = table.getInsideHBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + bt = table.getTopBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + bt = table.getBottomBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + bt = table.getLeftBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + bt = table.getRightBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + // remove the rest one at a time and test + table.removeInsideHBorder(); + table.removeTopBorder(); + table.removeBottomBorder(); + table.removeLeftBorder(); + table.removeRightBorder(); + bt = table.getInsideHBorderType(); + assertNull(bt); + bt = table.getTopBorderType(); + assertNull(bt); + bt = table.getBottomBorderType(); + assertNull(bt); + bt = table.getLeftBorderType(); + assertNull(bt); + bt = table.getRightBorderType(); + assertNull(bt); } } @Test - public void testSetGetTopBorders() { + public void testSetGetTopBorders() throws IOException { // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // check initial state - XWPFBorderType bt = table.getTopBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - int sz = table.getTopBorderSize(); - assertEquals(-1, sz); - int sp = table.getTopBorderSpace(); - assertEquals(-1, sp); - String clr = table.getTopBorderColor(); - assertNull(clr); - // set top border - table.setTopBorder(XWPFBorderType.THICK, 4, 0, "00FF00"); - // get inside vertical border components - bt = table.getTopBorderType(); - assertEquals(XWPFBorderType.THICK, bt); - sz = table.getTopBorderSize(); - assertEquals(4, sz); - sp = table.getTopBorderSpace(); - assertEquals(0, sp); - clr = table.getTopBorderColor(); - assertEquals("00FF00", clr); - // remove the border and verify state - table.removeTopBorder(); - bt = table.getTopBorderType(); - assertNull(bt); - sz = table.getTopBorderSize(); - assertEquals(-1, sz); - sp = table.getTopBorderSpace(); - assertEquals(-1, sp); - clr = table.getTopBorderColor(); - assertNull(clr); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // check initial state + XWPFBorderType bt = table.getTopBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + int sz = table.getTopBorderSize(); + assertEquals(-1, sz); + int sp = table.getTopBorderSpace(); + assertEquals(-1, sp); + String clr = table.getTopBorderColor(); + assertNull(clr); + // set top border + table.setTopBorder(XWPFBorderType.THICK, 4, 0, "00FF00"); + // get inside vertical border components + bt = table.getTopBorderType(); + assertEquals(XWPFBorderType.THICK, bt); + sz = table.getTopBorderSize(); + assertEquals(4, sz); + sp = table.getTopBorderSpace(); + assertEquals(0, sp); + clr = table.getTopBorderColor(); + assertEquals("00FF00", clr); + // remove the border and verify state + table.removeTopBorder(); + bt = table.getTopBorderType(); + assertNull(bt); + sz = table.getTopBorderSize(); + assertEquals(-1, sz); + sp = table.getTopBorderSpace(); + assertEquals(-1, sp); + clr = table.getTopBorderColor(); + assertNull(clr); } } @Test - public void testSetGetBottomBorders() { + public void testSetGetBottomBorders() throws IOException { // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // check initial state - XWPFBorderType bt = table.getBottomBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - int sz = table.getBottomBorderSize(); - assertEquals(-1, sz); - int sp = table.getBottomBorderSpace(); - assertEquals(-1, sp); - String clr = table.getBottomBorderColor(); - assertNull(clr); - // set inside vertical border - table.setBottomBorder(XWPFBorderType.DOTTED, 4, 0, "00FF00"); - // get inside vertical border components - bt = table.getBottomBorderType(); - assertEquals(XWPFBorderType.DOTTED, bt); - sz = table.getBottomBorderSize(); - assertEquals(4, sz); - sp = table.getBottomBorderSpace(); - assertEquals(0, sp); - clr = table.getBottomBorderColor(); - assertEquals("00FF00", clr); - // remove the border and verify state - table.removeBottomBorder(); - bt = table.getBottomBorderType(); - assertNull(bt); - sz = table.getBottomBorderSize(); - assertEquals(-1, sz); - sp = table.getBottomBorderSpace(); - assertEquals(-1, sp); - clr = table.getBottomBorderColor(); - assertNull(clr); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // check initial state + XWPFBorderType bt = table.getBottomBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + int sz = table.getBottomBorderSize(); + assertEquals(-1, sz); + int sp = table.getBottomBorderSpace(); + assertEquals(-1, sp); + String clr = table.getBottomBorderColor(); + assertNull(clr); + // set inside vertical border + table.setBottomBorder(XWPFBorderType.DOTTED, 4, 0, "00FF00"); + // get inside vertical border components + bt = table.getBottomBorderType(); + assertEquals(XWPFBorderType.DOTTED, bt); + sz = table.getBottomBorderSize(); + assertEquals(4, sz); + sp = table.getBottomBorderSpace(); + assertEquals(0, sp); + clr = table.getBottomBorderColor(); + assertEquals("00FF00", clr); + // remove the border and verify state + table.removeBottomBorder(); + bt = table.getBottomBorderType(); + assertNull(bt); + sz = table.getBottomBorderSize(); + assertEquals(-1, sz); + sp = table.getBottomBorderSpace(); + assertEquals(-1, sp); + clr = table.getBottomBorderColor(); + assertNull(clr); } } @Test - public void testSetGetLeftBorders() { + public void testSetGetLeftBorders() throws IOException { // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // check initial state - XWPFBorderType bt = table.getLeftBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - int sz = table.getLeftBorderSize(); - assertEquals(-1, sz); - int sp = table.getLeftBorderSpace(); - assertEquals(-1, sp); - String clr = table.getLeftBorderColor(); - assertNull(clr); - // set inside vertical border - table.setLeftBorder(XWPFBorderType.DASHED, 4, 0, "00FF00"); - // get inside vertical border components - bt = table.getLeftBorderType(); - assertEquals(XWPFBorderType.DASHED, bt); - sz = table.getLeftBorderSize(); - assertEquals(4, sz); - sp = table.getLeftBorderSpace(); - assertEquals(0, sp); - clr = table.getLeftBorderColor(); - assertEquals("00FF00", clr); - // remove the border and verify state - table.removeLeftBorder(); - bt = table.getLeftBorderType(); - assertNull(bt); - sz = table.getLeftBorderSize(); - assertEquals(-1, sz); - sp = table.getLeftBorderSpace(); - assertEquals(-1, sp); - clr = table.getLeftBorderColor(); - assertNull(clr); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // check initial state + XWPFBorderType bt = table.getLeftBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + int sz = table.getLeftBorderSize(); + assertEquals(-1, sz); + int sp = table.getLeftBorderSpace(); + assertEquals(-1, sp); + String clr = table.getLeftBorderColor(); + assertNull(clr); + // set inside vertical border + table.setLeftBorder(XWPFBorderType.DASHED, 4, 0, "00FF00"); + // get inside vertical border components + bt = table.getLeftBorderType(); + assertEquals(XWPFBorderType.DASHED, bt); + sz = table.getLeftBorderSize(); + assertEquals(4, sz); + sp = table.getLeftBorderSpace(); + assertEquals(0, sp); + clr = table.getLeftBorderColor(); + assertEquals("00FF00", clr); + // remove the border and verify state + table.removeLeftBorder(); + bt = table.getLeftBorderType(); + assertNull(bt); + sz = table.getLeftBorderSize(); + assertEquals(-1, sz); + sp = table.getLeftBorderSpace(); + assertEquals(-1, sp); + clr = table.getLeftBorderColor(); + assertNull(clr); } } @Test - public void testSetGetRightBorders() { + public void testSetGetRightBorders() throws IOException { // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // check initial state - XWPFBorderType bt = table.getRightBorderType(); - assertEquals(XWPFBorderType.SINGLE, bt); - int sz = table.getRightBorderSize(); - assertEquals(-1, sz); - int sp = table.getRightBorderSpace(); - assertEquals(-1, sp); - String clr = table.getRightBorderColor(); - assertNull(clr); - // set inside vertical border - table.setRightBorder(XWPFBorderType.DOT_DASH, 4, 0, "00FF00"); - // get inside vertical border components - bt = table.getRightBorderType(); - assertEquals(XWPFBorderType.DOT_DASH, bt); - sz = table.getRightBorderSize(); - assertEquals(4, sz); - sp = table.getRightBorderSpace(); - assertEquals(0, sp); - clr = table.getRightBorderColor(); - assertEquals("00FF00", clr); - // remove the border and verify state - table.removeRightBorder(); - bt = table.getRightBorderType(); - assertNull(bt); - sz = table.getRightBorderSize(); - assertEquals(-1, sz); - sp = table.getRightBorderSpace(); - assertEquals(-1, sp); - clr = table.getRightBorderColor(); - assertNull(clr); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); - } - } - - @Test - public void testSetGetRowBandSize() { - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - table.setRowBandSize(12); - int sz = table.getRowBandSize(); - assertEquals(12, sz); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); - } - } - - @Test - public void testSetGetColBandSize() { - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - table.setColBandSize(16); - int sz = table.getColBandSize(); - assertEquals(16, sz); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // check initial state + XWPFBorderType bt = table.getRightBorderType(); + assertEquals(XWPFBorderType.SINGLE, bt); + int sz = table.getRightBorderSize(); + assertEquals(-1, sz); + int sp = table.getRightBorderSpace(); + assertEquals(-1, sp); + String clr = table.getRightBorderColor(); + assertNull(clr); + // set inside vertical border + table.setRightBorder(XWPFBorderType.DOT_DASH, 4, 0, "00FF00"); + // get inside vertical border components + bt = table.getRightBorderType(); + assertEquals(XWPFBorderType.DOT_DASH, bt); + sz = table.getRightBorderSize(); + assertEquals(4, sz); + sp = table.getRightBorderSpace(); + assertEquals(0, sp); + clr = table.getRightBorderColor(); + assertEquals("00FF00", clr); + // remove the border and verify state + table.removeRightBorder(); + bt = table.getRightBorderType(); + assertNull(bt); + sz = table.getRightBorderSize(); + assertEquals(-1, sz); + sp = table.getRightBorderSpace(); + assertEquals(-1, sp); + clr = table.getRightBorderColor(); + assertNull(clr); + } + } + + @Test + public void testSetGetRowBandSize() throws IOException { + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + table.setRowBandSize(12); + int sz = table.getRowBandSize(); + assertEquals(12, sz); + } + } + + @Test + public void testSetGetColBandSize() throws IOException { + try (XWPFDocument doc = new XWPFDocument()) { + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + table.setColBandSize(16); + int sz = table.getColBandSize(); + assertEquals(16, sz); } } @Test public void testCreateTable() throws Exception { // open an empty document - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); + try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx")) { - // create a table with 5 rows and 7 columns - int noRows = 5; - int noCols = 7; - XWPFTable table = doc.createTable(noRows, noCols); - - // assert the table is empty - List<XWPFTableRow> rows = table.getRows(); - assertEquals("Table has less rows than requested.", noRows, rows.size()); - for (XWPFTableRow xwpfRow : rows) { - assertNotNull(xwpfRow); - for (int i = 0; i < 7; i++) { - XWPFTableCell xwpfCell = xwpfRow.getCell(i); - assertNotNull(xwpfCell); - assertEquals("Empty cells should not have one paragraph.", 1, xwpfCell.getParagraphs().size()); - xwpfCell = xwpfRow.getCell(i); - assertEquals("Calling 'getCell' must not modify cells content.", 1, xwpfCell.getParagraphs().size()); + // create a table with 5 rows and 7 columns + int noRows = 5; + int noCols = 7; + XWPFTable table = doc.createTable(noRows, noCols); + + // assert the table is empty + List<XWPFTableRow> rows = table.getRows(); + assertEquals("Table has less rows than requested.", noRows, rows.size()); + for (XWPFTableRow xwpfRow : rows) { + assertNotNull(xwpfRow); + for (int i = 0; i < 7; i++) { + XWPFTableCell xwpfCell = xwpfRow.getCell(i); + assertNotNull(xwpfCell); + assertEquals("Empty cells should not have one paragraph.", 1, xwpfCell.getParagraphs().size()); + xwpfCell = xwpfRow.getCell(i); + assertEquals("Calling 'getCell' must not modify cells content.", 1, xwpfCell.getParagraphs().size()); + } } + doc.getPackage().revert(); } - doc.getPackage().revert(); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); - } - } - - @Test - public void testSetGetTableAlignment() { - XWPFDocument doc = new XWPFDocument(); - XWPFTable tbl = doc.createTable(1, 1); - tbl.setTableAlignment(TableRowAlign.LEFT); - assertEquals(TableRowAlign.LEFT, tbl.getTableAlignment()); - tbl.setTableAlignment(TableRowAlign.CENTER); - assertEquals(TableRowAlign.CENTER, tbl.getTableAlignment()); - tbl.setTableAlignment(TableRowAlign.RIGHT); - assertEquals(TableRowAlign.RIGHT, tbl.getTableAlignment()); - tbl.removeTableAlignment(); - assertNull(tbl.getTableAlignment()); - try { - doc.close(); - } catch (IOException e) { - fail("Unable to close doc"); + } + + @Test + public void testSetGetTableAlignment() throws IOException { + try (XWPFDocument doc = new XWPFDocument()) { + XWPFTable tbl = doc.createTable(1, 1); + tbl.setTableAlignment(TableRowAlign.LEFT); + assertEquals(TableRowAlign.LEFT, tbl.getTableAlignment()); + tbl.setTableAlignment(TableRowAlign.CENTER); + assertEquals(TableRowAlign.CENTER, tbl.getTableAlignment()); + tbl.setTableAlignment(TableRowAlign.RIGHT); + assertEquals(TableRowAlign.RIGHT, tbl.getTableAlignment()); + tbl.removeTableAlignment(); + assertNull(tbl.getTableAlignment()); } } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
