OLD | NEW |
| (Empty) |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #if defined(USE_SYSTEM_LIBBZ2) | |
6 #include <bzlib.h> | |
7 #else | |
8 #include "third_party/bzip2/bzlib.h" | |
9 #endif | |
10 | |
11 #include "base/basictypes.h" | |
12 #include "testing/gtest/include/gtest/gtest.h" | |
13 | |
14 namespace { | |
15 class Bzip2Test : public testing::Test { | |
16 }; | |
17 }; | |
18 | |
19 // This test does a simple round trip to test that the bzip2 library is | |
20 // present and working. | |
21 TEST(Bzip2Test, Roundtrip) { | |
22 char input[] = "Test Data, More Test Data, Even More Data of Test"; | |
23 char output[256]; | |
24 | |
25 memset(output, 0, arraysize(output)); | |
26 | |
27 bz_stream stream; | |
28 stream.bzalloc = NULL; | |
29 stream.bzfree = NULL; | |
30 stream.opaque = NULL; | |
31 int result = BZ2_bzCompressInit(&stream, | |
32 9, // 900k block size | |
33 0, // quiet | |
34 0); // default work factor | |
35 ASSERT_EQ(BZ_OK, result); | |
36 | |
37 stream.next_in = input; | |
38 stream.avail_in = arraysize(input) - 1; | |
39 stream.next_out = output; | |
40 stream.avail_out = arraysize(output); | |
41 do { | |
42 result = BZ2_bzCompress(&stream, BZ_FINISH); | |
43 } while (result == BZ_FINISH_OK); | |
44 ASSERT_EQ(BZ_STREAM_END, result); | |
45 result = BZ2_bzCompressEnd(&stream); | |
46 ASSERT_EQ(BZ_OK, result); | |
47 int written = stream.total_out_lo32; | |
48 | |
49 // Make sure we wrote something; otherwise not sure what to expect | |
50 ASSERT_GT(written, 0); | |
51 | |
52 // Now decompress and check that we got the same thing. | |
53 result = BZ2_bzDecompressInit(&stream, 0, 0); | |
54 ASSERT_EQ(BZ_OK, result); | |
55 char output2[256]; | |
56 memset(output2, 0, arraysize(output2)); | |
57 | |
58 stream.next_in = output; | |
59 stream.avail_in = written; | |
60 stream.next_out = output2; | |
61 stream.avail_out = arraysize(output2); | |
62 | |
63 do { | |
64 result = BZ2_bzDecompress(&stream); | |
65 } while (result == BZ_OK); | |
66 ASSERT_EQ(result, BZ_STREAM_END); | |
67 result = BZ2_bzDecompressEnd(&stream); | |
68 ASSERT_EQ(result, BZ_OK); | |
69 | |
70 EXPECT_EQ(arraysize(input) - 1, stream.total_out_lo32); | |
71 EXPECT_STREQ(input, output2); | |
72 } | |
OLD | NEW |