Skip to content

Commit a58eb2f

Browse files
authored
doc: add JavaDoc and inline comments for simple test (#260)
1 parent 58a5509 commit a58eb2f

File tree

4 files changed

+109
-5
lines changed

4 files changed

+109
-5
lines changed

fastexcel-core/src/main/java/cn/idev/excel/read/processor/DefaultAnalysisEventProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,10 @@ private void dealData(AnalysisContext analysisContext) {
117117
for (ReadListener readListener : analysisContext.currentReadHolder().readListenerList()) {
118118
try {
119119
if (isData) {
120+
// handle data row
120121
readListener.invoke(readRowHolder.getCurrentRowAnalysisResult(), analysisContext);
121122
} else {
123+
// handle data header
122124
readListener.invokeHead(cellDataMap, analysisContext);
123125
}
124126
} catch (Exception e) {

fastexcel-test/src/test/java/cn/idev/excel/test/core/simple/SimpleData.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
import lombok.Setter;
88

99
/**
10+
* mock data format for simple read/write
11+
* <p>
12+
* Use ExcelProperty {@link ExcelProperty} to mark headers
13+
* </p>
14+
*
1015
* @author Jiaju Zhuang
1116
*/
1217
@Getter

fastexcel-test/src/test/java/cn/idev/excel/test/core/simple/SimpleDataListener.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,59 @@
44
import java.util.List;
55
import java.util.Map;
66

7-
import cn.idev.excel.event.AnalysisEventListener;
87
import cn.idev.excel.context.AnalysisContext;
9-
import com.alibaba.fastjson2.JSON;
8+
import cn.idev.excel.event.AnalysisEventListener;
9+
import cn.idev.excel.event.SyncReadListener;
1010

11+
import com.alibaba.fastjson2.JSON;
1112
import org.junit.jupiter.api.Assertions;
1213
import org.slf4j.Logger;
1314
import org.slf4j.LoggerFactory;
1415

1516
/**
17+
* Define an AnalysisEventListener to handler the Analysis event
18+
*
1619
* @author Jiaju Zhuang
1720
*/
1821
public class SimpleDataListener extends AnalysisEventListener<SimpleData> {
1922
private static final Logger LOGGER = LoggerFactory.getLogger(SimpleDataListener.class);
2023
List<SimpleData> list = new ArrayList<SimpleData>();
2124

25+
/**
26+
* handle header of the file data
27+
*
28+
* @param headMap head map
29+
* @param context context
30+
*/
2231
@Override
2332
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
2433
LOGGER.debug("Head is:{}", JSON.toJSONString(headMap));
2534
Assertions.assertEquals(headMap.get(0), "姓名");
2635
}
2736

37+
/**
38+
* handle data row in the file
39+
* <p>
40+
* this is the same way of implement as {@link SyncReadListener#invoke}
41+
* all the data are stored synchronously
42+
* </p>
43+
*
44+
* @param data data
45+
* @param context context
46+
*/
2847
@Override
2948
public void invoke(SimpleData data, AnalysisContext context) {
3049
list.add(data);
3150
}
3251

52+
/**
53+
* do after all analyse process
54+
*
55+
* @param context context
56+
*/
3357
@Override
3458
public void doAfterAllAnalysed(AnalysisContext context) {
59+
//check the results
3560
Assertions.assertEquals(list.size(), 10);
3661
Assertions.assertEquals(list.get(0).getName(), "姓名0");
3762
Assertions.assertEquals((int)(context.readSheetHolder().getSheetNo()), 0);

fastexcel-test/src/test/java/cn/idev/excel/test/core/simple/SimpleDataTest.java

Lines changed: 75 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
import java.util.List;
88
import java.util.Map;
99

10-
import cn.idev.excel.read.listener.PageReadListener;
11-
import cn.idev.excel.test.util.TestFileUtil;
1210
import cn.idev.excel.EasyExcel;
11+
import cn.idev.excel.read.listener.PageReadListener;
1312
import cn.idev.excel.support.ExcelTypeEnum;
13+
import cn.idev.excel.test.util.TestFileUtil;
1414

1515
import lombok.extern.slf4j.Slf4j;
1616
import org.junit.jupiter.api.Assertions;
@@ -20,6 +20,15 @@
2020
import org.junit.jupiter.api.TestMethodOrder;
2121

2222
/**
23+
* Test simple read/write for Excel formats:
24+
* <li>Excel 2007 format (.xlsx)</li>
25+
* <li>Excel 2003 format (.xls)</li>
26+
* <li>CSV format (.csv)</li>
27+
* Test methods are grouped by prefixes:
28+
* <li>t0x: Basic read/write tests</li>
29+
* <li>t1x: Synchronous reading tests</li>
30+
* <li>t2x: Specific feature tests (sheet name reading, pagination, etc.)</li>
31+
*
2332
* @author Jiaju Zhuang
2433
*/
2534
@TestMethodOrder(MethodOrderer.MethodName.class)
@@ -52,8 +61,14 @@ public void t03ReadAndWriteCsv() {
5261
readAndWrite(fileCsv);
5362
}
5463

64+
/**
65+
* Test simple read/write with file
66+
*
67+
* @param file file
68+
*/
5569
private void readAndWrite(File file) {
5670
EasyExcel.write(file, SimpleData.class).sheet().doWrite(data());
71+
//use a SimpleDataListener object to handle and check result
5772
EasyExcel.read(file, SimpleData.class, new SimpleDataListener()).sheet().doRead();
5873
}
5974

@@ -72,44 +87,96 @@ public void t06ReadAndWriteCsv() throws Exception {
7287
readAndWriteInputStream(fileCsv, ExcelTypeEnum.CSV);
7388
}
7489

90+
/**
91+
* Test simple read/write with InputStream/OutputStream
92+
*
93+
* @param file file used to generate InputStream/OutputStream
94+
* @param excelTypeEnum excel type enum
95+
* @throws Exception exception
96+
*/
7597
private void readAndWriteInputStream(File file, ExcelTypeEnum excelTypeEnum) throws Exception {
7698
EasyExcel.write(new FileOutputStream(file), SimpleData.class).excelType(excelTypeEnum).sheet().doWrite(data());
99+
//use a SimpleDataListener object to handle and check result
77100
EasyExcel.read(new FileInputStream(file), SimpleData.class, new SimpleDataListener()).sheet().doRead();
78101
}
79102

103+
/**
104+
* Test synchronous reading of Excel 2007 format
105+
*/
80106
@Test
81107
public void t11SynchronousRead07() {
82108
synchronousRead(file07);
83109
}
84110

111+
/**
112+
* Test synchronous reading of Excel 2003 format
113+
*/
85114
@Test
86115
public void t12SynchronousRead03() {
87116
synchronousRead(file03);
88117
}
89118

119+
/**
120+
* Test synchronous reading of CSV format
121+
*/
90122
@Test
91123
public void t13SynchronousReadCsv() {
92124
synchronousRead(fileCsv);
93125
}
94126

127+
/**
128+
* test read sheet in an Excel file with specified sheetName
129+
*/
95130
@Test
96131
public void t21SheetNameRead07() {
97132
List<Map<Integer, Object>> list = EasyExcel.read(
98133
TestFileUtil.readFile("simple" + File.separator + "simple07.xlsx"))
134+
//set the sheet name to read
99135
.sheet("simple")
100136
.doReadSync();
101137
Assertions.assertEquals(1, list.size());
102138
}
103139

140+
/**
141+
* test read sheet in an Excel file with specified sheetNo
142+
*/
143+
@Test
144+
public void t22SheetNoRead07() {
145+
List<Map<Integer, Object>> list = EasyExcel.read(
146+
TestFileUtil.readFile("simple" + File.separator + "simple07.xlsx"))
147+
// sheetNo begin with 0
148+
.sheet(1)
149+
.doReadSync();
150+
Assertions.assertEquals(1, list.size());
151+
}
152+
153+
/**
154+
* Test page reading with PageReadListener
155+
* <p>
156+
* PageReadListener processes Excel data in batches, triggering callbacks when reaching
157+
* specified batch size. {@link PageReadListener#invoke}
158+
* Useful for large files to prevent memory overflow
159+
* </p>
160+
*/
104161
@Test
105-
public void t22PageReadListener07() {
162+
public void t23PageReadListener07() {
163+
//Read the first 5 rows of an Excel file
106164
EasyExcel.read(file07, SimpleData.class,
107165
new PageReadListener<SimpleData>(dataList -> {
108166
Assertions.assertEquals(5, dataList.size());
109167
}, 5))
110168
.sheet().doRead();
111169
}
112170

171+
/**
172+
* Synchronous reading of Excel files
173+
* <p>
174+
* Unlike asynchronous reading with listeners, synchronous reading loads all data into memory
175+
* and returns a complete data list. It may cause memory issues when processing large files.
176+
* </p>
177+
*
178+
* @param file file
179+
*/
113180
private void synchronousRead(File file) {
114181
// Synchronous read file
115182
List<Object> list = EasyExcel.read(file).head(SimpleData.class).sheet().doReadSync();
@@ -118,6 +185,11 @@ private void synchronousRead(File file) {
118185
Assertions.assertEquals(((SimpleData)list.get(0)).getName(), "姓名0");
119186
}
120187

188+
/**
189+
* mock data
190+
*
191+
* @return {@link List }<{@link SimpleData }>
192+
*/
121193
private List<SimpleData> data() {
122194
List<SimpleData> list = new ArrayList<SimpleData>();
123195
for (int i = 0; i < 10; i++) {

0 commit comments

Comments
 (0)