PrismLauncher/tests/GZip_test.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

53 lines
1.3 KiB
C++
Raw Normal View History

#include <QTest>
#include <GZip.h>
#include <random>
void fib(int& prev, int& cur)
{
auto ret = prev + cur;
prev = cur;
cur = ret;
}
class GZipTest : public QObject {
Q_OBJECT
private slots:
void test_Through()
{
// test up to 10 MB
static const int size = 10 * 1024 * 1024;
QByteArray random;
QByteArray compressed;
QByteArray decompressed;
std::default_random_engine eng((std::random_device())());
std::uniform_int_distribution<uint16_t> idis(0, std::numeric_limits<uint8_t>::max());
2018-07-15 13:51:05 +01:00
// initialize random buffer
for (int i = 0; i < size; i++) {
random.append(static_cast<char>(idis(eng)));
}
2018-07-15 13:51:05 +01:00
// initialize fibonacci
int prev = 1;
int cur = 1;
2018-07-15 13:51:05 +01:00
// test if fibonacci long random buffers pass through GZip
do {
QByteArray copy = random;
copy.resize(cur);
compressed.clear();
decompressed.clear();
QVERIFY(GZip::zip(copy, compressed));
QVERIFY(GZip::unzip(compressed, decompressed));
QCOMPARE(decompressed, copy);
fib(prev, cur);
} while (cur < size);
}
};
QTEST_GUILESS_MAIN(GZipTest)
#include "GZip_test.moc"