Mercurial > code
annotate C++/Tests/Zip/main.cpp @ 281:88f9d8b406c6
Add Zip, safe wrapper around libzip
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 11 Nov 2014 14:03:42 +0100 |
parents | |
children | 2ff6559c5f1d |
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 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 TEST(Basic, stat) |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 try { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 ZipArchive archive{SOURCE "/data/stats.zip"}; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 ZipStat stats = archive.stat("README"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 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
|
32 ASSERT_STREQ("README", stats.name); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 } catch (const std::exception &ex) { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 std::cerr << ex.what() << std::endl; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 TEST(Basic, read) |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 try { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 ZipArchive archive{SOURCE "/data/stats.zip"}; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 auto file = archive.open("README"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 auto stats = archive.stat("README"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 auto text = file.read(stats.size); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 ASSERT_EQ("This is a test\n", text); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 } catch (const std::exception &ex) { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 std::cerr << "warning: " << ex.what() << std::endl; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 TEST(Basic, write) |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 remove(BINARY "/output.zip"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 // Open first and save some data |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 try { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 ZipArchive archive{BINARY "/output.zip", ZIP_CREATE}; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 archive.add(Buffer{"hello world!"}, "DATA"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 } catch (const std::exception &ex) { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 std::cerr << "warning: " << ex.what() << std::endl; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 try { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 ZipArchive archive{BINARY "/output.zip"}; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 auto stats = archive.stat("DATA"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 auto file = archive.open("DATA"); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 auto content = file.read(stats.size); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 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
|
74 ASSERT_EQ("hello world!", content); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 } catch (const std::exception &ex) { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 std::cerr << "warning: " << ex.what() << std::endl; |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 } |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 int main(int argc, char **argv) |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 { |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 testing::InitGoogleTest(&argc, argv); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 return RUN_ALL_TESTS(); |
88f9d8b406c6
Add Zip, safe wrapper around libzip
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 } |