annotate C++/tests/Zip/main.cpp @ 485:898d8b29a4f1

Switch to lowercase filenames
author David Demelier <markand@malikania.fr>
date Thu, 12 Nov 2015 21:53:36 +0100
parents d5ec1174b707
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
281
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test the zip wrapper functions
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
403
d5ec1174b707 Massive cleanup
David Demelier <markand@malikania.fr>
parents: 345
diff changeset
4 * Copyright (c) 2013-2015 David Demelier <markand@malikania.fr>
281
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <gtest/gtest.h>
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <ZipArchive.h>
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 using namespace source;
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
25 /* --------------------------------------------------------
313
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
26 * Sources
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
27 * -------------------------------------------------------- */
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
28
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
29 TEST(Source, file)
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
30 {
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
31 remove("output.zip");
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
32
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
33 try {
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
34 ZipArchive archive("output.zip", ZIP_CREATE);
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
35
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
36 archive.add(File("Zip/data.txt"), "data.txt");
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
37 } catch (const std::exception &ex) {
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
38 std::cerr << ex.what() << std::endl;
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
39 }
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
40
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
41 try {
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
42 ZipArchive archive("output.zip");
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
43
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
44 auto stats = archive.stat("data.txt");
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
45 auto file = archive.open("data.txt");
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
46 auto content = file.read(stats.size);
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
47
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
48 ASSERT_EQ("abcdef\n", content);
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
49 } catch (const std::exception &ex) {
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
50 std::cerr << ex.what() << std::endl;
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
51 }
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
52 }
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
53
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
54 TEST(Source, buffer)
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
55 {
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
56 remove("output.zip");
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
57
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
58 try {
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
59 ZipArchive archive{"output.zip", ZIP_CREATE};
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
60
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
61 archive.add(Buffer{"abcdef"}, "data.txt");
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
62 } catch (const std::exception &ex) {
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
63 std::cerr << ex.what() << std::endl;
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
64 }
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
65
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
66 try {
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
67 ZipArchive archive{"output.zip"};
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
68
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
69 auto stats = archive.stat("data.txt");
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
70 auto file = archive.open("data.txt");
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
71 auto content = file.read(stats.size);
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
72
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
73 ASSERT_EQ("abcdef", content);
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
74 } catch (const std::exception &ex) {
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
75 std::cerr << ex.what() << std::endl;
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
76 }
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
77 }
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
78
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
79 /* --------------------------------------------------------
313
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
80 * Write
286
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
81 * -------------------------------------------------------- */
2ff6559c5f1d Zip: add more tests
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
82
313
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
83 TEST(Write, simple)
281
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 {
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
85 remove("output.zip");
281
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 // Open first and save some data
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 try {
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
89 ZipArchive archive("output.zip", ZIP_CREATE);
281
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
91 archive.add(Buffer("hello world!"), "DATA");
281
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 } catch (const std::exception &ex) {
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 std::cerr << "warning: " << ex.what() << std::endl;
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 }
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 try {
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
97 ZipArchive archive("output.zip");
281
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 auto stats = archive.stat("DATA");
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 auto file = archive.open("DATA");
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 auto content = file.read(stats.size);
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 ASSERT_EQ(static_cast<decltype(stats.size)>(12), stats.size);
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 ASSERT_EQ("hello world!", content);
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 } catch (const std::exception &ex) {
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 std::cerr << "warning: " << ex.what() << std::endl;
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 }
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 }
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
345
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
110 TEST(Write, notexist)
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
111 {
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
112 remove("output.zip");
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
113
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
114 try {
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
115 ZipArchive archive("output.zip", ZIP_CREATE);
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
116
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
117 /*
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
118 * According to the libzip, adding a file that does not exists
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
119 * on the disk is not an error.
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
120 */
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
121 archive.add(File("file_not_exist"), "FILE");
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
122 } catch (const std::exception &ex) {
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
123 FAIL() << ex.what();
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
124 }
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
125 }
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
126
313
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
127 /* --------------------------------------------------------
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
128 * Reading
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
129 * -------------------------------------------------------- */
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
130
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
131 class ReadingTest : public testing::Test {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
132 protected:
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
133 ZipArchive m_archive;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
134
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
135 public:
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
136 ReadingTest()
334
0b576ee64d45 * Create brand new hierarchy
David Demelier <markand@malikania.fr>
parents: 313
diff changeset
137 : m_archive("Zip/stats.zip")
313
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
138 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
139 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
140 };
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
141
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
142 TEST_F(ReadingTest, numEntries)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
143 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
144 ASSERT_EQ(static_cast<ZipInt64>(4), m_archive.numEntries());
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
145 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
146
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
147 TEST_F(ReadingTest, stat)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
148 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
149 try {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
150 ZipStat stats = m_archive.stat("README");
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
151
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
152 ASSERT_EQ(static_cast<decltype(stats.size)>(15), stats.size);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
153 ASSERT_STREQ("README", stats.name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
154 } catch (const std::exception &ex) {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
155 std::cerr << ex.what() << std::endl;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
156 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
157 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
158
345
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
159 TEST_F(ReadingTest, exists)
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
160 {
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
161 ASSERT_TRUE(m_archive.exists("README"));
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
162 }
c293dbe181c0 Zip: add exists() function
David Demelier <markand@malikania.fr>
parents: 334
diff changeset
163
313
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
164 TEST_F(ReadingTest, read)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
165 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
166 try {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
167 auto file = m_archive.open("README");
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
168 auto stats = m_archive.stat("README");
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
169 auto text = file.read(stats.size);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
170
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
171 ASSERT_EQ("This is a test\n", text);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
172 } catch (const std::exception &ex) {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
173 std::cerr << "warning: " << ex.what() << std::endl;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
174 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
175 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
176
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
177 TEST_F(ReadingTest, increment)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
178 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
179 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
180 ZipArchive::iterator it = m_archive.begin();
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
181
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
182 ASSERT_STREQ("README", (*it++).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
183 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
184
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
185 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
186 ZipArchive::iterator it = m_archive.begin();
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
187
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
188 ASSERT_STREQ("INSTALL", (*++it).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
189 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
190
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
191 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
192 ZipArchive::iterator it = m_archive.begin() + 1;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
193
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
194 ASSERT_STREQ("INSTALL", (*it).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
195 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
196 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
197
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
198 TEST_F(ReadingTest, decrement)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
199 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
200 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
201 ZipArchive::iterator it = m_archive.begin() + 1;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
202
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
203 ASSERT_STREQ("INSTALL", (*it--).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
204 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
205
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
206 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
207 ZipArchive::iterator it = m_archive.begin() + 1;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
208
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
209 ASSERT_STREQ("README", (*--it).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
210 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
211
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
212 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
213 ZipArchive::iterator it = m_archive.end() - 1;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
214
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
215 ASSERT_STREQ("doc/REFMAN", (*it).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
216 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
217 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
218
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
219 TEST_F(ReadingTest, constIncrement)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
220 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
221 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
222 ZipArchive::const_iterator it = m_archive.cbegin();
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
223
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
224 ASSERT_STREQ("README", (*it++).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
225 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
226
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
227 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
228 ZipArchive::const_iterator it = m_archive.cbegin();
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
229
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
230 ASSERT_STREQ("INSTALL", (*++it).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
231 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
232
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
233 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
234 ZipArchive::const_iterator it = m_archive.cbegin() + 1;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
235
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
236 ASSERT_STREQ("INSTALL", (*it).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
237 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
238 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
239
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
240 TEST_F(ReadingTest, constDecrement)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
241 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
242 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
243 ZipArchive::const_iterator it = m_archive.cbegin() + 1;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
244
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
245 ASSERT_STREQ("INSTALL", (*it--).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
246 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
247
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
248 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
249 ZipArchive::const_iterator it = m_archive.cbegin() + 1;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
250
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
251 ASSERT_STREQ("README", (*--it).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
252 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
253
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
254 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
255 ZipArchive::const_iterator it = m_archive.cend() - 1;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
256
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
257 ASSERT_STREQ("doc/REFMAN", (*it).name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
258 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
259 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
260
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
261 TEST_F(ReadingTest, access)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
262 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
263 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
264 ZipArchive::iterator it = m_archive.begin();
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
265
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
266 ASSERT_STREQ("README", it->name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
267 ASSERT_STREQ("INSTALL", it[1].name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
268 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
269
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
270 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
271 ZipArchive::const_iterator it = m_archive.cbegin();
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
272
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
273 ASSERT_STREQ("README", it->name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
274 ASSERT_STREQ("INSTALL", it[1].name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
275 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
276 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
277
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
278 TEST_F(ReadingTest, loop)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
279 {
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
280 std::vector<std::string> names{"README", "INSTALL", "doc/", "doc/REFMAN"};
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
281 int i = 0;
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
282
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
283 for (const ZipStat &s : m_archive)
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
284 ASSERT_STREQ(names[i++].c_str(), s.name);
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
285 }
cd490a8ab82a Zip: add iterators to ZipArchive
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
286
281
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 int main(int argc, char **argv)
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
288 {
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 testing::InitGoogleTest(&argc, argv);
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
290
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 return RUN_ALL_TESTS();
88f9d8b406c6 Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 }