1#[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}