1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
/*
SPDX-FileCopyrightText: 2012 Ni Hui <shuizhuyuanluo@126.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "kencodingprobertest.h"
#include <QDir>
#include <QTest>
#include <kencodingprober.h>
static KEncodingProber *ep = nullptr;
void KEncodingProberTest::initTestCase()
{
ep = new KEncodingProber;
}
void KEncodingProberTest::cleanupTestCase()
{
delete ep;
ep = nullptr;
}
void KEncodingProberTest::cleanup()
{
ep->reset();
}
void KEncodingProberTest::testReset()
{
ep->feed(QByteArray("some random data @*@#&jd"));
ep->reset();
QCOMPARE(ep->state(), KEncodingProber::Probing);
QCOMPARE(ep->encoding().toLower(), QByteArray("utf-8"));
}
void KEncodingProberTest::testProbe()
{
// utf-8
ep->setProberType(KEncodingProber::Universal);
ep->feed(QByteArray::fromHex("e998bfe5b094e58d91e696afe5b1b1e88489"));
QCOMPARE(ep->encoding().toLower(), QByteArray("utf-8"));
ep->reset();
// gb18030
ep->setProberType(KEncodingProber::ChineseSimplified);
ep->feed(QByteArray::fromHex("d7d4d3c9b5c4b0d9bfc6c8abcae9"));
QCOMPARE(ep->encoding().toLower(), QByteArray("gb18030"));
ep->reset();
// shift_jis
ep->setProberType(KEncodingProber::Japanese);
ep->feed(QByteArray::fromHex("8374838a815b955389c88e969354"));
QCOMPARE(ep->encoding().toLower(), QByteArray("shift_jis"));
ep->reset();
// big5
ep->setProberType(KEncodingProber::ChineseTraditional);
ep->feed(QByteArray::fromHex("aefcafc7a6caa474a141a6b3ae65a444a46a"));
QCOMPARE(ep->encoding().toLower(), QByteArray("big5"));
ep->reset();
// binary data, just make sure we do not crash (cf. crash in bug #357341)
const QString binaryFile = QFINDTESTDATA("data/binary_data");
QVERIFY(!binaryFile.isEmpty());
QFile file(binaryFile);
QVERIFY(file.open(QIODevice::ReadOnly));
QByteArray binaryData(file.readAll());
ep->setProberType(KEncodingProber::Universal);
ep->feed(binaryData);
QCOMPARE(ep->encoding().toLower(), QByteArray("utf-8"));
ep->reset();
}
QTEST_MAIN(KEncodingProberTest)
#include "moc_kencodingprobertest.cpp"
|