|
23 | 23 | import java.io.InputStream; |
24 | 24 | import java.io.OutputStream; |
25 | 25 | import java.lang.reflect.Method; |
| 26 | +import java.nio.charset.StandardCharsets; |
26 | 27 | import java.nio.file.Path; |
27 | 28 | import java.util.ArrayList; |
28 | 29 | import java.util.Arrays; |
29 | 30 | import java.util.List; |
30 | 31 | import java.util.Map; |
| 32 | +import org.apache.commons.io.FileUtils; |
31 | 33 | import org.apache.fesod.sheet.read.builder.ExcelReaderBuilder; |
32 | 34 | import org.apache.fesod.sheet.read.builder.ExcelReaderSheetBuilder; |
33 | 35 | import org.apache.fesod.sheet.read.listener.ReadListener; |
@@ -253,6 +255,30 @@ void testReadSheet_withAllParams_shouldReturnBuilder() { |
253 | 255 | Assertions.assertNotNull(builder); |
254 | 256 | } |
255 | 257 |
|
| 258 | + @Test |
| 259 | + void testReadCsv_withColumnIndexes_shouldFilterColumns() throws Exception { |
| 260 | + |
| 261 | + String csvContent = "ID,Name,Age,Gender\n2,Bob,25,Male"; |
| 262 | + File csvFile = tempDir.resolve("test_columns.csv").toFile(); |
| 263 | + FileUtils.writeStringToFile(csvFile, csvContent, StandardCharsets.UTF_8); |
| 264 | + |
| 265 | + List<Integer> targetColumns = Arrays.asList(0, 2); |
| 266 | + |
| 267 | + List<Map<Integer, String>> readResults = FesodSheet.read(csvFile) |
| 268 | + .csv() |
| 269 | + .includeColumnIndexes(targetColumns) |
| 270 | + .doReadSync(); |
| 271 | + |
| 272 | + Assertions.assertNotNull(readResults); |
| 273 | + Assertions.assertEquals(1, readResults.size()); |
| 274 | + |
| 275 | + Map<Integer, String> row1 = readResults.get(0); |
| 276 | + Assertions.assertEquals( |
| 277 | + 2, row1.size(), "Should only contain the 1 filtered columns (excepting the head by default)"); |
| 278 | + Assertions.assertEquals("2", row1.get(0)); |
| 279 | + Assertions.assertEquals("25", row1.get(1)); |
| 280 | + } |
| 281 | + |
256 | 282 | @Test |
257 | 283 | void testReadSheet_withColumnIndexes_shouldConfigureAll() { |
258 | 284 |
|
|
0 commit comments