diff options
author | Perttu Ahola <celeron55@gmail.com> | 2012-07-22 20:27:55 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-07-22 20:27:55 +0300 |
commit | 38bb6495821e6fd6da61ae742ff0f2e2d0499cc8 (patch) | |
tree | 53473d8954720e3b59243613174669c9ba09ec96 | |
parent | 82855a04ec7a37f2c08c9f565e9d4a44faa691a1 (diff) | |
download | minetest-38bb6495821e6fd6da61ae742ff0f2e2d0499cc8.tar.gz minetest-38bb6495821e6fd6da61ae742ff0f2e2d0499cc8.tar.bz2 minetest-38bb6495821e6fd6da61ae742ff0f2e2d0499cc8.zip |
Test zlib wrapper's handling of large data
-rw-r--r-- | src/test.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test.cpp b/src/test.cpp index 6a0e991e2..ee77d0dc8 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -40,6 +40,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "inventory.h" #include "util/numeric.h" #include "util/serialize.h" +#include "noise.h" // PseudoRandom used for random data for compression /* Asserts that the exception occurs @@ -415,6 +416,39 @@ struct TestCompress: public TestBase } } + + // Test zlib wrapper with large amounts of data (larger than it's + // internal buffers) + { + infostream<<"Test: Testing zlib wrappers with a large amount " + <<"of pseudorandom data"<<std::endl; + u32 size = 50000; + infostream<<"Test: Input size of large compressZlib is " + <<size<<std::endl; + std::string data_in; + data_in.resize(size); + PseudoRandom pseudorandom(9420); + for(u32 i=0; i<size; i++) + data_in[i] = pseudorandom.range(0,255); + std::ostringstream os_compressed(std::ios::binary); + compressZlib(data_in, os_compressed); + infostream<<"Test: Output size of large compressZlib is " + <<os_compressed.str().size()<<std::endl; + std::istringstream is_compressed(os_compressed.str(), std::ios::binary); + std::ostringstream os_decompressed(std::ios::binary); + decompressZlib(is_compressed, os_decompressed); + infostream<<"Test: Output size of large decompressZlib is " + <<os_decompressed.str().size()<<std::endl; + std::string str_decompressed = os_decompressed.str(); + UTEST(str_decompressed.size() == data_in.size(), "Output size not" + " equal (output: %i, input: %i)", + str_decompressed.size(), data_in.size()); + for(u32 i=0; i<size && i<str_decompressed.size(); i++){ + UTEST(str_decompressed[i] == data_in[i], + "index out[%i]=%i differs from in[%i]=%i", + i, str_decompressed[i], i, data_in[i]); + } + } } }; |