13 def test_bounds(self): |
13 def test_bounds(self): |
14 zstd.ZstdCompressionParameters(window_log=zstd.WINDOWLOG_MIN, |
14 zstd.ZstdCompressionParameters(window_log=zstd.WINDOWLOG_MIN, |
15 chain_log=zstd.CHAINLOG_MIN, |
15 chain_log=zstd.CHAINLOG_MIN, |
16 hash_log=zstd.HASHLOG_MIN, |
16 hash_log=zstd.HASHLOG_MIN, |
17 search_log=zstd.SEARCHLOG_MIN, |
17 search_log=zstd.SEARCHLOG_MIN, |
18 min_match=zstd.SEARCHLENGTH_MIN + 1, |
18 min_match=zstd.MINMATCH_MIN + 1, |
19 target_length=zstd.TARGETLENGTH_MIN, |
19 target_length=zstd.TARGETLENGTH_MIN, |
20 compression_strategy=zstd.STRATEGY_FAST) |
20 strategy=zstd.STRATEGY_FAST) |
21 |
21 |
22 zstd.ZstdCompressionParameters(window_log=zstd.WINDOWLOG_MAX, |
22 zstd.ZstdCompressionParameters(window_log=zstd.WINDOWLOG_MAX, |
23 chain_log=zstd.CHAINLOG_MAX, |
23 chain_log=zstd.CHAINLOG_MAX, |
24 hash_log=zstd.HASHLOG_MAX, |
24 hash_log=zstd.HASHLOG_MAX, |
25 search_log=zstd.SEARCHLOG_MAX, |
25 search_log=zstd.SEARCHLOG_MAX, |
26 min_match=zstd.SEARCHLENGTH_MAX - 1, |
26 min_match=zstd.MINMATCH_MAX - 1, |
27 target_length=zstd.TARGETLENGTH_MAX, |
27 target_length=zstd.TARGETLENGTH_MAX, |
28 compression_strategy=zstd.STRATEGY_BTULTRA) |
28 strategy=zstd.STRATEGY_BTULTRA2) |
29 |
29 |
30 def test_from_level(self): |
30 def test_from_level(self): |
31 p = zstd.ZstdCompressionParameters.from_level(1) |
31 p = zstd.ZstdCompressionParameters.from_level(1) |
32 self.assertIsInstance(p, zstd.CompressionParameters) |
32 self.assertIsInstance(p, zstd.CompressionParameters) |
33 |
33 |
41 chain_log=6, |
41 chain_log=6, |
42 hash_log=7, |
42 hash_log=7, |
43 search_log=4, |
43 search_log=4, |
44 min_match=5, |
44 min_match=5, |
45 target_length=8, |
45 target_length=8, |
46 compression_strategy=1) |
46 strategy=1) |
47 self.assertEqual(p.window_log, 10) |
47 self.assertEqual(p.window_log, 10) |
48 self.assertEqual(p.chain_log, 6) |
48 self.assertEqual(p.chain_log, 6) |
49 self.assertEqual(p.hash_log, 7) |
49 self.assertEqual(p.hash_log, 7) |
50 self.assertEqual(p.search_log, 4) |
50 self.assertEqual(p.search_log, 4) |
51 self.assertEqual(p.min_match, 5) |
51 self.assertEqual(p.min_match, 5) |
57 |
57 |
58 p = zstd.ZstdCompressionParameters(threads=4) |
58 p = zstd.ZstdCompressionParameters(threads=4) |
59 self.assertEqual(p.threads, 4) |
59 self.assertEqual(p.threads, 4) |
60 |
60 |
61 p = zstd.ZstdCompressionParameters(threads=2, job_size=1048576, |
61 p = zstd.ZstdCompressionParameters(threads=2, job_size=1048576, |
62 overlap_size_log=6) |
62 overlap_log=6) |
63 self.assertEqual(p.threads, 2) |
63 self.assertEqual(p.threads, 2) |
64 self.assertEqual(p.job_size, 1048576) |
64 self.assertEqual(p.job_size, 1048576) |
|
65 self.assertEqual(p.overlap_log, 6) |
65 self.assertEqual(p.overlap_size_log, 6) |
66 self.assertEqual(p.overlap_size_log, 6) |
66 |
67 |
67 p = zstd.ZstdCompressionParameters(compression_level=-1) |
68 p = zstd.ZstdCompressionParameters(compression_level=-1) |
68 self.assertEqual(p.compression_level, -1) |
69 self.assertEqual(p.compression_level, -1) |
69 |
70 |
83 self.assertEqual(p.ldm_min_match, 6) |
84 self.assertEqual(p.ldm_min_match, 6) |
84 |
85 |
85 p = zstd.ZstdCompressionParameters(ldm_bucket_size_log=7) |
86 p = zstd.ZstdCompressionParameters(ldm_bucket_size_log=7) |
86 self.assertEqual(p.ldm_bucket_size_log, 7) |
87 self.assertEqual(p.ldm_bucket_size_log, 7) |
87 |
88 |
88 p = zstd.ZstdCompressionParameters(ldm_hash_every_log=8) |
89 p = zstd.ZstdCompressionParameters(ldm_hash_rate_log=8) |
89 self.assertEqual(p.ldm_hash_every_log, 8) |
90 self.assertEqual(p.ldm_hash_every_log, 8) |
|
91 self.assertEqual(p.ldm_hash_rate_log, 8) |
90 |
92 |
91 def test_estimated_compression_context_size(self): |
93 def test_estimated_compression_context_size(self): |
92 p = zstd.ZstdCompressionParameters(window_log=20, |
94 p = zstd.ZstdCompressionParameters(window_log=20, |
93 chain_log=16, |
95 chain_log=16, |
94 hash_log=17, |
96 hash_log=17, |
95 search_log=1, |
97 search_log=1, |
96 min_match=5, |
98 min_match=5, |
97 target_length=16, |
99 target_length=16, |
98 compression_strategy=zstd.STRATEGY_DFAST) |
100 strategy=zstd.STRATEGY_DFAST) |
99 |
101 |
100 # 32-bit has slightly different values from 64-bit. |
102 # 32-bit has slightly different values from 64-bit. |
101 self.assertAlmostEqual(p.estimated_compression_context_size(), 1294072, |
103 self.assertAlmostEqual(p.estimated_compression_context_size(), 1294072, |
102 delta=250) |
104 delta=250) |
|
105 |
|
106 def test_strategy(self): |
|
107 with self.assertRaisesRegexp(ValueError, 'cannot specify both compression_strategy'): |
|
108 zstd.ZstdCompressionParameters(strategy=0, compression_strategy=0) |
|
109 |
|
110 p = zstd.ZstdCompressionParameters(strategy=2) |
|
111 self.assertEqual(p.compression_strategy, 2) |
|
112 |
|
113 p = zstd.ZstdCompressionParameters(strategy=3) |
|
114 self.assertEqual(p.compression_strategy, 3) |
|
115 |
|
116 def test_ldm_hash_rate_log(self): |
|
117 with self.assertRaisesRegexp(ValueError, 'cannot specify both ldm_hash_rate_log'): |
|
118 zstd.ZstdCompressionParameters(ldm_hash_rate_log=8, ldm_hash_every_log=4) |
|
119 |
|
120 p = zstd.ZstdCompressionParameters(ldm_hash_rate_log=8) |
|
121 self.assertEqual(p.ldm_hash_every_log, 8) |
|
122 |
|
123 p = zstd.ZstdCompressionParameters(ldm_hash_every_log=16) |
|
124 self.assertEqual(p.ldm_hash_every_log, 16) |
|
125 |
|
126 def test_overlap_log(self): |
|
127 with self.assertRaisesRegexp(ValueError, 'cannot specify both overlap_log'): |
|
128 zstd.ZstdCompressionParameters(overlap_log=1, overlap_size_log=9) |
|
129 |
|
130 p = zstd.ZstdCompressionParameters(overlap_log=2) |
|
131 self.assertEqual(p.overlap_log, 2) |
|
132 self.assertEqual(p.overlap_size_log, 2) |
|
133 |
|
134 p = zstd.ZstdCompressionParameters(overlap_size_log=4) |
|
135 self.assertEqual(p.overlap_log, 4) |
|
136 self.assertEqual(p.overlap_size_log, 4) |
103 |
137 |
104 |
138 |
105 @make_cffi |
139 @make_cffi |
106 class TestFrameParameters(unittest.TestCase): |
140 class TestFrameParameters(unittest.TestCase): |
107 def test_invalid_type(self): |
141 def test_invalid_type(self): |