32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
import { parseClassInput } from '../../app/utils/grade-class-input.ts'
|
|
|
|
test('数字区间生成对应数量的班名', () => {
|
|
assert.deepEqual(parseClassInput('1-3'), ['1班', '2班', '3班'])
|
|
assert.deepEqual(parseClassInput('1-1'), ['1班'])
|
|
})
|
|
|
|
test('逗号分隔与区间可混合使用并去重', () => {
|
|
const result = parseClassInput('一班,3-4,一班')
|
|
assert.deepEqual(result, ['一班', '3班', '4班'])
|
|
})
|
|
|
|
test('支持中文/英文逗号、换行、分号分隔', () => {
|
|
assert.deepEqual(parseClassInput('一班,二班\n三班;4-5'), ['一班', '二班', '三班', '4班', '5班'])
|
|
})
|
|
|
|
test('非法区间按字面保留', () => {
|
|
assert.deepEqual(parseClassInput('5-3'), ['5-3'])
|
|
assert.deepEqual(parseClassInput('一-三'), ['一-三'])
|
|
})
|
|
|
|
test('超长区间按字面保留(上限 100 防呆)', () => {
|
|
const result = parseClassInput('1-101')
|
|
assert.deepEqual(result, ['1-101'])
|
|
})
|
|
|
|
test('空输入与非字符串返回空数组', () => {
|
|
assert.deepEqual(parseClassInput(''), [])
|
|
assert.deepEqual(parseClassInput(undefined), [])
|
|
}) |