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()); } }