2015-09-14 01:25:47 +01:00
|
|
|
#include <QTest>
|
|
|
|
|
2022-09-11 21:25:18 +01:00
|
|
|
#include <GZip.h>
|
2015-09-14 01:25:47 +01:00
|
|
|
#include <random>
|
|
|
|
|
2023-08-14 17:16:53 +01:00
|
|
|
void fib(int& prev, int& cur)
|
2015-09-14 01:25:47 +01:00
|
|
|
{
|
2018-07-15 13:51:05 +01:00
|
|
|
auto ret = prev + cur;
|
|
|
|
prev = cur;
|
|
|
|
cur = ret;
|
2015-09-14 01:25:47 +01:00
|
|
|
}
|
|
|
|
|
2023-08-14 17:16:53 +01:00
|
|
|
class GZipTest : public QObject {
|
2018-07-15 13:51:05 +01:00
|
|
|
Q_OBJECT
|
2023-08-14 17:16:53 +01:00
|
|
|
private slots:
|
2015-09-14 01:25:47 +01:00
|
|
|
|
2018-07-15 13:51:05 +01:00
|
|
|
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())());
|
2022-10-26 01:44:30 +01:00
|
|
|
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
|
2023-08-14 17:16:53 +01:00
|
|
|
for (int i = 0; i < size; i++) {
|
2023-06-04 22:59:37 +01:00
|
|
|
random.append(static_cast<char>(idis(eng)));
|
2018-07-15 13:51:05 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// initialize fibonacci
|
|
|
|
int prev = 1;
|
|
|
|
int cur = 1;
|
|
|
|
|
|
|
|
// test if fibonacci long random buffers pass through GZip
|
2023-08-14 17:16:53 +01:00
|
|
|
do {
|
2018-07-15 13:51:05 +01:00
|
|
|
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);
|
|
|
|
}
|
2015-09-14 01:25:47 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
QTEST_GUILESS_MAIN(GZipTest)
|
|
|
|
|
2016-04-14 00:23:54 +01:00
|
|
|
#include "GZip_test.moc"
|