From e38cc1d480fdcf3ad08829688fe1a61961612e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Mon, 14 Sep 2015 02:25:47 +0200 Subject: GH-1227 add GZip compress function and a unit test fo GZip --- tests/CMakeLists.txt | 1 + tests/tst_GZip.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 tests/tst_GZip.cpp (limited to 'tests') diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d6487a65..31537c75 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -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 # diff --git a/tests/tst_GZip.cpp b/tests/tst_GZip.cpp new file mode 100644 index 00000000..23c749ef --- /dev/null +++ b/tests/tst_GZip.cpp @@ -0,0 +1,55 @@ +#include +#include "TestUtil.h" + +#include "GZip.h" +#include + +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 idis(0, std::numeric_limits::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" -- cgit v1.2.3