Line | Branch | Exec | Source |
---|---|---|---|
1 | #include "gate/tests.hpp" | ||
2 | #include "gate/encode/zlibstreams.hpp" | ||
3 | #include "gate/encode/zipstreams.hpp" | ||
4 | |||
5 | #if !defined(GATE_ENCODE_NO_ADVANCED_COMPRESSION) | ||
6 | #include "gate/encode/bzip2streams.hpp" | ||
7 | #include "gate/encode/xzstreams.hpp" | ||
8 | #endif | ||
9 | |||
10 | using namespace gate; | ||
11 | using namespace gate::enc; | ||
12 | |||
13 | char const content_text[] = | ||
14 | "What is Lorem Ipsum? " | ||
15 | "Lorem Ipsum is simply dummy text of the printing and typesetting industry. " | ||
16 | "Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, " | ||
17 | "when an unknown printer took a galley of type and scrambled it to make a type " | ||
18 | "specimen book. It has survived not only five centuries, but also the leap into " | ||
19 | "electronic typesetting, remaining essentially unchanged. It was popularised " | ||
20 | "in the 1960s with the release of Letraset sheets containing Lorem Ipsum " | ||
21 | "passages, and more recently with desktop publishing software like " | ||
22 | "Aldus PageMaker including versions of Lorem Ipsum." | ||
23 | "Why do we use it? " | ||
24 | "It is a long established fact that a reader will be distracted by the " | ||
25 | "readable content of a page when looking at its layout. The point of using " | ||
26 | "Lorem Ipsum is that it has a more-or-less normal distribution of letters, " | ||
27 | "as opposed to using 'Content here, content here', making it look like readable " | ||
28 | "English. Many desktop publishing packages and web page editors now use " | ||
29 | "Lorem Ipsum as their default model text, and a search for 'lorem ipsum' " | ||
30 | "will uncover many web sites still in their infancy. Various versions have " | ||
31 | "evolved over the years, sometimes by accident, sometimes on purpose " | ||
32 | "(injected humour and the like)."; | ||
33 | |||
34 | static String const content = String::createStaticFrom(content_text); | ||
35 | |||
36 | 6 | static void transcode_data_streams(Stream& instream, Stream& outstream) | |
37 | { | ||
38 | char buffer[128]; | ||
39 |
4/14✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
6 | GATEXX_TEST_CHECK_NOTHROW(Stream::transferViaBuffer(instream, outstream, buffer, sizeof(buffer))); |
40 |
4/14✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
6 | GATEXX_TEST_CHECK_NOTHROW(outstream.flush()); |
41 | 6 | } | |
42 | |||
43 | template<class ENCODER, class DECODER> | ||
44 | 6 | void test_encoder_decoder() | |
45 | { | ||
46 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
12 | StringStream plainData(content); |
47 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
12 | StringStream encodedData; |
48 | |||
49 |
5/16✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
6 | GATEXX_TEST_CHECK_NOTHROW( |
50 | Stream encoder = ENCODER::create(encodedData); | ||
51 | transcode_data_streams(plainData, encoder); | ||
52 | ); | ||
53 | |||
54 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
12 | StringStream decodedData; |
55 | |||
56 |
5/16✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
6 | GATEXX_TEST_CHECK_NOTHROW( |
57 | Stream decoder = DECODER::create(encodedData); | ||
58 | transcode_data_streams(decoder, decodedData); | ||
59 | ); | ||
60 | |||
61 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
12 | String decodedText = decodedData.toString(); |
62 |
4/12✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
|
6 | GATEXX_TEST_CHECK_EQUAL(content, decodedText); |
63 | |||
64 | 6 | } | |
65 | |||
66 | #if !defined(GATE_ENCODE_NO_ADVANCED_COMPRESSION) && defined(GATE_EXTLIB_BZIP2) | ||
67 | |||
68 |
2/7✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
6 | GATEXX_TEST_UNIT(Bzip2) |
69 | { | ||
70 | 2 | test_encoder_decoder<Bzip2Encoder, Bzip2Decoder>(); | |
71 | 2 | } | |
72 | |||
73 | #endif | ||
74 | |||
75 | #if !defined(GATE_ENCODE_NO_ADVANCED_COMPRESSION) && defined(GATE_EXTLIB_LZMA) | ||
76 | |||
77 | GATEXX_TEST_UNIT(Xz) | ||
78 | { | ||
79 | test_encoder_decoder<XzEncoder, XzDecoder>(); | ||
80 | } | ||
81 | |||
82 | #endif | ||
83 | |||
84 |
2/7✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
6 | GATEXX_TEST_UNIT(Zlib) |
85 | { | ||
86 | 2 | test_encoder_decoder<ZlibEncoder, ZlibDecoder>(); | |
87 | |||
88 | 2 | test_encoder_decoder<GZipEncoder, GZipDecoder>(); | |
89 | 2 | } | |
90 | |||
91 |
2/7✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
6 | GATEXX_TEST_UNIT(Zip) |
92 | { | ||
93 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | MemFileStream zip_output; |
94 | { | ||
95 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | ZipWriter writer(zip_output); |
96 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ZipEntry entry; |
97 | |||
98 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | entry.setPath("/test.txt"); |
99 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | entry.setSize(content.size()); |
100 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | entry.setAttributes(File::Attrib_File); |
101 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | entry.setAccessBits(File::Access_AllRead | File::Access_AllWrite); |
102 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | entry.setModifiedDate(Time::now()); |
103 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | writer.add(entry, content.c_str()); |
104 | |||
105 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | entry.setPath("/test2.txt"); |
106 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | writer.add(entry, content.c_str()); |
107 | |||
108 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | writer.flush(); |
109 | } | ||
110 | |||
111 | { | ||
112 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | MemFileStream zip_input = zip_output.share(); |
113 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | ZipReader reader(zip_input); |
114 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ZipEntry entry = reader.getFirstEntry(); |
115 |
6/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(entry.getPath(), "/test.txt"); |
116 |
5/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(entry.getSize(), content.size()); |
117 | |||
118 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | const bool_t secondEntryFound = reader.getNextEntry(entry); |
119 |
4/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
2 | GATEXX_TEST_CHECK(secondEntryFound); |
120 |
6/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(entry.getPath(), "/test2.txt"); |
121 |
5/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(entry.getSize(), content.size()); |
122 | } | ||
123 | |||
124 | { | ||
125 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | MemFileStream zip_input = zip_output.share(); |
126 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | ZipReader reader(zip_input); |
127 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | ZipEntry entry = reader.findEntry("/test.txt"); |
128 |
6/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(entry.getPath(), "/test.txt"); |
129 |
5/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(entry.getSize(), content.size()); |
130 | |||
131 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | StringStream extractedData; |
132 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | reader.extractContent(extractedData); |
133 |
5/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(content, extractedData.toView()); |
134 | } | ||
135 | |||
136 | { | ||
137 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | MemFileStream zip_input = zip_output.share(); |
138 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | ZipReader reader(zip_input); |
139 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | ZipEntry entry = reader.findEntry("/test2.txt"); |
140 |
6/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(entry.getPath(), "/test2.txt"); |
141 |
5/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(entry.getSize(), content.size()); |
142 | |||
143 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | StringStream extractedData; |
144 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | reader.extractContent(extractedData); |
145 |
5/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
2 | GATEXX_TEST_CHECK_EQUAL(content, extractedData.toView()); |
146 | } | ||
147 | |||
148 | 2 | } | |
149 |