1 #include "GZipFile.h"
2 
3 #include <iostream>
4 
5 #include <cppunit/extensions/HelperMacros.h>
6 
7 #include "File.h"
8 
9 namespace aria2 {
10 
11 class GZipFileTest : public CppUnit::TestFixture {
12 
13   CPPUNIT_TEST_SUITE(GZipFileTest);
14   CPPUNIT_TEST(testOpen);
15   CPPUNIT_TEST_SUITE_END();
16 
17 public:
18   void testOpen();
19 };
20 
21 CPPUNIT_TEST_SUITE_REGISTRATION(GZipFileTest);
22 
testOpen()23 void GZipFileTest::testOpen()
24 {
25   File f(A2_TEST_OUT_DIR "/aria2_GZipFileTest_testOpen");
26   f.remove();
27   GZipFile fail(f.getPath().c_str(), GZipFile::READ);
28   CPPUNIT_ASSERT(!fail);
29 
30   GZipFile wr(f.getPath().c_str(), GZipFile::WRITE);
31   CPPUNIT_ASSERT(wr);
32   std::string msg = "aria2 rules\nalpha\nbravo\ncharlie";
33   wr.write(msg.data(), msg.size());
34   wr.close();
35 
36   GZipFile rd(f.getPath().c_str(), GZipFile::READ);
37   char buf[256];
38   size_t len = rd.read(buf, 11);
39   CPPUNIT_ASSERT_EQUAL((size_t)11, len);
40   buf[len] = '\0';
41   CPPUNIT_ASSERT_EQUAL(std::string("aria2 rules"), std::string(buf));
42 
43   CPPUNIT_ASSERT(rd.gets(buf, sizeof(buf)));
44   CPPUNIT_ASSERT_EQUAL(std::string("\n"), std::string(buf));
45 
46   CPPUNIT_ASSERT(rd.gets(buf, sizeof(buf)));
47   CPPUNIT_ASSERT_EQUAL(std::string("alpha\n"), std::string(buf));
48 
49   CPPUNIT_ASSERT(rd.getsn(buf, sizeof(buf)));
50   CPPUNIT_ASSERT_EQUAL(std::string("bravo"), std::string(buf));
51 
52   CPPUNIT_ASSERT(rd.getsn(buf, sizeof(buf)));
53   CPPUNIT_ASSERT_EQUAL(std::string("charlie"), std::string(buf));
54 
55   CPPUNIT_ASSERT(rd.eof());
56 }
57 
58 } // namespace aria2
59