Mercurial > code
annotate C++/Tests/Zip/main.cpp @ 307:e2a8cbf2dd79
Utf8:
* Add unit tests
* Rename toucs -> toutf32
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 10 Dec 2014 10:39:38 +0100 |
parents | 2ff6559c5f1d |
children | cd490a8ab82a |
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 * |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013, 2014 David Demelier <markand@malikania.fr> |
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 | 25 /* -------------------------------------------------------- |
26 * File source | |
27 * -------------------------------------------------------- */ | |
28 | |
29 TEST(Source, file) | |
30 { | |
31 remove(BINARY "/output.zip"); | |
32 | |
33 try { | |
34 ZipArchive archive{BINARY "/output.zip", ZIP_CREATE}; | |
35 | |
36 archive.add(File{SOURCE "/data/data.txt"}, "data.txt"); | |
37 } catch (const std::exception &ex) { | |
38 std::cerr << ex.what() << std::endl; | |
39 } | |
40 | |
41 try { | |
42 ZipArchive archive{BINARY "/output.zip"}; | |
43 | |
44 auto stats = archive.stat("data.txt"); | |
45 auto file = archive.open("data.txt"); | |
46 auto content = file.read(stats.size); | |
47 | |
48 ASSERT_EQ("abcdef\n", content); | |
49 } catch (const std::exception &ex) { | |
50 std::cerr << ex.what() << std::endl; | |
51 } | |
52 } | |
53 | |
54 TEST(Source, buffer) | |
55 { | |
56 remove(BINARY "/output.zip"); | |
57 | |
58 try { | |
59 ZipArchive archive{BINARY "/output.zip", ZIP_CREATE}; | |
60 | |
61 archive.add(Buffer{"abcdef"}, "data.txt"); | |
62 } catch (const std::exception &ex) { | |
63 std::cerr << ex.what() << std::endl; | |
64 } | |
65 | |
66 try { | |
67 ZipArchive archive{BINARY "/output.zip"}; | |
68 | |
69 auto stats = archive.stat("data.txt"); | |
70 auto file = archive.open("data.txt"); | |
71 auto content = file.read(stats.size); | |
72 | |
73 ASSERT_EQ("abcdef", content); | |
74 } catch (const std::exception &ex) { | |
75 std::cerr << ex.what() << std::endl; | |
76 } | |
77 } | |
78 | |
79 /* -------------------------------------------------------- | |
80 * Basic | |
81 * -------------------------------------------------------- */ | |
82 | |
83 TEST(Basic, numEntries) | |
84 { | |
85 try { | |
86 ZipArchive archive{SOURCE "/data/stats.zip"}; | |
87 | |
88 ASSERT_EQ(static_cast<ZipInt64>(1), archive.numEntries()); | |
89 } catch (const std::exception &ex) { | |
90 std::cerr << ex.what() << std::endl; | |
91 } | |
92 } | |
93 | |
281
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 TEST(Basic, stat) |
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 { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 ZipArchive archive{SOURCE "/data/stats.zip"}; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 ZipStat stats = archive.stat("README"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 ASSERT_EQ(static_cast<decltype(stats.size)>(15), stats.size); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 ASSERT_STREQ("README", stats.name); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 } catch (const std::exception &ex) { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 std::cerr << ex.what() << std::endl; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 TEST(Basic, read) |
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 try { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 ZipArchive archive{SOURCE "/data/stats.zip"}; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 auto file = archive.open("README"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 auto stats = archive.stat("README"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 auto text = file.read(stats.size); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 ASSERT_EQ("This is a test\n", text); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 } catch (const std::exception &ex) { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 std::cerr << "warning: " << ex.what() << std::endl; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 TEST(Basic, write) |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 remove(BINARY "/output.zip"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 // Open first and save some data |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 try { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 ZipArchive archive{BINARY "/output.zip", ZIP_CREATE}; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 archive.add(Buffer{"hello world!"}, "DATA"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 } catch (const std::exception &ex) { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 std::cerr << "warning: " << ex.what() << std::endl; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 try { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 ZipArchive archive{BINARY "/output.zip"}; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 auto stats = archive.stat("DATA"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 auto file = archive.open("DATA"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 auto content = file.read(stats.size); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 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
|
143 ASSERT_EQ("hello world!", content); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 } catch (const std::exception &ex) { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
145 std::cerr << "warning: " << ex.what() << std::endl; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 int main(int argc, char **argv) |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 testing::InitGoogleTest(&argc, argv); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 return RUN_ALL_TESTS(); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 } |