-
Notifications
You must be signed in to change notification settings - Fork 1
/
bzip2_test.cc
72 lines (53 loc) · 1.87 KB
/
bzip2_test.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Copyright Stephan T. Lavavej, http://nuwen.net .
// Distributed under the Boost Software License, Version 1.0.
// See accompanying file LICENSE_1_0.txt or copy at
// http://boost.org/LICENSE_1_0.txt .
#include "bzip2.hh"
#include "clock.hh"
#include "file.hh"
#include "test.hh"
#include "typedef.hh"
#include "vector.hh"
#include "external_begin.hh"
#include <iostream>
#include <ostream>
#include <string>
#include "external_end.hh"
using namespace std;
using namespace nuwen;
using namespace nuwen::chrono;
using namespace nuwen::file;
bool test_helper(const vuc_t& orig, const vuc_t& correct) {
return bzip2(orig) == correct && unbzip2(correct) == orig;
}
bool test_empty() {
return test_helper(vuc_t(), vuc_from_hex("425A683917724538509000000000"));
}
bool test_basic() {
return test_helper(vuc_from_hex("48656C6C6F2C20776F726C6421"),
vuc_from_hex("425A68393141592653598E9A770600000195806004004006"
"0490802000220346210030B041E4B21F3F1772453850908E9A7706"));
}
bool test_extended(const string& filename) {
const vuc_t orig = read_file(filename);
watch w;
const vuc_t& compressed = bzip2(orig);
const double bzip2_time = w.seconds();
w.reset();
const vuc_t& decompressed = unbzip2(compressed);
const double unbzip2_time = w.seconds();
cout << " bzip2 (s): " << bzip2_time << endl;
cout << "unbzip2 (s): " << unbzip2_time << endl;
cout << " bzip2 (MB/s): " << orig.size() / bzip2_time / 1048576 << endl;
cout << "unbzip2 (MB/s): " << orig.size() / unbzip2_time / 1048576 << endl;
return decompressed == orig;
}
int main(int argc, char * argv[]) {
if (argc == 2) {
NUWEN_TEST("bzip2-1", test_empty())
NUWEN_TEST("bzip2-2", test_basic())
NUWEN_TEST("bzip2-3", test_extended(argv[1]))
} else {
cout << "USAGE: bzip2_test <filename>" << endl;
}
}