niffler_temp/
level.rs

1/// `Level` represent the compression level this value is include between 1 to 9.
2/// 1 optimize the compression time,
3/// 9 optimize the size of the output.
4///
5/// For bzip2:
6///  - `One` is convert in `bzip2::Compression::Fastest`,
7///  - `Nine` in `bzip2::Compression::Best`
8/// and other value is convert in `bzip2::Compression::Default.
9#[derive(Debug, PartialEq, Eq, Clone, Copy)]
10pub enum Level {
11    Zero,
12    One,
13    Two,
14    Three,
15    Four,
16    Five,
17    Six,
18    Seven,
19    Eight,
20    Nine,
21    Ten,
22    Eleven,
23    Twelve,
24    Thirteen,
25    Fourteen,
26    Fifteen,
27    Sixteen,
28    Seventeen,
29    Eighteen,
30    Nineteen,
31    Twenty,
32    TwentyOne,
33}
34
35impl From<Level> for u32 {
36    fn from(level: Level) -> Self {
37        match level {
38            Level::Zero => 0,
39            Level::One => 1,
40            Level::Two => 2,
41            Level::Three => 3,
42            Level::Four => 4,
43            Level::Five => 5,
44            Level::Six => 6,
45            Level::Seven => 7,
46            Level::Eight => 8,
47            Level::Nine => 9,
48            Level::Ten => 10,
49            Level::Eleven => 11,
50            Level::Twelve => 12,
51            Level::Thirteen => 13,
52            Level::Fourteen => 14,
53            Level::Fifteen => 15,
54            Level::Sixteen => 16,
55            Level::Seventeen => 17,
56            Level::Eighteen => 18,
57            Level::Nineteen => 19,
58            Level::Twenty => 20,
59            Level::TwentyOne => 21,
60        }
61    }
62}
63
64impl From<Level> for i32 {
65    fn from(level: Level) -> Self {
66        match level {
67            Level::Zero => 0,
68            Level::One => 1,
69            Level::Two => 2,
70            Level::Three => 3,
71            Level::Four => 4,
72            Level::Five => 5,
73            Level::Six => 6,
74            Level::Seven => 7,
75            Level::Eight => 8,
76            Level::Nine => 9,
77            Level::Ten => 10,
78            Level::Eleven => 11,
79            Level::Twelve => 12,
80            Level::Thirteen => 13,
81            Level::Fourteen => 14,
82            Level::Fifteen => 15,
83            Level::Sixteen => 16,
84            Level::Seventeen => 17,
85            Level::Eighteen => 18,
86            Level::Nineteen => 19,
87            Level::Twenty => 20,
88            Level::TwentyOne => 21,
89        }
90    }
91}
92
93#[cfg(feature = "gz")]
94impl From<Level> for flate2::Compression {
95    fn from(level: Level) -> Self {
96        match level {
97            Level::Zero => flate2::Compression::new(0),
98            Level::One => flate2::Compression::new(1),
99            Level::Two => flate2::Compression::new(2),
100            Level::Three => flate2::Compression::new(3),
101            Level::Four => flate2::Compression::new(4),
102            Level::Five => flate2::Compression::new(5),
103            Level::Six => flate2::Compression::new(6),
104            Level::Seven => flate2::Compression::new(7),
105            Level::Eight => flate2::Compression::new(8),
106            Level::Nine => flate2::Compression::new(9),
107            _ => flate2::Compression::new(9),
108        }
109    }
110}
111
112#[cfg(feature = "bz2")]
113impl From<Level> for bzip2::Compression {
114    fn from(level: Level) -> Self {
115        match level {
116            Level::Zero => bzip2::Compression::new(0),
117            Level::One => bzip2::Compression::new(1),
118            Level::Two => bzip2::Compression::new(2),
119            Level::Three => bzip2::Compression::new(3),
120            Level::Four => bzip2::Compression::new(4),
121            Level::Five => bzip2::Compression::new(5),
122            Level::Six => bzip2::Compression::new(6),
123            Level::Seven => bzip2::Compression::new(7),
124            Level::Eight => bzip2::Compression::new(8),
125            Level::Nine => bzip2::Compression::new(9),
126            _ => bzip2::Compression::new(9),
127        }
128    }
129}
130
131#[cfg(test)]
132mod test {
133    use super::*;
134
135    #[test]
136    fn level2u32() {
137        let mut tmp: u32 = Level::One.into();
138        assert_eq!(tmp, 1);
139
140        tmp = Level::Two.into();
141        assert_eq!(tmp, 2);
142
143        tmp = Level::Three.into();
144        assert_eq!(tmp, 3);
145
146        tmp = Level::Four.into();
147        assert_eq!(tmp, 4);
148
149        tmp = Level::Five.into();
150        assert_eq!(tmp, 5);
151
152        tmp = Level::Six.into();
153        assert_eq!(tmp, 6);
154
155        tmp = Level::Seven.into();
156        assert_eq!(tmp, 7);
157
158        tmp = Level::Eight.into();
159        assert_eq!(tmp, 8);
160
161        tmp = Level::Nine.into();
162        assert_eq!(tmp, 9);
163
164        tmp = Level::Ten.into();
165        assert_eq!(tmp, 10);
166
167        tmp = Level::Eleven.into();
168        assert_eq!(tmp, 11);
169
170        tmp = Level::Twelve.into();
171        assert_eq!(tmp, 12);
172
173        tmp = Level::Thirteen.into();
174        assert_eq!(tmp, 13);
175
176        tmp = Level::Fourteen.into();
177        assert_eq!(tmp, 14);
178
179        tmp = Level::Fifteen.into();
180        assert_eq!(tmp, 15);
181
182        tmp = Level::Sixteen.into();
183        assert_eq!(tmp, 16);
184
185        tmp = Level::Seventeen.into();
186        assert_eq!(tmp, 17);
187
188        tmp = Level::Eighteen.into();
189        assert_eq!(tmp, 18);
190
191        tmp = Level::Nineteen.into();
192        assert_eq!(tmp, 19);
193
194        tmp = Level::Twenty.into();
195        assert_eq!(tmp, 20);
196
197        tmp = Level::TwentyOne.into();
198        assert_eq!(tmp, 21);
199    }
200
201    #[test]
202    fn level2i32() {
203        let mut tmp: i32 = Level::One.into();
204        assert_eq!(tmp, 1);
205
206        tmp = Level::Two.into();
207        assert_eq!(tmp, 2);
208
209        tmp = Level::Three.into();
210        assert_eq!(tmp, 3);
211
212        tmp = Level::Four.into();
213        assert_eq!(tmp, 4);
214
215        tmp = Level::Five.into();
216        assert_eq!(tmp, 5);
217
218        tmp = Level::Six.into();
219        assert_eq!(tmp, 6);
220
221        tmp = Level::Seven.into();
222        assert_eq!(tmp, 7);
223
224        tmp = Level::Eight.into();
225        assert_eq!(tmp, 8);
226
227        tmp = Level::Nine.into();
228        assert_eq!(tmp, 9);
229
230        tmp = Level::Ten.into();
231        assert_eq!(tmp, 10);
232
233        tmp = Level::Eleven.into();
234        assert_eq!(tmp, 11);
235
236        tmp = Level::Twelve.into();
237        assert_eq!(tmp, 12);
238
239        tmp = Level::Thirteen.into();
240        assert_eq!(tmp, 13);
241
242        tmp = Level::Fourteen.into();
243        assert_eq!(tmp, 14);
244
245        tmp = Level::Fifteen.into();
246        assert_eq!(tmp, 15);
247
248        tmp = Level::Sixteen.into();
249        assert_eq!(tmp, 16);
250
251        tmp = Level::Seventeen.into();
252        assert_eq!(tmp, 17);
253
254        tmp = Level::Eighteen.into();
255        assert_eq!(tmp, 18);
256
257        tmp = Level::Nineteen.into();
258        assert_eq!(tmp, 19);
259
260        tmp = Level::Twenty.into();
261        assert_eq!(tmp, 20);
262
263        tmp = Level::TwentyOne.into();
264        assert_eq!(tmp, 21);
265    }
266
267    #[cfg(feature = "gz")]
268    #[test]
269    fn level2flate2() {
270        let mut tmp: flate2::Compression = Level::Zero.into();
271        assert_eq!(tmp, flate2::Compression::new(0));
272
273        tmp = Level::One.into();
274        assert_eq!(tmp, flate2::Compression::new(1));
275
276        tmp = Level::Two.into();
277        assert_eq!(tmp, flate2::Compression::new(2));
278
279        tmp = Level::Three.into();
280        assert_eq!(tmp, flate2::Compression::new(3));
281
282        tmp = Level::Four.into();
283        assert_eq!(tmp, flate2::Compression::new(4));
284
285        tmp = Level::Five.into();
286        assert_eq!(tmp, flate2::Compression::new(5));
287
288        tmp = Level::Six.into();
289        assert_eq!(tmp, flate2::Compression::new(6));
290
291        tmp = Level::Seven.into();
292        assert_eq!(tmp, flate2::Compression::new(7));
293
294        tmp = Level::Eight.into();
295        assert_eq!(tmp, flate2::Compression::new(8));
296
297        tmp = Level::Nine.into();
298        assert_eq!(tmp, flate2::Compression::new(9));
299
300        tmp = Level::Ten.into();
301        assert_eq!(tmp, flate2::Compression::new(9));
302
303        tmp = Level::Eleven.into();
304        assert_eq!(tmp, flate2::Compression::new(9));
305
306        tmp = Level::Twelve.into();
307        assert_eq!(tmp, flate2::Compression::new(9));
308
309        tmp = Level::Thirteen.into();
310        assert_eq!(tmp, flate2::Compression::new(9));
311
312        tmp = Level::Fourteen.into();
313        assert_eq!(tmp, flate2::Compression::new(9));
314
315        tmp = Level::Fifteen.into();
316        assert_eq!(tmp, flate2::Compression::new(9));
317
318        tmp = Level::Sixteen.into();
319        assert_eq!(tmp, flate2::Compression::new(9));
320
321        tmp = Level::Seventeen.into();
322        assert_eq!(tmp, flate2::Compression::new(9));
323
324        tmp = Level::Eighteen.into();
325        assert_eq!(tmp, flate2::Compression::new(9));
326
327        tmp = Level::Nineteen.into();
328        assert_eq!(tmp, flate2::Compression::new(9));
329
330        tmp = Level::Twenty.into();
331        assert_eq!(tmp, flate2::Compression::new(9));
332
333        tmp = Level::TwentyOne.into();
334        assert_eq!(tmp, flate2::Compression::new(9));
335    }
336
337    #[test]
338    #[cfg(feature = "bz2")]
339    fn level2bzip2() {
340        let tmp: bzip2::Compression = Level::Zero.into();
341        assert_eq!(tmp.level(), bzip2::Compression::new(0).level());
342
343        let tmp: bzip2::Compression = Level::One.into();
344        assert_eq!(tmp.level(), bzip2::Compression::new(1).level());
345
346        let tmp: bzip2::Compression = Level::Two.into();
347        assert_eq!(tmp.level(), bzip2::Compression::new(2).level());
348
349        let tmp: bzip2::Compression = Level::Three.into();
350        assert_eq!(tmp.level(), bzip2::Compression::new(3).level());
351
352        let tmp: bzip2::Compression = Level::Four.into();
353        assert_eq!(tmp.level(), bzip2::Compression::new(4).level());
354
355        let tmp: bzip2::Compression = Level::Five.into();
356        assert_eq!(tmp.level(), bzip2::Compression::new(5).level());
357
358        let tmp: bzip2::Compression = Level::Six.into();
359        assert_eq!(tmp.level(), bzip2::Compression::new(6).level());
360
361        let tmp: bzip2::Compression = Level::Seven.into();
362        assert_eq!(tmp.level(), bzip2::Compression::new(7).level());
363
364        let tmp: bzip2::Compression = Level::Eight.into();
365        assert_eq!(tmp.level(), bzip2::Compression::new(8).level());
366
367        let tmp: bzip2::Compression = Level::Nine.into();
368        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
369
370        let tmp: bzip2::Compression = Level::Ten.into();
371        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
372
373        let tmp: bzip2::Compression = Level::Eleven.into();
374        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
375
376        let tmp: bzip2::Compression = Level::Twelve.into();
377        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
378
379        let tmp: bzip2::Compression = Level::Thirteen.into();
380        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
381
382        let tmp: bzip2::Compression = Level::Fourteen.into();
383        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
384
385        let tmp: bzip2::Compression = Level::Fifteen.into();
386        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
387
388        let tmp: bzip2::Compression = Level::Sixteen.into();
389        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
390
391        let tmp: bzip2::Compression = Level::Seventeen.into();
392        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
393
394        let tmp: bzip2::Compression = Level::Eighteen.into();
395        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
396
397        let tmp: bzip2::Compression = Level::Nineteen.into();
398        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
399
400        let tmp: bzip2::Compression = Level::Twenty.into();
401        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
402
403        let tmp: bzip2::Compression = Level::TwentyOne.into();
404        assert_eq!(tmp.level(), bzip2::Compression::new(9).level());
405    }
406}