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