冗長なUTF-8の判定のテストケースについて考える

判定が実装されているかどうかの表面的なチェックではなく、判定が正しいかどうかをチェックするには、慎重なテストケースの構成が必要です。

とりあえず最低でもこれぐらいは必要でしょうが、まだ足りない気がします(特にパターンマッチングで検出させている場合に抜けがありそうです)。

冗長と判定されるべきもののテストケース

 0xC1,0xBF // 2byte U+007F
 0xE0,0x9F,0xBF // 3byte U+07FF
 0xF0,0x8F,0xBF,0xBF // 4byte U+FFFF
 0xF8,0x84,0x8F,0xBF,0xBF //5byte U+10FFFF
 0xFC,0x80,0x84,0x8F,0xBF,0xBF //6byte U+10FFFF

冗長と判定されてはいけないもののテストケース

 0x7F //U+007F
 0xC2,0x80 // 2byte U+0080
 0xE0,0xA0,0x80 // 3byte U+0800
 0xF0,0x90,0x80,0x80 // 4byte U+10000

5バイトと6バイトの 10FFFFが両方に入っていたのは間違いです