GH-1227 add GZip compress function and a unit test fo GZip

This commit is contained in:
Petr Mrázek
2015-09-14 02:25:47 +02:00
parent cfd5976471
commit e38cc1d480
4 changed files with 119 additions and 14 deletions

View File

@ -31,6 +31,7 @@ add_unit_test(UpdateChecker tst_UpdateChecker.cpp)
add_unit_test(DownloadTask tst_DownloadTask.cpp)
add_unit_test(filematchers tst_filematchers.cpp)
add_unit_test(Resource tst_Resource.cpp)
add_unit_test(GZip tst_GZip.cpp)
# Tests END #

55
tests/tst_GZip.cpp Normal file
View File

@ -0,0 +1,55 @@
#include <QTest>
#include "TestUtil.h"
#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<uint8_t> idis(0, std::numeric_limits<uint8_t>::max());
// initialize random buffer
for(int i = 0; i < size; i++)
{
random.append((char)idis(eng));
}
// initialize fibonacci
int prev = 1;
int cur = 1;
// test if fibonacci long random buffers pass through GZip
do
{
QByteArray copy = random;
copy.resize(cur);
QVERIFY(GZip::compress(copy, compressed));
QVERIFY(GZip::decompress(compressed, decompressed));
QCOMPARE(decompressed, copy);
fib(prev, cur);
} while (cur < size);
}
};
QTEST_GUILESS_MAIN(GZipTest)
#include "tst_GZip.moc"