报错节选:
Start 1: rime_test
1/1 Test #1: rime_test ........................***Failed 0.30 sec
[==========] Running 90 tests from 30 test suites.
[----------] Global test environment set-up.
……
[ RUN ] RimeSyllabifierTest.TrimLeadingDelimiters
D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:170: Failure
Expected equality of these values:
input.length()
Which is: 3
g.interpreted_length
Which is: 0
D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:171: Failure
Expected equality of these values:
2
g.vertices.size()
Which is: 1
D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:172: Failure
Value of: g.vertices.end() == g.vertices.find(3)
Actual: true
Expected: false
[ FAILED ] RimeSyllabifierTest.TrimLeadingDelimiters (4 ms)
……
[ RUN ] RimeSyllabifierTest.TrimBothLeadingAndTrailingDelimiters
D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:204: Failure
Expected equality of these values:
input.length()
Which is: 5
g.interpreted_length
Which is: 0
D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:205: Failure
Expected equality of these values:
2
g.vertices.size()
Which is: 1
D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:206: Failure
Value of: g.vertices.end() == g.vertices.find(5)
Actual: true
Expected: false
[ FAILED ] RimeSyllabifierTest.TrimBothLeadingAndTrailingDelimiters (0 ms)
[----------] 9 tests from RimeSyllabifierTest (8 ms total)
……
[----------] Global test environment tear-down
[==========] 90 tests from 30 test suites ran. (77 ms total)
[ PASSED ] 88 tests.
[ FAILED ] 2 tests, listed below:
[ FAILED ] RimeSyllabifierTest.TrimLeadingDelimiters
[ FAILED ] RimeSyllabifierTest.TrimBothLeadingAndTrailingDelimiters
2 FAILED TESTS
YOU HAVE 1 DISABLED TEST
相关测试函数:TEST_F(RimeSyllabifierTest, TrimLeadingDelimiters) {
因为我不懂C,在AI的指导下一番调试之后,它给出了诊断:
输出表明,BuildSyllableGraph 在图构建阶段完全没有生成任何边,顶点只有起点 0。这很可能是因为在 UCRT64 环境下,SpellingAccessor 在 spelling_map_ 为空时的行为与测试预期不符,导致拼写插入失败。
原始测试中 Build(keyset) 没传 script,导致 prism 内部 spelling_map_ 保持为 nullptr。虽然 SpellingAccessor 对 null 有降级处理(直接返回 spelling_id 作为音节),但在 UCRT64 编译环境下,可能因为结构对齐、优化或未定义行为导致 while (!accessor.exhausted()) 循环内的插入逻辑异常,最终 spellings 被判为空,边被丢弃。
报错节选:
相关测试函数:TEST_F(RimeSyllabifierTest, TrimLeadingDelimiters) {
因为我不懂C,在AI的指导下一番调试之后,它给出了诊断: