mirror of https://github.com/qt/qt5compat.git
Qt5Compat: Add tests for TSCII QTextCodec code coverage
* Fix bug in conversion for Tamil virama sign according to the https://www.unicode.org/notes/tn15/Tscii2Unicode2.pdf document Task-number: QTBUG-88183 Change-Id: Ibf09c3991dd01b583acdcbd622d3fc3fc82f1d80 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
This commit is contained in:
parent
a864111a13
commit
63e9cb61ed
|
@ -199,87 +199,87 @@ static const ushort UnToTs [][4] = {
|
|||
{0x0B93, 0x0000, 0x0000, 0xB5},
|
||||
{0x0B94, 0x0000, 0x0000, 0xB6},
|
||||
{0x0B95, 0x0000, 0x0000, 0xB8},
|
||||
{0x0B95, 0x0B82, 0x0000, 0xEC},
|
||||
{0x0B95, 0x0BC1, 0x0000, 0xCC},
|
||||
{0x0B95, 0x0BC2, 0x0000, 0xDC},
|
||||
{0x0B95, 0x0BCD, 0x0000, 0xEC},
|
||||
{0x0B99, 0x0000, 0x0000, 0xB9},
|
||||
{0x0B99, 0x0B82, 0x0000, 0xED},
|
||||
{0x0B99, 0x0BC1, 0x0000, 0x99},
|
||||
{0x0B99, 0x0BC2, 0x0000, 0x9B},
|
||||
{0x0B99, 0x0BCD, 0x0000, 0xED},
|
||||
{0x0B9A, 0x0000, 0x0000, 0xBA},
|
||||
{0x0B9A, 0x0B82, 0x0000, 0xEE},
|
||||
{0x0B9A, 0x0BC1, 0x0000, 0xCD},
|
||||
{0x0B9A, 0x0BC2, 0x0000, 0xDD},
|
||||
{0x0B9A, 0x0BCD, 0x0000, 0xEE},
|
||||
{0x0B9C, 0x0000, 0x0000, 0x83},
|
||||
{0x0B9C, 0x0B82, 0x0000, 0x88},
|
||||
{0x0B9C, 0x0BCD, 0x0000, 0x88},
|
||||
{0x0B9E, 0x0000, 0x0000, 0xBB},
|
||||
{0x0B9E, 0x0B82, 0x0000, 0xEF},
|
||||
{0x0B9E, 0x0BCD, 0x0000, 0xEF},
|
||||
{0x0B9E, 0x0BC1, 0x0000, 0x9A},
|
||||
{0x0B9E, 0x0BC2, 0x0000, 0x9C},
|
||||
{0x0B9F, 0x0000, 0x0000, 0xBC},
|
||||
{0x0B9F, 0x0B82, 0x0000, 0xF0},
|
||||
{0x0B9F, 0x0BBF, 0x0000, 0xCA},
|
||||
{0x0B9F, 0x0BC0, 0x0000, 0xCB},
|
||||
{0x0B9F, 0x0BC1, 0x0000, 0xCE},
|
||||
{0x0B9F, 0x0BC2, 0x0000, 0xDE},
|
||||
{0x0BA1, 0x0B82, 0x0000, 0xF2},
|
||||
{0x0B9F, 0x0BCD, 0x0000, 0xF0},
|
||||
{0x0BA3, 0x0000, 0x0000, 0xBD},
|
||||
{0x0BA3, 0x0B82, 0x0000, 0xF1},
|
||||
{0x0BA3, 0x0BCD, 0x0000, 0xF1},
|
||||
{0x0BA3, 0x0BC1, 0x0000, 0xCF},
|
||||
{0x0BA3, 0x0BC2, 0x0000, 0xDF},
|
||||
{0x0BA4, 0x0000, 0x0000, 0xBE},
|
||||
{0x0BA4, 0x0BC1, 0x0000, 0xD0},
|
||||
{0x0BA4, 0x0BC2, 0x0000, 0xE0},
|
||||
{0x0BA4, 0x0BCD, 0x0000, 0xF2},
|
||||
{0x0BA8, 0x0000, 0x0000, 0xBF},
|
||||
{0x0BA8, 0x0B82, 0x0000, 0xF3},
|
||||
{0x0BA8, 0x0BC1, 0x0000, 0xD1},
|
||||
{0x0BA8, 0x0BC2, 0x0000, 0xE1},
|
||||
{0x0BA8, 0x0BCD, 0x0000, 0xF3},
|
||||
{0x0BA9, 0x0000, 0x0000, 0xC9},
|
||||
{0x0BA9, 0x0B82, 0x0000, 0xFD},
|
||||
{0x0BA9, 0x0BC1, 0x0000, 0xDB},
|
||||
{0x0BA9, 0x0BC2, 0x0000, 0xEB},
|
||||
{0x0BA9, 0x0BCD, 0x0000, 0xFD},
|
||||
{0x0BAA, 0x0000, 0x0000, 0xC0},
|
||||
{0x0BAA, 0x0B82, 0x0000, 0xF4},
|
||||
{0x0BAA, 0x0BC1, 0x0000, 0xD2},
|
||||
{0x0BAA, 0x0BC2, 0x0000, 0xE2},
|
||||
{0x0BAA, 0x0BCD, 0x0000, 0xF4},
|
||||
{0x0BAE, 0x0000, 0x0000, 0xC1},
|
||||
{0x0BAE, 0x0B82, 0x0000, 0xF5},
|
||||
{0x0BAE, 0x0BC1, 0x0000, 0xD3},
|
||||
{0x0BAE, 0x0BC2, 0x0000, 0xE3},
|
||||
{0x0BAE, 0x0BCD, 0x0000, 0xF5},
|
||||
{0x0BAF, 0x0000, 0x0000, 0xC2},
|
||||
{0x0BAF, 0x0B82, 0x0000, 0xF6},
|
||||
{0x0BAF, 0x0BC1, 0x0000, 0xD4},
|
||||
{0x0BAF, 0x0BC2, 0x0000, 0xE4},
|
||||
{0x0BAF, 0x0BCD, 0x0000, 0xF6},
|
||||
{0x0BB0, 0x0000, 0x0000, 0xC3},
|
||||
{0x0BB0, 0x0B82, 0x0000, 0xF7},
|
||||
{0x0BB0, 0x0BC1, 0x0000, 0xD5},
|
||||
{0x0BB0, 0x0BC2, 0x0000, 0xE5},
|
||||
{0x0BB0, 0x0BCD, 0x0000, 0xF7},
|
||||
{0x0BB1, 0x0000, 0x0000, 0xC8},
|
||||
{0x0BB1, 0x0B82, 0x0000, 0xFC},
|
||||
{0x0BB1, 0x0BC1, 0x0000, 0xDA},
|
||||
{0x0BB1, 0x0BC2, 0x0000, 0xEA},
|
||||
{0x0BB1, 0x0BCD, 0x0000, 0xFC},
|
||||
{0x0BB2, 0x0000, 0x0000, 0xC4},
|
||||
{0x0BB2, 0x0B82, 0x0000, 0xF8},
|
||||
{0x0BB2, 0x0BC1, 0x0000, 0xD6},
|
||||
{0x0BB2, 0x0BC2, 0x0000, 0xE6},
|
||||
{0x0BB2, 0x0BCD, 0x0000, 0xF8},
|
||||
{0x0BB3, 0x0000, 0x0000, 0xC7},
|
||||
{0x0BB3, 0x0B82, 0x0000, 0xFB},
|
||||
{0x0BB3, 0x0BC1, 0x0000, 0xD9},
|
||||
{0x0BB3, 0x0BC2, 0x0000, 0xE9},
|
||||
{0x0BB3, 0x0BCD, 0x0000, 0xFB},
|
||||
{0x0BB4, 0x0000, 0x0000, 0xC6},
|
||||
{0x0BB4, 0x0B82, 0x0000, 0xFA},
|
||||
{0x0BB4, 0x0BC1, 0x0000, 0xD8},
|
||||
{0x0BB4, 0x0BC2, 0x0000, 0xE8},
|
||||
{0x0BB4, 0x0BCD, 0x0000, 0xFA},
|
||||
{0x0BB5, 0x0000, 0x0000, 0xC5},
|
||||
{0x0BB5, 0x0B82, 0x0000, 0xF9},
|
||||
{0x0BB5, 0x0BC1, 0x0000, 0xD7},
|
||||
{0x0BB5, 0x0BC2, 0x0000, 0xE7},
|
||||
{0x0BB5, 0x0BCD, 0x0000, 0xF9},
|
||||
{0x0BB7, 0x0000, 0x0000, 0x84},
|
||||
{0x0BB7, 0x0B82, 0x0000, 0x89},
|
||||
{0x0BB7, 0x0BCD, 0x0000, 0x89},
|
||||
{0x0BB8, 0x0000, 0x0000, 0x85},
|
||||
{0x0BB8, 0x0B82, 0x0000, 0x8A},
|
||||
{0x0BB8, 0x0BCD, 0x0000, 0x8A},
|
||||
{0x0BB9, 0x0000, 0x0000, 0x86},
|
||||
{0x0BB9, 0x0B82, 0x0000, 0x8B},
|
||||
{0x0BB9, 0x0BCD, 0x0000, 0x8B},
|
||||
{0x0BBE, 0x0000, 0x0000, 0xA1},
|
||||
{0x0BBF, 0x0000, 0x0000, 0xA2},
|
||||
{0x0BC0, 0x0000, 0x0000, 0xA3},
|
||||
|
@ -314,16 +314,16 @@ static const ushort TsToUn [][3] = {
|
|||
// Starting at 0x80
|
||||
{0x0BE6, 0x0000, 0x0000},
|
||||
{0x0BE7, 0x0000, 0x0000},
|
||||
{0x0000, 0x0000, 0x0000}, // unknown
|
||||
{0x0000, 0x0000, 0x0000}, // not covered in the unicode document
|
||||
{0x0B9C, 0x0000, 0x0000},
|
||||
{0x0BB7, 0x0000, 0x0000},
|
||||
{0x0BB8, 0x0000, 0x0000},
|
||||
{0x0BB9, 0x0000, 0x0000},
|
||||
{0x0BE7, 0x0BB7, 0x0000},
|
||||
{0x0B9C, 0x0B82, 0x0000},
|
||||
{0x0BB7, 0x0B82, 0x0000},
|
||||
{0x0BB8, 0x0B82, 0x0000},
|
||||
{0x0BB9, 0x0B82, 0x0000},
|
||||
{0x0B9C, 0x0BCD, 0x0000},
|
||||
{0x0BB7, 0x0BCD, 0x0000},
|
||||
{0x0BB8, 0x0BCD, 0x0000},
|
||||
{0x0BB9, 0x0BCD, 0x0000},
|
||||
{0x0BE7, 0x0BB7, 0x0B82},
|
||||
{0x0BE8, 0x0000, 0x0000},
|
||||
{0x0BE9, 0x0000, 0x0000},
|
||||
|
@ -331,8 +331,8 @@ static const ushort TsToUn [][3] = {
|
|||
{0x0BEB, 0x0000, 0x0000},
|
||||
{0x2018, 0x0000, 0x0000},
|
||||
{0x2019, 0x0000, 0x0000},
|
||||
{0x201C, 0x0000, 0x0000},
|
||||
{0x201C, 0x0000, 0x0000}, // two of the same??
|
||||
{0x201C, 0x0000, 0x0000}, // double quote left
|
||||
{0x201C, 0x0000, 0x0000}, // double quote right
|
||||
{0x0BEC, 0x0000, 0x0000},
|
||||
{0x0BED, 0x0000, 0x0000},
|
||||
{0x0BEE, 0x0000, 0x0000},
|
||||
|
@ -420,24 +420,26 @@ static const ushort TsToUn [][3] = {
|
|||
{0x0BB3, 0x0BC2, 0x0000},
|
||||
{0x0BB1, 0x0BC2, 0x0000},
|
||||
{0x0BA9, 0x0BC2, 0x0000},
|
||||
{0x0B95, 0x0B82, 0x0000},
|
||||
{0x0B99, 0x0B82, 0x0000},
|
||||
{0x0B9A, 0x0B82, 0x0000},
|
||||
{0x0B9E, 0x0B82, 0x0000},
|
||||
{0x0B9F, 0x0B82, 0x0000},
|
||||
{0x0BA3, 0x0B82, 0x0000},
|
||||
{0x0BA1, 0x0B82, 0x0000},
|
||||
{0x0BA8, 0x0B82, 0x0000},
|
||||
{0x0BAA, 0x0B82, 0x0000},
|
||||
{0x0BAE, 0x0B82, 0x0000},
|
||||
{0x0BAF, 0x0B82, 0x0000},
|
||||
{0x0BB0, 0x0B82, 0x0000},
|
||||
{0x0BB2, 0x0B82, 0x0000},
|
||||
{0x0BB5, 0x0B82, 0x0000},
|
||||
{0x0BB4, 0x0B82, 0x0000},
|
||||
{0x0BB3, 0x0B82, 0x0000},
|
||||
{0x0BB1, 0x0B82, 0x0000},
|
||||
{0x0BA9, 0x0B82, 0x0000}
|
||||
{0x0B95, 0x0BCD, 0x0000},
|
||||
{0x0B99, 0x0BCD, 0x0000},
|
||||
{0x0B9A, 0x0BCD, 0x0000},
|
||||
{0x0B9E, 0x0BCD, 0x0000},
|
||||
{0x0B9F, 0x0BCD, 0x0000},
|
||||
{0x0BA3, 0x0BCD, 0x0000},
|
||||
{0x0BA4, 0x0BCD, 0x0000},
|
||||
{0x0BA8, 0x0BCD, 0x0000},
|
||||
{0x0BAA, 0x0BCD, 0x0000},
|
||||
{0x0BAE, 0x0BCD, 0x0000},
|
||||
{0x0BAF, 0x0BCD, 0x0000},
|
||||
{0x0BB0, 0x0BCD, 0x0000},
|
||||
{0x0BB2, 0x0BCD, 0x0000},
|
||||
{0x0BB5, 0x0BCD, 0x0000},
|
||||
{0x0BB4, 0x0BCD, 0x0000},
|
||||
{0x0BB3, 0x0BCD, 0x0000},
|
||||
{0x0BB1, 0x0BCD, 0x0000},
|
||||
{0x0BA9, 0x0BCD, 0x0000},
|
||||
{0x0000, 0x0000, 0x0000},
|
||||
{0x0000, 0x0000, 0x0000}
|
||||
};
|
||||
|
||||
static int cmp(const ushort *s1, const ushort *s2, size_t len)
|
||||
|
|
|
@ -67,6 +67,9 @@ private slots:
|
|||
void aliasForUTF16() const;
|
||||
void mibForTSCII() const;
|
||||
void codecForTSCII() const;
|
||||
void asciiToTSCII();
|
||||
void unicodeToTSCII();
|
||||
|
||||
void iso8859_16() const;
|
||||
|
||||
void utf8Codec_data();
|
||||
|
@ -552,6 +555,51 @@ void tst_QTextCodec::codecForTSCII() const
|
|||
QCOMPARE(codec->mibEnum(), 2107);
|
||||
}
|
||||
|
||||
void tst_QTextCodec::asciiToTSCII()
|
||||
{
|
||||
/* Add all low, 7-bit ASCII characters. */
|
||||
QString ascii;
|
||||
const int len = 0x7F - 1;
|
||||
ascii.resize(len);
|
||||
|
||||
for (int i = 0; i < len; ++i)
|
||||
ascii[i] = QChar(i + 1);
|
||||
|
||||
QTextCodec* textCodec = QTextCodec::codecForName("TSCII");
|
||||
QVERIFY(textCodec);
|
||||
|
||||
for (int i2 = 0; i2 < len; ++i2) {
|
||||
/* For each character in ascii. */
|
||||
const QChar c(ascii[i2]);
|
||||
QVERIFY2(textCodec->canEncode(c),
|
||||
qPrintable(QString::fromLatin1("Failed to encode %1 with encoding TSCII")
|
||||
.arg(QString::number(c.unicode()))));
|
||||
}
|
||||
|
||||
QVERIFY(textCodec->canEncode(QStringView(ascii)));
|
||||
QVERIFY2(textCodec->canEncode(ascii), "Failed for full string with encoding TSCII");
|
||||
}
|
||||
|
||||
void tst_QTextCodec::unicodeToTSCII()
|
||||
{
|
||||
QTextCodec* codec = QTextCodec::codecForName("TSCII");
|
||||
QVERIFY(codec != nullptr);
|
||||
|
||||
auto st = QString("\u0BA4\u0BBE\u0BAF\u0BCDKCharselect unicode block name");
|
||||
auto ba = QByteArray::fromHex("BEA1F6") + "KCharselect unicode block name";
|
||||
|
||||
QTextCodec::ConverterState state;
|
||||
QCOMPARE(codec->fromUnicode(st.constData(), st.size(), &state), ba);
|
||||
QCOMPARE(codec->toUnicode(ba.constData(), ba.size(), &state), st);
|
||||
|
||||
st = QString("\u0BB5\u0BA3\u0B95\u0BCD\u0B95\u0BAE\u0BCD"); // Welcome
|
||||
ba = QByteArray::fromHex("c5bdecb8f5");
|
||||
|
||||
state.clear();
|
||||
QCOMPARE(codec->fromUnicode(st.constData(), st.size(), &state), ba);
|
||||
QCOMPARE(codec->toUnicode(ba.constData(), ba.size(), &state), st);
|
||||
}
|
||||
|
||||
void tst_QTextCodec::iso8859_16() const
|
||||
{
|
||||
QTextCodec *codec = QTextCodec::codecForName("ISO8859-16");
|
||||
|
|
Loading…
Reference in New Issue