| 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 | static StaticString const content = | ||
| 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 | |||
| 35 | 6 | static void transcode_data_streams(Stream& instream, Stream& outstream) | |
| 36 | { | ||
| 37 | char buffer[128]; | ||
| 38 |
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))); |
| 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(outstream.flush()); |
| 40 | 6 | } | |
| 41 | |||
| 42 | template<class ENCODER, class DECODER> | ||
| 43 | 6 | void test_encoder_decoder() | |
| 44 | { | ||
| 45 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
12 | StringStream plainData(content); |
| 46 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
12 | StringStream encodedData; |
| 47 | |||
| 48 |
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( |
| 49 | Stream encoder = ENCODER::create(encodedData); | ||
| 50 | transcode_data_streams(plainData, encoder); | ||
| 51 | ); | ||
| 52 | |||
| 53 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
12 | StringStream decodedData; |
| 54 | |||
| 55 |
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( |
| 56 | Stream decoder = DECODER::create(encodedData); | ||
| 57 | transcode_data_streams(decoder, decodedData); | ||
| 58 | ); | ||
| 59 | |||
| 60 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
12 | String decodedText = decodedData.toString(); |
| 61 |
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); |
| 62 | |||
| 63 | 6 | } | |
| 64 | |||
| 65 | #if !defined(GATE_ENCODE_NO_ADVANCED_COMPRESSION) && defined(GATE_EXTLIB_BZIP2) | ||
| 66 | |||
| 67 |
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) |
| 68 | { | ||
| 69 | 2 | test_encoder_decoder<Bzip2Encoder, Bzip2Decoder>(); | |
| 70 | 2 | } | |
| 71 | |||
| 72 | #endif | ||
| 73 | |||
| 74 | #if !defined(GATE_ENCODE_NO_ADVANCED_COMPRESSION) && defined(GATE_EXTLIB_LZMA) | ||
| 75 | |||
| 76 | GATEXX_TEST_UNIT(Xz) | ||
| 77 | { | ||
| 78 | test_encoder_decoder<XzEncoder, XzDecoder>(); | ||
| 79 | } | ||
| 80 | |||
| 81 | #endif | ||
| 82 | |||
| 83 |
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) |
| 84 | { | ||
| 85 | 2 | test_encoder_decoder<ZlibEncoder, ZlibDecoder>(); | |
| 86 | |||
| 87 | 2 | test_encoder_decoder<GZipEncoder, GZipDecoder>(); | |
| 88 | 2 | } | |
| 89 | |||
| 90 |
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) |
| 91 | { | ||
| 92 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | MemFileStream zip_output; |
| 93 | { | ||
| 94 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | ZipWriter writer(zip_output); |
| 95 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ZipEntry entry; |
| 96 | |||
| 97 |
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"); |
| 98 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | entry.setSize(content.size()); |
| 99 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | entry.setAttributes(File::Attrib_File); |
| 100 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | entry.setAccessBits(File::Access_AllRead | File::Access_AllWrite); |
| 101 |
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()); |
| 102 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | writer.add(entry, content.c_str()); |
| 103 | |||
| 104 |
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"); |
| 105 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | writer.add(entry, content.c_str()); |
| 106 | |||
| 107 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | writer.flush(); |
| 108 | } | ||
| 109 | |||
| 110 | { | ||
| 111 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | MemFileStream zip_input = zip_output.share(); |
| 112 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | ZipReader reader(zip_input); |
| 113 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ZipEntry entry = reader.getFirstEntry(); |
| 114 |
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"); |
| 115 |
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()); |
| 116 | |||
| 117 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | const bool_t secondEntryFound = reader.getNextEntry(entry); |
| 118 |
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); |
| 119 |
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"); |
| 120 |
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()); |
| 121 | } | ||
| 122 | |||
| 123 | { | ||
| 124 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | MemFileStream zip_input = zip_output.share(); |
| 125 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | ZipReader reader(zip_input); |
| 126 |
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"); |
| 127 |
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"); |
| 128 |
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()); |
| 129 | |||
| 130 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | StringStream extractedData; |
| 131 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | reader.extractContent(extractedData); |
| 132 |
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()); |
| 133 | } | ||
| 134 | |||
| 135 | { | ||
| 136 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | MemFileStream zip_input = zip_output.share(); |
| 137 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | ZipReader reader(zip_input); |
| 138 |
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"); |
| 139 |
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"); |
| 140 |
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()); |
| 141 | |||
| 142 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
4 | StringStream extractedData; |
| 143 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | reader.extractContent(extractedData); |
| 144 |
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()); |
| 145 | } | ||
| 146 | |||
| 147 | 2 | } | |
| 148 |