v / vlib / compress / snappy / snappy_samples_test.v
68 lines · 46 sloc · 1.8 KB · a2be3749cecadd4d63802c9f14cbe20e04cc39fa
Raw
1module snappy
2
3import os
4import benchmark
5
6const samples_folder = os.join_path(os.dir(@FILE), 'samples')
7
8fn s(fname string) string {
9 return os.join_path(samples_folder, fname)
10}
11
12fn test_framing_compress_decompress_alice() {
13 alice := os.read_bytes(s('alice29.txt'))!
14
15 alice_compressed := encode_stream(alice)
16 assert decode_stream(alice_compressed)! == alice, 'compressed alice should be the same as decompressed'
17}
18
19fn test_precompressed_framing_alice() {
20 alice_compressed := os.read_bytes(s('alice29_framing.snappy'))!
21 alice := os.read_bytes(s('alice29.txt'))!
22
23 // Normalize line endings before comparing
24 decompressed_str := decode_stream(alice_compressed)!.bytestr().replace('\r\n', '\n')
25 alice_str := alice.bytestr().replace('\r\n', '\n')
26
27 assert decompressed_str == alice_str, 'compressed alice should be the same as decompressed'
28}
29
30fn test_benchmark_framing_alice() {
31 alice := os.read_bytes(s('alice29.txt'))!
32
33 mut b := benchmark.start()
34
35 encode_stream(alice)
36
37 b.measure('framing_alice')
38}
39
40fn test_benchmark_block_alice() {
41 alice := os.read_bytes(s('alice29.txt'))!
42
43 mut b := benchmark.start()
44
45 compress(alice)
46
47 b.measure('block_alice')
48}
49
50fn test_block_compress_decompress_alice() {
51 alice := os.read_bytes(s('alice29.txt'))!
52
53 alice_compressed := compress(alice)
54 assert decompress(alice_compressed)! == alice, 'compressed alice should be the same as decompressed'
55}
56
57fn test_precompressed_block_alice() {
58 alice_compressed := os.read_bytes(s('alice29_block.snappy'))!
59 alice := os.read_bytes(s('alice29.txt'))!
60
61 decompressed := decompress(alice_compressed)!
62
63 // Normalize line endings before comparing
64 decompressed_str := decompressed.bytestr().replace('\r\n', '\n')
65 alice_str := alice.bytestr().replace('\r\n', '\n')
66
67 assert decompressed_str == alice_str, 'compressed alice should be the same as decompressed'
68}
69