diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-06-29 14:29:36 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-06-29 14:29:36 +0000 |
| commit | d791807addd686660fd75d721b3cb0cf14d52f67 (patch) | |
| tree | c882dc44d5456d37fb8738e53cc46618b1b87bab /test/GZipDecoderTest.cc | |
| parent | 6c4dd16c82fe8dadd7a598cca998b4273436f0bd (diff) | |
2008-06-29 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added gzip, deflate decoding support in HTTP using libz. If
compiled
with this feature, aria2 sends "Accept-Encoding: deflate, gzip"
header
to a HTTP server. If a server returns "Content-Encoding: gzip"
or
"Content-Encoding: deflate" then, aria2 decodes the response
body on the
fly and writes decoded data to a local disk.
* README
* README.html
* configure.ac
* m4/aria2_arg.m4: Added ARIA2_ARG_WITH and ARIA2_ARG_ENABLE,
they are
wrapper function for AC_ARG_WITH and AC_ARG_ENABLE respectively.
* m4/libz.m4
* src/Decoder.h
* src/DownloadCommand.cc
* src/DownloadCommand.h
* src/Exception.h
* src/GZipDecoder.cc
* src/GZipDecoder.h
* src/HttpHeader.cc
* src/HttpHeader.h
* src/HttpRequest.cc
* src/HttpRequest.h
* src/HttpResponse.cc
* src/HttpResponse.h
* src/HttpResponseCommand.cc
* src/Makefile.am
* test/GZipDecoderTest.cc
* test/HttpRequestTest.cc
* test/HttpResponseTest.cc
* test/Makefile.am
* test/Makefile.in
* test/gzip_decode_test.gz
Diffstat (limited to 'test/GZipDecoderTest.cc')
| -rw-r--r-- | test/GZipDecoderTest.cc | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/test/GZipDecoderTest.cc b/test/GZipDecoderTest.cc new file mode 100644 index 00000000..7b7eaf49 --- /dev/null +++ b/test/GZipDecoderTest.cc @@ -0,0 +1,59 @@ +#include "GZipDecoder.h" +#include "Exception.h" +#include "Util.h" +#ifdef ENABLE_MESSAGE_DIGEST +# include "MessageDigestHelper.h" +#endif // ENABLE_MESSAGE_DIGEST +#include <iostream> +#include <fstream> +#include <cppunit/extensions/HelperMacros.h> + +namespace aria2 { + +class GZipDecoderTest:public CppUnit::TestFixture { + + CPPUNIT_TEST_SUITE(GZipDecoderTest); + CPPUNIT_TEST(testDecode); + CPPUNIT_TEST_SUITE_END(); +public: + void setUp() {} + + void tearDown() {} + + void testDecode(); +}; + + +CPPUNIT_TEST_SUITE_REGISTRATION(GZipDecoderTest); + +void GZipDecoderTest::testDecode() +{ + GZipDecoder decoder; + decoder.init(); + + std::string outfile("/tmp/aria2_GZipDecoderTest_testDecode"); + + char buf[4096]; + std::ifstream in("gzip_decode_test.gz"); + std::ofstream out(outfile.c_str()); + while(in) { + in.read(buf, sizeof(buf)); + + std::string r = decoder.decode + (reinterpret_cast<const unsigned char*>(buf), in.gcount()); + + out.write(r.data(), r.size()); + } + CPPUNIT_ASSERT(decoder.finished()); + decoder.release(); + + out.close(); + +#ifdef ENABLE_MESSAGE_DIGEST + CPPUNIT_ASSERT_EQUAL(std::string("8b577b33c0411b2be9d4fa74c7402d54a8d21f96"), + MessageDigestHelper::digest(MessageDigestContext::SHA1, + outfile)); +#endif // ENABLE_MESSAGE_DIGEST +} + +} // namespace aria2 |
