刘光辉
6 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package jnpf.dmsService.recordprint;
 
import jnpf.exception.DataException;
import org.junit.jupiter.api.Test;
 
import java.util.Arrays;
 
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
 
class DmsRecordPrintPageParserTest {
 
    private final DmsRecordPrintPageParser parser = new DmsRecordPrintPageParser();
 
    /**
     * 验证页码集合支持区间、中文分隔符、去重并按升序返回。
     */
    @Test
    void parsesRangesAndRemovesDuplicatePages() throws Exception {
        assertEquals(Arrays.asList(1, 2, 3, 5), parser.parse("[\"5\", \"1-3\", \"2\"]", 5));
    }
 
    /**
     * 验证“全部”会展开为源文件的所有页面。
     */
    @Test
    void expandsAllPages() throws Exception {
        assertEquals(Arrays.asList(1, 2, 3), parser.parse("全部", 3));
    }
 
    /**
     * 验证页码超过源文件范围时拒绝打印。
     */
    @Test
    void rejectsPageOutsideFileRange() {
        DataException exception = assertThrows(DataException.class,
                () -> parser.parse("1,4", 3));
 
        assertEquals("分散打印页码超出文件范围:4,文件共3页", exception.getMessage());
    }
}