gpt4 book ai didi

unit-testing - 用于自动测试 UTF-8 字符串验证器的测试数据集

转载 作者:行者123 更新时间:2023-12-04 04:04:44 25 4
gpt4 key购买 nike

我编写了 UTF-8 字符串验证器函数。

该函数采用字节缓冲区及其以 UTF-8 字符表示的长度,并验证缓冲区是否完全由给定数量的有效 UTF-8 字符组成。

如果缓冲区太短或太大,或者它包含无效的 UTF8 字符,验证将失败。

现在我想为我的验证器编写自动测试。

是否有我可以重用的数据集?

我找到了这个文件:http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt ,但看起来它不太适合我的目的——据我了解,它更适合可视化测试。

有什么线索吗?

最佳答案

  • 有效的 UTF-8 数据,以查看它是否通过
  • 包含需要 1 个代码单元、2、3 和 4 的字符的字符串! (不要只测试“ABC”或“咖啡馆”)
  • 明显无效的数据,比如一些 ISO-8859-1 字符串(也不是有效的 UTF-8)
  • 包含超长形式的字符串(例如,编码为 2 的 1 字节字符。)这些不应作为 UTF-8
  • 传递。
  • 包含 U+10FFFF 以上代码点的字符串
  • 此处列出的所有内容:http://en.wikipedia.org/wiki/UTF-8#Invalid_byte_sequences

  • 取决于您的代码有多好:
  • 捕获一个 UTF-8 字符串,它编码从 U+D800 到 U+DFFF(代理对,永远不应该出现在 UTF-8 字符串中)

  • 这些测试用例:
    Should pass: "ABC"    41 42 43
    Should pass: "ABÇ" 41 42 c3 87
    Should pass: "ABḈ" 41 42 e1 b8 88
    Should pass: "AB𝜍" 41 42 f0 9d 9c 8d
    Should fail: Bad data 80 81 82 83
    Should fail: Bad data C2 C3
    Should fail: Overlong C0 43
    Should fail: encodes F5 80 80 80
    U+140000
    Should fail: encodes F4 90 80 80
    U+110000
    Should fail: encodes ED A0 80
    U+D800

    (我只检查过这些,所以如果你得到意想不到的结果,请双三检查我。)

    关于unit-testing - 用于自动测试 UTF-8 字符串验证器的测试数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5519315/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com