From 598b490047946ee06c9f41380363dfa376c28d2e Mon Sep 17 00:00:00 2001 From: Selim Soufargi Date: Sat, 11 Jul 2026 13:44:52 +0200 Subject: [PATCH 1/3] assert valid excel file with expected columns count --- .../fesod/sheet/examples/ExampleTestBase.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java b/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java index 479ebe7e2..02ea383e1 100644 --- a/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java +++ b/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java @@ -87,6 +87,41 @@ protected static void assertValidExcelFile(File file, int minDataRows) { } } + /** + * Assert that the given file is a valid Excel workbook with at least the specified number of + * columns, scanning for the first non-empty row to determine the column count. + * + * @param file the Excel file to validate + * @param minColumns the minimum number of columns expected + */ + protected static void assertValidExcelFileColumns(File file, int minColumns) { + int totalColumns = 0; + assertValidExcelFile(file); + + try (FileInputStream fis = new FileInputStream(file); + Workbook workbook = WorkbookFactory.create(fis)) { + + Sheet sheet = workbook.getSheetAt(0); + + // find which row is not empty + for (int i = 0; i <= sheet.getLastRowNum(); i++) { + Row row = sheet.getRow(i); + + if (row != null && row.getPhysicalNumberOfCells() > 0) { + totalColumns = row.getLastCellNum(); + break; + } + } + + assertTrue( + totalColumns >= minColumns, + "Expected at least " + minColumns + " columns, but found " + totalColumns + + " total columns in the first data row of: " + file.getAbsolutePath()); + } catch (IOException e) { + fail("Failed to read workbook for column count verification: " + e.getMessage()); + } + } + /** * Generate a temp output file path within the given directory. * From ed834e3349e8b74fe261fae6f35a737eb6c2f2e6 Mon Sep 17 00:00:00 2001 From: Selim Soufargi Date: Tue, 14 Jul 2026 11:51:24 +0200 Subject: [PATCH 2/3] assert valid excel file with expected columns count: full imports --- .../java/org/apache/fesod/sheet/examples/ExampleTestBase.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java b/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java index 02ea383e1..fb46a1259 100644 --- a/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java +++ b/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java @@ -28,6 +28,8 @@ import java.nio.file.Path; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Row; /** * Base class for Fesod example integration tests. From 56a3572a31c6a8eeb689abd249e3db6e5eb92d21 Mon Sep 17 00:00:00 2001 From: Selim Soufargi Date: Tue, 14 Jul 2026 19:33:50 +0200 Subject: [PATCH 3/3] spotless:apply --- .../java/org/apache/fesod/sheet/examples/ExampleTestBase.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java b/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java index fb46a1259..f07512507 100644 --- a/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java +++ b/fesod-examples/fesod-sheet-examples/src/test/java/org/apache/fesod/sheet/examples/ExampleTestBase.java @@ -26,10 +26,10 @@ import java.io.FileInputStream; import java.io.IOException; import java.nio.file.Path; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Row; /** * Base class for Fesod example integration tests.