• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

vigna / dsi-bitstream-rs / 22518245728

28 Feb 2026 09:40AM UTC coverage: 57.751% (+3.1%) from 54.618%
22518245728

push

github

vigna
delta_gamma in filenames

2213 of 3832 relevant lines covered (57.75%)

2595204.38 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

83.72
/src/fuzz/codes.rs
1
/*
2
 * SPDX-FileCopyrightText: 2023 Inria
3
 *
4
 * SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
5
 */
6

7
use crate::prelude::{delta::*, gamma::*, omega::*, pi::*, zeta::*, *};
8
use arbitrary::Arbitrary;
9
use std::io::{Read, Write};
10

11
type ReadWord = u32;
12

13
const DEBUG: bool = false;
14

15
macro_rules! debug {
16
    ($($arg:tt)*) => {
17
        if DEBUG {
18
            print!($($arg)*);
19
        }
20
    };
21
}
22

23
macro_rules! debugln {
24
    ($($arg:tt)*) => {
25
        if DEBUG {
26
            println!($($arg)*);
27
        }
28
    };
29
}
30

31
#[derive(Arbitrary, Debug, Clone)]
32
pub struct FuzzCase {
33
    commands: Vec<RandomCommand>,
34
}
35

36
#[derive(Arbitrary, Debug, Clone)]
37
enum RandomCommand {
38
    Bits(u64, usize),
39
    MinimalBinary(u64, u64),
40
    Unary(u64),
41
    Gamma(u64, bool, bool),
42
    Delta(u64, bool, bool),
43
    Zeta(u64, usize, bool, bool),
44
    Golomb(u64, u64),
45
    Rice(u64, usize),
46
    ExpGolomb(u64, usize),
47
    Bytes(Vec<u8>),
48
    VByteBe(u64),
49
    VByteLe(u64),
50
    Omega(u64, bool, bool),
51
    Pi(u64, usize, bool, bool),
52
}
53

54
pub fn harness(data: FuzzCase) {
984✔
55
    let mut data = data;
1,968✔
56
    for command in &mut data.commands {
11,127✔
57
        match command {
10,143✔
58
            RandomCommand::Bits(value, n_bits) => {
1,665✔
59
                *n_bits = 1 + (*n_bits % 63);
555✔
60
                *value &= (1 << *n_bits) - 1;
555✔
61
            }
62
            RandomCommand::MinimalBinary(value, max) => {
840✔
63
                *max = (*max).clamp(1, u32::MAX as _);
560✔
64
                *value %= *max;
280✔
65
            }
66
            RandomCommand::Unary(value) => {
980✔
67
                *value = (*value).min(300);
490✔
68
            }
69
            RandomCommand::Gamma(value, _, _) => {
2,550✔
70
                *value = (*value).min(u64::MAX - 1);
2,550✔
71
            }
72
            RandomCommand::Delta(value, _, _) => {
2,444✔
73
                *value = (*value).min(u64::MAX - 1);
2,444✔
74
            }
75
            RandomCommand::Zeta(value, k, _, _) => {
2,988✔
76
                *value = (*value).min(u32::MAX as u64 - 1);
2,988✔
77
                *k = (*k).clamp(1, 7);
996✔
78
            }
79
            RandomCommand::Golomb(value, b) => {
1,740✔
80
                *value = (*value).min(u16::MAX as u64 - 1);
1,740✔
81
                *b = (*b).clamp(1, 20);
580✔
82
            }
83
            RandomCommand::Rice(value, k) => {
606✔
84
                *value = (*value).min(u16::MAX as u64 - 1);
606✔
85
                *k = (*k).clamp(0, 8);
202✔
86
            }
87
            RandomCommand::ExpGolomb(value, k) => {
1,875✔
88
                *value = (*value).min(u16::MAX as u64 - 1);
1,875✔
89
                *k = (*k).clamp(0, 8);
625✔
90
            }
91
            RandomCommand::Bytes(_) => {}
971✔
92
            RandomCommand::VByteLe(_) => {}
601✔
93
            RandomCommand::VByteBe(_) => {}
767✔
94
            RandomCommand::Omega(value, _, _) => {
1,196✔
95
                *value = (*value).min(u64::MAX - 1);
1,196✔
96
            }
97
            RandomCommand::Pi(value, k, _, _) => {
2,943✔
98
                *value = (*value).min(u32::MAX as u64 - 1);
2,943✔
99
                *k = (*k).clamp(0, 7);
981✔
100
            }
101
        };
102
    }
103

104
    debugln!("{:#4?}", data);
984✔
105

106
    let mut buffer_be: Vec<u64> = vec![];
2,952✔
107
    let mut buffer_le: Vec<u64> = vec![];
2,952✔
108
    let mut writes = vec![];
1,968✔
109
    // write
110
    {
111
        let mut big = BufBitWriter::<BE, _>::new(MemWordWriterVec::new(&mut buffer_be));
3,936✔
112
        let mut little = BufBitWriter::<LE, _>::new(MemWordWriterVec::new(&mut buffer_le));
3,936✔
113

114
        for command in data.commands.iter() {
11,127✔
115
            match command {
10,143✔
116
                RandomCommand::Bits(value, n_bits) => {
1,110✔
117
                    let big_success = big.write_bits(*value, *n_bits).is_ok();
2,775✔
118
                    let little_success = little.write_bits(*value, *n_bits).is_ok();
2,775✔
119
                    assert_eq!(big_success, little_success);
555✔
120
                    writes.push(big_success);
1,665✔
121
                }
122
                RandomCommand::MinimalBinary(value, max) => {
560✔
123
                    let big_success = big.write_minimal_binary(*value, *max).is_ok();
1,400✔
124
                    let little_success = little.write_minimal_binary(*value, *max).is_ok();
1,400✔
125
                    assert_eq!(big_success, little_success);
280✔
126
                    writes.push(big_success);
840✔
127
                }
128
                RandomCommand::Unary(value) => {
490✔
129
                    let (big_success, little_success) = (
1,470✔
130
                        big.write_unary(*value).is_ok(),
1,960✔
131
                        little.write_unary(*value).is_ok(),
980✔
132
                    );
133
                    assert_eq!(big_success, little_success);
490✔
134
                    writes.push(big_success);
1,470✔
135
                }
136
                RandomCommand::Gamma(value, _, write_tab) => {
2,550✔
137
                    let (big_success, little_success) = if *write_tab {
3,825✔
138
                        (
139
                            big.write_gamma_param::<true>(*value).is_ok(),
4,596✔
140
                            little.write_gamma_param::<true>(*value).is_ok(),
2,298✔
141
                        )
142
                    } else {
143
                        (
144
                            big.write_gamma_param::<false>(*value).is_ok(),
504✔
145
                            little.write_gamma_param::<false>(*value).is_ok(),
252✔
146
                        )
147
                    };
148
                    assert_eq!(big_success, little_success);
1,275✔
149
                    writes.push(big_success);
3,825✔
150
                }
151
                RandomCommand::Delta(value, _, write_tab) => {
2,444✔
152
                    let (big_success, little_success) = if *write_tab {
3,666✔
153
                        (
154
                            big.write_delta_param::<true, false>(*value).is_ok(),
4,336✔
155
                            little.write_delta_param::<true, false>(*value).is_ok(),
2,168✔
156
                        )
157
                    } else {
158
                        (
159
                            big.write_delta_param::<false, false>(*value).is_ok(),
552✔
160
                            little.write_delta_param::<false, false>(*value).is_ok(),
276✔
161
                        )
162
                    };
163
                    assert_eq!(big_success, little_success);
1,222✔
164
                    writes.push(big_success);
3,666✔
165
                }
166
                RandomCommand::Zeta(value, k, _, write_tab) => {
2,988✔
167
                    let (big_success, little_success) = if *k == 3 {
2,988✔
168
                        if *write_tab {
61✔
169
                            (
170
                                big.write_zeta3_param::<true>(*value).is_ok(),
224✔
171
                                little.write_zeta3_param::<true>(*value).is_ok(),
112✔
172
                            )
173
                        } else {
174
                            (
175
                                big.write_zeta3_param::<false>(*value).is_ok(),
20✔
176
                                little.write_zeta3_param::<false>(*value).is_ok(),
10✔
177
                            )
178
                        }
179
                    } else {
180
                        (
181
                            big.write_zeta_param(*value, *k).is_ok(),
4,675✔
182
                            little.write_zeta_param(*value, *k).is_ok(),
2,805✔
183
                        )
184
                    };
185

186
                    assert_eq!(big_success, little_success);
996✔
187
                    writes.push(big_success);
2,988✔
188
                }
189
                RandomCommand::Golomb(value, b) => {
1,160✔
190
                    let (big_success, little_success) = (
1,740✔
191
                        big.write_golomb(*value, *b).is_ok(),
2,900✔
192
                        little.write_golomb(*value, *b).is_ok(),
1,740✔
193
                    );
194
                    assert_eq!(big_success, little_success);
580✔
195
                    writes.push(big_success);
1,740✔
196
                }
197
                RandomCommand::Rice(value, k) => {
404✔
198
                    let (big_success, little_success) = (
606✔
199
                        big.write_rice(*value, *k).is_ok(),
1,010✔
200
                        little.write_rice(*value, *k).is_ok(),
606✔
201
                    );
202
                    assert_eq!(big_success, little_success);
202✔
203
                    writes.push(big_success);
606✔
204
                }
205
                RandomCommand::ExpGolomb(value, k) => {
1,250✔
206
                    let (big_success, little_success) = (
1,875✔
207
                        big.write_exp_golomb(*value, *k).is_ok(),
3,125✔
208
                        little.write_exp_golomb(*value, *k).is_ok(),
1,875✔
209
                    );
210
                    assert_eq!(big_success, little_success);
625✔
211
                    writes.push(big_success);
1,875✔
212
                }
213
                RandomCommand::Bytes(bytes) => {
971✔
214
                    let (big_success, little_success) =
1,942✔
215
                        (big.write(bytes).is_ok(), little.write(bytes).is_ok());
4,855✔
216
                    assert_eq!(big_success, little_success);
971✔
217
                    writes.push(big_success);
2,913✔
218
                }
219
                RandomCommand::VByteLe(value) => {
601✔
220
                    let (big_success, little_success) = (
1,803✔
221
                        big.write_vbyte_le(*value).is_ok(),
2,404✔
222
                        little.write_vbyte_le(*value).is_ok(),
1,202✔
223
                    );
224
                    assert_eq!(big_success, little_success);
601✔
225
                    writes.push(big_success);
1,803✔
226
                }
227
                RandomCommand::VByteBe(value) => {
767✔
228
                    let (big_success, little_success) = (
2,301✔
229
                        big.write_vbyte_be(*value).is_ok(),
3,068✔
230
                        little.write_vbyte_be(*value).is_ok(),
1,534✔
231
                    );
232
                    assert_eq!(big_success, little_success);
767✔
233
                    writes.push(big_success);
2,301✔
234
                }
235
                RandomCommand::Omega(value, _, write_tab) => {
1,196✔
236
                    let (big_success, little_success) = if *write_tab {
1,794✔
237
                        (
238
                            big.write_omega_param::<true>(*value).is_ok(),
2,220✔
239
                            little.write_omega_param::<true>(*value).is_ok(),
1,110✔
240
                        )
241
                    } else {
242
                        (
243
                            big.write_omega_param::<false>(*value).is_ok(),
172✔
244
                            little.write_omega_param::<false>(*value).is_ok(),
86✔
245
                        )
246
                    };
247
                    assert_eq!(big_success, little_success);
598✔
248
                    writes.push(big_success);
1,794✔
249
                }
250
                RandomCommand::Pi(value, k, _, write_tab) => {
2,943✔
251
                    let (big_success, little_success) = if *k == 2 {
2,943✔
252
                        if *write_tab {
4✔
253
                            (
254
                                big.write_pi2_param::<true>(*value).is_ok(),
8✔
255
                                little.write_pi2_param::<true>(*value).is_ok(),
4✔
256
                            )
257
                        } else {
258
                            (
259
                                big.write_pi2_param::<false>(*value).is_ok(),
8✔
260
                                little.write_pi2_param::<false>(*value).is_ok(),
4✔
261
                            )
262
                        }
263
                    } else {
264
                        (
265
                            big.write_pi_param(*value, *k).is_ok(),
4,885✔
266
                            little.write_pi_param(*value, *k).is_ok(),
2,931✔
267
                        )
268
                    };
269

270
                    assert_eq!(big_success, little_success);
981✔
271
                    writes.push(big_success);
2,943✔
272
                }
273
            };
274
        }
275
    }
276
    // read back
277
    debug!("BE: ");
984✔
278
    for word in &buffer_be {
66,346✔
279
        debug!("{:064b} ", *word);
65,362✔
280
    }
281
    debug!("\n");
984✔
282
    debug!("LE: ");
984✔
283
    for word in &buffer_le {
66,346✔
284
        debug!("{:064b} ", *word);
65,362✔
285
    }
286
    debug!("\n");
984✔
287
    let be_trans: &[ReadWord] = unsafe {
288
        core::slice::from_raw_parts(
289
            buffer_be.as_ptr() as *const ReadWord,
1,968✔
290
            buffer_be.len() * (core::mem::size_of::<u64>() / core::mem::size_of::<ReadWord>()),
2,952✔
291
        )
292
    };
293
    let le_trans: &[ReadWord] = unsafe {
294
        core::slice::from_raw_parts(
295
            buffer_le.as_ptr() as *const ReadWord,
1,968✔
296
            buffer_le.len() * (core::mem::size_of::<u64>() / core::mem::size_of::<ReadWord>()),
2,952✔
297
        )
298
    };
299
    {
300
        let mut big = BitReader::<BE, _>::new(MemWordReader::new_inf(&buffer_be));
3,936✔
301
        let mut big_buff = BufBitReader::<BE, _>::new(MemWordReader::new_inf(be_trans));
3,936✔
302

303
        let mut little = BitReader::<LE, _>::new(MemWordReader::new_inf(&buffer_le));
3,936✔
304
        let mut little_buff = BufBitReader::<LE, _>::new(MemWordReader::new_inf(le_trans));
3,936✔
305

306
        for (succ, command) in writes.into_iter().zip(data.commands.into_iter()) {
25,206✔
307
            let pos = big.bit_pos().unwrap();
40,572✔
308
            assert_eq!(pos, little.bit_pos().unwrap());
40,572✔
309
            assert_eq!(pos, big_buff.bit_pos().unwrap());
40,572✔
310
            assert_eq!(pos, little_buff.bit_pos().unwrap());
40,572✔
311

312
            match command {
10,143✔
313
                RandomCommand::Bits(value, n_bits) => {
1,110✔
314
                    let b = big.read_bits(n_bits);
2,220✔
315
                    let l = little.read_bits(n_bits);
2,220✔
316
                    let bb = big_buff.read_bits(n_bits);
2,220✔
317
                    let lb = little_buff.read_bits(n_bits);
2,220✔
318
                    if succ {
555✔
319
                        let b = b.unwrap();
1,665✔
320
                        let l = l.unwrap();
1,665✔
321
                        let bb = bb.unwrap();
1,665✔
322
                        let lb = lb.unwrap();
1,665✔
323
                        assert_eq!(
555✔
324
                            b,
325
                            value,
326
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
327
                            b,
328
                            value,
329
                            n = n_bits as _
×
330
                        );
331
                        assert_eq!(
555✔
332
                            l,
333
                            value,
334
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
335
                            l,
336
                            value,
337
                            n = n_bits as _
×
338
                        );
339
                        assert_eq!(
555✔
340
                            bb,
341
                            value,
342
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
343
                            bb,
344
                            value,
345
                            n = n_bits as _
×
346
                        );
347
                        assert_eq!(
555✔
348
                            lb,
349
                            value,
350
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
351
                            lb,
352
                            value,
353
                            n = n_bits as _
×
354
                        );
355
                        assert_eq!(pos + n_bits as u64, big.bit_pos().unwrap());
2,775✔
356
                        assert_eq!(pos + n_bits as u64, little.bit_pos().unwrap());
2,775✔
357
                        assert_eq!(pos + n_bits as u64, big_buff.bit_pos().unwrap());
2,775✔
358
                        assert_eq!(pos + n_bits as u64, little_buff.bit_pos().unwrap());
2,775✔
359
                    } else {
360
                        assert!(b.is_err());
×
361
                        assert!(l.is_err());
×
362
                        assert!(bb.is_err());
×
363
                        assert!(lb.is_err());
×
364
                        assert_eq!(pos, big.bit_pos().unwrap());
×
365
                        assert_eq!(pos, little.bit_pos().unwrap());
×
366
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
367
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
368
                    }
369
                }
370

371
                RandomCommand::MinimalBinary(value, max) => {
560✔
372
                    let n_bits = len_minimal_binary(value, max) as u8;
840✔
373
                    let b = big.read_minimal_binary(max);
1,120✔
374
                    let l = little.read_minimal_binary(max);
1,120✔
375
                    let bb = big_buff.read_minimal_binary(max);
1,120✔
376
                    let lb = little_buff.read_minimal_binary(max);
1,120✔
377
                    if succ {
280✔
378
                        let b = b.unwrap();
840✔
379
                        let l = l.unwrap();
840✔
380
                        let bb = bb.unwrap();
840✔
381
                        let lb = lb.unwrap();
840✔
382
                        assert_eq!(
280✔
383
                            b,
384
                            value,
385
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
386
                            b,
387
                            value,
388
                            n = n_bits as _
×
389
                        );
390
                        assert_eq!(
280✔
391
                            l,
392
                            value,
393
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
394
                            l,
395
                            value,
396
                            n = n_bits as _
×
397
                        );
398
                        assert_eq!(
280✔
399
                            bb,
400
                            value,
401
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
402
                            bb,
403
                            value,
404
                            n = n_bits as _
×
405
                        );
406
                        assert_eq!(
280✔
407
                            lb,
408
                            value,
409
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
410
                            lb,
411
                            value,
412
                            n = n_bits as _
×
413
                        );
414
                        assert_eq!(pos + n_bits as u64, big.bit_pos().unwrap());
1,400✔
415
                        assert_eq!(pos + n_bits as u64, little.bit_pos().unwrap());
1,400✔
416
                        assert_eq!(pos + n_bits as u64, big_buff.bit_pos().unwrap());
1,400✔
417
                        assert_eq!(pos + n_bits as u64, little_buff.bit_pos().unwrap());
1,400✔
418
                    } else {
419
                        assert!(b.is_err());
×
420
                        assert!(l.is_err());
×
421
                        assert!(bb.is_err());
×
422
                        assert!(lb.is_err());
×
423
                        assert_eq!(pos, big.bit_pos().unwrap());
×
424
                        assert_eq!(pos, little.bit_pos().unwrap());
×
425
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
426
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
427
                    }
428
                }
429

430
                RandomCommand::Unary(value) => {
490✔
431
                    let (b, l, bb, lb) = (
2,450✔
432
                        big.read_unary(),
1,470✔
433
                        little.read_unary(),
1,470✔
434
                        big_buff.read_unary(),
1,470✔
435
                        little_buff.read_unary(),
490✔
436
                    );
437
                    if succ {
490✔
438
                        assert_eq!(b.unwrap(), value);
1,470✔
439
                        assert_eq!(l.unwrap(), value);
1,470✔
440
                        assert_eq!(bb.unwrap(), value);
1,470✔
441
                        assert_eq!(lb.unwrap(), value);
1,470✔
442
                        assert_eq!(pos + value + 1, big.bit_pos().unwrap());
2,450✔
443
                        assert_eq!(pos + value + 1, little.bit_pos().unwrap());
2,450✔
444
                        assert_eq!(pos + value + 1, big_buff.bit_pos().unwrap());
2,450✔
445
                        assert_eq!(pos + value + 1, little_buff.bit_pos().unwrap());
2,450✔
446

447
                        assert_eq!(pos + value + 1, big.bit_pos().unwrap());
2,450✔
448
                        assert_eq!(pos + value + 1, little.bit_pos().unwrap());
2,450✔
449
                        assert_eq!(pos + value + 1, big_buff.bit_pos().unwrap());
2,450✔
450
                        assert_eq!(pos + value + 1, little_buff.bit_pos().unwrap());
2,450✔
451
                    } else {
452
                        assert!(b.is_err());
×
453
                        assert!(l.is_err());
×
454
                        assert!(bb.is_err());
×
455
                        assert!(lb.is_err());
×
456
                        assert_eq!(pos, big.bit_pos().unwrap());
×
457
                        assert_eq!(pos, little.bit_pos().unwrap());
×
458
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
459
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
460
                    }
461
                }
462

463
                RandomCommand::Gamma(value, read_tab, _) => {
2,550✔
464
                    let (b, l, bb, lb) = if read_tab {
6,375✔
465
                        (
466
                            big.read_gamma_param::<true>(),
3,435✔
467
                            little.read_gamma_param::<true>(),
3,435✔
468
                            big_buff.read_gamma_param::<true>(),
3,435✔
469
                            little_buff.read_gamma_param::<true>(),
1,145✔
470
                        )
471
                    } else {
472
                        (
473
                            big.read_gamma_param::<false>(),
390✔
474
                            little.read_gamma_param::<false>(),
390✔
475
                            big_buff.read_gamma_param::<false>(),
390✔
476
                            little_buff.read_gamma_param::<false>(),
130✔
477
                        )
478
                    };
479
                    if succ {
1,275✔
480
                        assert_eq!(b.unwrap(), value);
3,825✔
481
                        assert_eq!(l.unwrap(), value);
3,825✔
482
                        assert_eq!(bb.unwrap(), value);
3,825✔
483
                        assert_eq!(lb.unwrap(), value);
3,825✔
484
                        assert_eq!(
1,275✔
485
                            pos + len_gamma_param::<false>(value) as u64,
2,550✔
486
                            big.bit_pos().unwrap()
3,825✔
487
                        );
488
                        assert_eq!(
1,275✔
489
                            pos + len_gamma_param::<false>(value) as u64,
2,550✔
490
                            little.bit_pos().unwrap()
3,825✔
491
                        );
492
                        assert_eq!(
1,275✔
493
                            pos + len_gamma_param::<false>(value) as u64,
2,550✔
494
                            big_buff.bit_pos().unwrap()
3,825✔
495
                        );
496
                        assert_eq!(
1,275✔
497
                            pos + len_gamma_param::<false>(value) as u64,
2,550✔
498
                            little_buff.bit_pos().unwrap()
3,825✔
499
                        );
500
                        assert_eq!(
1,275✔
501
                            pos + len_gamma_param::<true>(value) as u64,
2,550✔
502
                            big.bit_pos().unwrap()
3,825✔
503
                        );
504
                        assert_eq!(
1,275✔
505
                            pos + len_gamma_param::<true>(value) as u64,
2,550✔
506
                            little.bit_pos().unwrap()
3,825✔
507
                        );
508
                        assert_eq!(
1,275✔
509
                            pos + len_gamma_param::<true>(value) as u64,
2,550✔
510
                            big_buff.bit_pos().unwrap()
3,825✔
511
                        );
512
                        assert_eq!(
1,275✔
513
                            pos + len_gamma_param::<true>(value) as u64,
2,550✔
514
                            little_buff.bit_pos().unwrap()
3,825✔
515
                        );
516
                    } else {
517
                        assert!(b.is_err());
×
518
                        assert!(l.is_err());
×
519
                        assert!(bb.is_err());
×
520
                        assert!(lb.is_err());
×
521
                        assert_eq!(pos, big.bit_pos().unwrap());
×
522
                        assert_eq!(pos, little.bit_pos().unwrap());
×
523
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
524
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
525
                    }
526
                }
527

528
                RandomCommand::Delta(value, read_tab, _) => {
2,444✔
529
                    let (b, l, bb, lb) = if read_tab {
6,110✔
530
                        (
531
                            big.read_delta_param::<true, false>(),
3,306✔
532
                            little.read_delta_param::<true, false>(),
3,306✔
533
                            big_buff.read_delta_param::<true, false>(),
3,306✔
534
                            little_buff.read_delta_param::<true, false>(),
1,102✔
535
                        )
536
                    } else {
537
                        (
538
                            big.read_delta_param::<false, false>(),
360✔
539
                            little.read_delta_param::<false, false>(),
360✔
540
                            big_buff.read_delta_param::<false, false>(),
360✔
541
                            little_buff.read_delta_param::<false, false>(),
120✔
542
                        )
543
                    };
544
                    if succ {
1,222✔
545
                        assert_eq!(b.unwrap(), value);
3,666✔
546
                        assert_eq!(l.unwrap(), value);
3,666✔
547
                        assert_eq!(bb.unwrap(), value);
3,666✔
548
                        assert_eq!(lb.unwrap(), value);
3,666✔
549
                        assert_eq!(
1,222✔
550
                            pos + len_delta_param::<true, true>(value) as u64,
2,444✔
551
                            big.bit_pos().unwrap()
3,666✔
552
                        );
553
                        assert_eq!(
1,222✔
554
                            pos + len_delta_param::<true, true>(value) as u64,
2,444✔
555
                            little.bit_pos().unwrap()
3,666✔
556
                        );
557
                        assert_eq!(
1,222✔
558
                            pos + len_delta_param::<true, true>(value) as u64,
2,444✔
559
                            big_buff.bit_pos().unwrap()
3,666✔
560
                        );
561
                        assert_eq!(
1,222✔
562
                            pos + len_delta_param::<true, true>(value) as u64,
2,444✔
563
                            little_buff.bit_pos().unwrap()
3,666✔
564
                        );
565
                        assert_eq!(
1,222✔
566
                            pos + len_delta_param::<false, true>(value) as u64,
2,444✔
567
                            big.bit_pos().unwrap()
3,666✔
568
                        );
569
                        assert_eq!(
1,222✔
570
                            pos + len_delta_param::<false, true>(value) as u64,
2,444✔
571
                            little.bit_pos().unwrap()
3,666✔
572
                        );
573
                        assert_eq!(
1,222✔
574
                            pos + len_delta_param::<false, true>(value) as u64,
2,444✔
575
                            big_buff.bit_pos().unwrap()
3,666✔
576
                        );
577
                        assert_eq!(
1,222✔
578
                            pos + len_delta_param::<false, true>(value) as u64,
2,444✔
579
                            little_buff.bit_pos().unwrap()
3,666✔
580
                        );
581
                        assert_eq!(
1,222✔
582
                            pos + len_delta_param::<true, false>(value) as u64,
2,444✔
583
                            big.bit_pos().unwrap()
3,666✔
584
                        );
585
                        assert_eq!(
1,222✔
586
                            pos + len_delta_param::<true, false>(value) as u64,
2,444✔
587
                            little.bit_pos().unwrap()
3,666✔
588
                        );
589
                        assert_eq!(
1,222✔
590
                            pos + len_delta_param::<true, false>(value) as u64,
2,444✔
591
                            big_buff.bit_pos().unwrap()
3,666✔
592
                        );
593
                        assert_eq!(
1,222✔
594
                            pos + len_delta_param::<true, false>(value) as u64,
2,444✔
595
                            little_buff.bit_pos().unwrap()
3,666✔
596
                        );
597
                        assert_eq!(
1,222✔
598
                            pos + len_delta_param::<false, false>(value) as u64,
2,444✔
599
                            big.bit_pos().unwrap()
3,666✔
600
                        );
601
                        assert_eq!(
1,222✔
602
                            pos + len_delta_param::<false, false>(value) as u64,
2,444✔
603
                            little.bit_pos().unwrap()
3,666✔
604
                        );
605
                        assert_eq!(
1,222✔
606
                            pos + len_delta_param::<false, false>(value) as u64,
2,444✔
607
                            big_buff.bit_pos().unwrap()
3,666✔
608
                        );
609
                        assert_eq!(
1,222✔
610
                            pos + len_delta_param::<false, false>(value) as u64,
2,444✔
611
                            little_buff.bit_pos().unwrap()
3,666✔
612
                        );
613
                    } else {
614
                        assert!(b.is_err());
×
615
                        assert!(l.is_err());
×
616
                        assert!(bb.is_err());
×
617
                        assert!(lb.is_err());
×
618
                        assert_eq!(pos, big.bit_pos().unwrap());
×
619
                        assert_eq!(pos, little.bit_pos().unwrap());
×
620
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
621
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
622
                    }
623
                }
624

625
                RandomCommand::Zeta(value, k, read_tab, _) => {
2,988✔
626
                    let (b, l, bb, lb) = if k == 3 {
4,980✔
627
                        if read_tab {
61✔
628
                            (
629
                                big.read_zeta3_param::<true>(),
171✔
630
                                little.read_zeta3_param::<true>(),
171✔
631
                                big_buff.read_zeta3_param::<true>(),
171✔
632
                                little_buff.read_zeta3_param::<true>(),
57✔
633
                            )
634
                        } else {
635
                            (
636
                                big.read_zeta3_param::<false>(),
12✔
637
                                little.read_zeta3_param::<false>(),
12✔
638
                                big_buff.read_zeta3_param::<false>(),
12✔
639
                                little_buff.read_zeta3_param::<false>(),
4✔
640
                            )
641
                        }
642
                    } else {
643
                        (
644
                            big.read_zeta_param(k),
3,740✔
645
                            little.read_zeta_param(k),
3,740✔
646
                            big_buff.read_zeta_param(k),
3,740✔
647
                            little_buff.read_zeta_param(k),
1,870✔
648
                        )
649
                    };
650
                    if succ {
996✔
651
                        assert_eq!(bb.unwrap(), value);
2,988✔
652
                        assert_eq!(lb.unwrap(), value);
2,988✔
653
                        assert_eq!(b.unwrap(), value);
2,988✔
654
                        assert_eq!(l.unwrap(), value);
2,988✔
655
                        assert_eq!(
996✔
656
                            pos + len_zeta_param::<false>(value, k) as u64,
2,988✔
657
                            big.bit_pos().unwrap()
2,988✔
658
                        );
659
                        assert_eq!(
996✔
660
                            pos + len_zeta_param::<false>(value, k) as u64,
2,988✔
661
                            little.bit_pos().unwrap()
2,988✔
662
                        );
663
                        assert_eq!(
996✔
664
                            pos + len_zeta_param::<false>(value, k) as u64,
2,988✔
665
                            big_buff.bit_pos().unwrap()
2,988✔
666
                        );
667
                        assert_eq!(
996✔
668
                            pos + len_zeta_param::<false>(value, k) as u64,
2,988✔
669
                            little_buff.bit_pos().unwrap()
2,988✔
670
                        );
671
                        assert_eq!(
996✔
672
                            pos + len_zeta_param::<true>(value, k) as u64,
2,988✔
673
                            big.bit_pos().unwrap()
2,988✔
674
                        );
675
                        assert_eq!(
996✔
676
                            pos + len_zeta_param::<true>(value, k) as u64,
2,988✔
677
                            little.bit_pos().unwrap()
2,988✔
678
                        );
679
                        assert_eq!(
996✔
680
                            pos + len_zeta_param::<true>(value, k) as u64,
2,988✔
681
                            big_buff.bit_pos().unwrap()
2,988✔
682
                        );
683
                        assert_eq!(
996✔
684
                            pos + len_zeta_param::<true>(value, k) as u64,
2,988✔
685
                            little_buff.bit_pos().unwrap()
2,988✔
686
                        );
687
                    } else {
688
                        assert!(b.is_err());
×
689
                        assert!(l.is_err());
×
690
                        assert!(bb.is_err());
×
691
                        assert!(lb.is_err());
×
692
                        assert_eq!(pos, big.bit_pos().unwrap());
×
693
                        assert_eq!(pos, little.bit_pos().unwrap());
×
694
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
695
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
696
                    }
697
                }
698
                RandomCommand::Golomb(value, b_par) => {
1,160✔
699
                    let (b, l, bb, lb) = (
2,900✔
700
                        big.read_golomb(b_par),
2,320✔
701
                        little.read_golomb(b_par),
2,320✔
702
                        big_buff.read_golomb(b_par),
2,320✔
703
                        little_buff.read_golomb(b_par),
1,160✔
704
                    );
705
                    if succ {
580✔
706
                        assert_eq!(b.unwrap(), value);
1,740✔
707
                        assert_eq!(l.unwrap(), value);
1,740✔
708
                        assert_eq!(bb.unwrap(), value);
1,740✔
709
                        assert_eq!(lb.unwrap(), value);
1,740✔
710
                        assert_eq!(
580✔
711
                            pos + len_golomb(value, b_par) as u64,
1,740✔
712
                            big.bit_pos().unwrap()
1,740✔
713
                        );
714
                        assert_eq!(
580✔
715
                            pos + len_golomb(value, b_par) as u64,
1,740✔
716
                            little.bit_pos().unwrap()
1,740✔
717
                        );
718
                        assert_eq!(
580✔
719
                            pos + len_golomb(value, b_par) as u64,
1,740✔
720
                            big_buff.bit_pos().unwrap()
1,740✔
721
                        );
722
                        assert_eq!(
580✔
723
                            pos + len_golomb(value, b_par) as u64,
1,740✔
724
                            little_buff.bit_pos().unwrap()
1,740✔
725
                        );
726

727
                        assert_eq!(
580✔
728
                            pos + len_golomb(value, b_par) as u64,
1,740✔
729
                            big.bit_pos().unwrap()
1,740✔
730
                        );
731
                        assert_eq!(
580✔
732
                            pos + len_golomb(value, b_par) as u64,
1,740✔
733
                            little.bit_pos().unwrap()
1,740✔
734
                        );
735
                        assert_eq!(
580✔
736
                            pos + len_golomb(value, b_par) as u64,
1,740✔
737
                            big_buff.bit_pos().unwrap()
1,740✔
738
                        );
739
                        assert_eq!(
580✔
740
                            pos + len_golomb(value, b_par) as u64,
1,740✔
741
                            little_buff.bit_pos().unwrap()
1,740✔
742
                        );
743
                    } else {
744
                        assert!(b.is_err());
×
745
                        assert!(l.is_err());
×
746
                        assert!(bb.is_err());
×
747
                        assert!(lb.is_err());
×
748
                        assert_eq!(pos, big.bit_pos().unwrap());
×
749
                        assert_eq!(pos, little.bit_pos().unwrap());
×
750
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
751
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
752
                    }
753
                }
754
                RandomCommand::Rice(value, k) => {
404✔
755
                    let (b, l, bb, lb) = (
1,010✔
756
                        big.read_rice(k),
808✔
757
                        little.read_rice(k),
808✔
758
                        big_buff.read_rice(k),
808✔
759
                        little_buff.read_rice(k),
404✔
760
                    );
761
                    if succ {
202✔
762
                        assert_eq!(b.unwrap(), value);
606✔
763
                        assert_eq!(l.unwrap(), value);
606✔
764
                        assert_eq!(bb.unwrap(), value);
606✔
765
                        assert_eq!(lb.unwrap(), value);
606✔
766
                        assert_eq!(pos + len_rice(value, k) as u64, big.bit_pos().unwrap());
1,414✔
767
                        assert_eq!(pos + len_rice(value, k) as u64, little.bit_pos().unwrap());
1,414✔
768
                        assert_eq!(pos + len_rice(value, k) as u64, big_buff.bit_pos().unwrap());
1,414✔
769
                        assert_eq!(
202✔
770
                            pos + len_rice(value, k) as u64,
606✔
771
                            little_buff.bit_pos().unwrap()
606✔
772
                        );
773

774
                        assert_eq!(pos + len_rice(value, k) as u64, big.bit_pos().unwrap());
1,414✔
775
                        assert_eq!(pos + len_rice(value, k) as u64, little.bit_pos().unwrap());
1,414✔
776
                        assert_eq!(pos + len_rice(value, k) as u64, big_buff.bit_pos().unwrap());
1,414✔
777
                        assert_eq!(
202✔
778
                            pos + len_rice(value, k) as u64,
606✔
779
                            little_buff.bit_pos().unwrap()
606✔
780
                        );
781
                    } else {
782
                        assert!(b.is_err());
×
783
                        assert!(l.is_err());
×
784
                        assert!(bb.is_err());
×
785
                        assert!(lb.is_err());
×
786
                        assert_eq!(pos, big.bit_pos().unwrap());
×
787
                        assert_eq!(pos, little.bit_pos().unwrap());
×
788
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
789
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
790
                    }
791
                }
792
                RandomCommand::ExpGolomb(value, k) => {
1,250✔
793
                    let (b, l, bb, lb) = (
3,125✔
794
                        big.read_exp_golomb(k),
2,500✔
795
                        little.read_exp_golomb(k),
2,500✔
796
                        big_buff.read_exp_golomb(k),
2,500✔
797
                        little_buff.read_exp_golomb(k),
1,250✔
798
                    );
799
                    if succ {
625✔
800
                        assert_eq!(b.unwrap(), value);
1,875✔
801
                        assert_eq!(l.unwrap(), value);
1,875✔
802
                        assert_eq!(bb.unwrap(), value);
1,875✔
803
                        assert_eq!(lb.unwrap(), value);
1,875✔
804
                        assert_eq!(
625✔
805
                            pos + len_exp_golomb(value, k) as u64,
1,875✔
806
                            big.bit_pos().unwrap()
1,875✔
807
                        );
808
                        assert_eq!(
625✔
809
                            pos + len_exp_golomb(value, k) as u64,
1,875✔
810
                            little.bit_pos().unwrap()
1,875✔
811
                        );
812
                        assert_eq!(
625✔
813
                            pos + len_exp_golomb(value, k) as u64,
1,875✔
814
                            big_buff.bit_pos().unwrap()
1,875✔
815
                        );
816
                        assert_eq!(
625✔
817
                            pos + len_exp_golomb(value, k) as u64,
1,875✔
818
                            little_buff.bit_pos().unwrap()
1,875✔
819
                        );
820

821
                        assert_eq!(
625✔
822
                            pos + len_exp_golomb(value, k) as u64,
1,875✔
823
                            big.bit_pos().unwrap()
1,875✔
824
                        );
825
                        assert_eq!(
625✔
826
                            pos + len_exp_golomb(value, k) as u64,
1,875✔
827
                            little.bit_pos().unwrap()
1,875✔
828
                        );
829
                        assert_eq!(
625✔
830
                            pos + len_exp_golomb(value, k) as u64,
1,875✔
831
                            big_buff.bit_pos().unwrap()
1,875✔
832
                        );
833
                        assert_eq!(
625✔
834
                            pos + len_exp_golomb(value, k) as u64,
1,875✔
835
                            little_buff.bit_pos().unwrap()
1,875✔
836
                        );
837
                    } else {
838
                        assert!(b.is_err());
×
839
                        assert!(l.is_err());
×
840
                        assert!(bb.is_err());
×
841
                        assert!(lb.is_err());
×
842
                        assert_eq!(pos, big.bit_pos().unwrap());
×
843
                        assert_eq!(pos, little.bit_pos().unwrap());
×
844
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
845
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
846
                    }
847
                }
848
                RandomCommand::VByteLe(value) => {
601✔
849
                    let (b, l, bb, lb) = (
3,005✔
850
                        big.read_vbyte_le(),
1,803✔
851
                        little.read_vbyte_le(),
1,803✔
852
                        big_buff.read_vbyte_le(),
1,803✔
853
                        little_buff.read_vbyte_le(),
601✔
854
                    );
855
                    if succ {
601✔
856
                        assert_eq!(b.unwrap(), value, "b");
1,803✔
857
                        assert_eq!(l.unwrap(), value, "l");
1,803✔
858
                        assert_eq!(bb.unwrap(), value, "bb");
1,803✔
859
                        assert_eq!(lb.unwrap(), value, "lb");
1,803✔
860
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
3,606✔
861
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
3,606✔
862
                        assert_eq!(
601✔
863
                            pos + bit_len_vbyte(value) as u64,
1,202✔
864
                            big_buff.bit_pos().unwrap()
1,803✔
865
                        );
866
                        assert_eq!(
601✔
867
                            pos + bit_len_vbyte(value) as u64,
1,202✔
868
                            little_buff.bit_pos().unwrap()
1,803✔
869
                        );
870

871
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
3,606✔
872
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
3,606✔
873
                        assert_eq!(
601✔
874
                            pos + bit_len_vbyte(value) as u64,
1,202✔
875
                            big_buff.bit_pos().unwrap()
1,803✔
876
                        );
877
                        assert_eq!(
601✔
878
                            pos + bit_len_vbyte(value) as u64,
1,202✔
879
                            little_buff.bit_pos().unwrap()
1,803✔
880
                        );
881
                    } else {
882
                        assert!(b.is_err());
×
883
                        assert!(l.is_err());
×
884
                        assert!(bb.is_err());
×
885
                        assert!(lb.is_err());
×
886
                        assert_eq!(pos, big.bit_pos().unwrap());
×
887
                        assert_eq!(pos, little.bit_pos().unwrap());
×
888
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
889
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
890
                    }
891
                }
892
                RandomCommand::VByteBe(value) => {
767✔
893
                    let (b, l, bb, lb) = (
3,835✔
894
                        big.read_vbyte_be(),
2,301✔
895
                        little.read_vbyte_be(),
2,301✔
896
                        big_buff.read_vbyte_be(),
2,301✔
897
                        little_buff.read_vbyte_be(),
767✔
898
                    );
899
                    if succ {
767✔
900
                        assert_eq!(b.unwrap(), value, "b");
2,301✔
901
                        assert_eq!(l.unwrap(), value, "l");
2,301✔
902
                        assert_eq!(bb.unwrap(), value, "bb");
2,301✔
903
                        assert_eq!(lb.unwrap(), value, "lb");
2,301✔
904
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
4,602✔
905
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
4,602✔
906
                        assert_eq!(
767✔
907
                            pos + bit_len_vbyte(value) as u64,
1,534✔
908
                            big_buff.bit_pos().unwrap()
2,301✔
909
                        );
910
                        assert_eq!(
767✔
911
                            pos + bit_len_vbyte(value) as u64,
1,534✔
912
                            little_buff.bit_pos().unwrap()
2,301✔
913
                        );
914

915
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
4,602✔
916
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
4,602✔
917
                        assert_eq!(
767✔
918
                            pos + bit_len_vbyte(value) as u64,
1,534✔
919
                            big_buff.bit_pos().unwrap()
2,301✔
920
                        );
921
                        assert_eq!(
767✔
922
                            pos + bit_len_vbyte(value) as u64,
1,534✔
923
                            little_buff.bit_pos().unwrap()
2,301✔
924
                        );
925
                    } else {
926
                        assert!(b.is_err());
×
927
                        assert!(l.is_err());
×
928
                        assert!(bb.is_err());
×
929
                        assert!(lb.is_err());
×
930
                        assert_eq!(pos, big.bit_pos().unwrap());
×
931
                        assert_eq!(pos, little.bit_pos().unwrap());
×
932
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
933
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
934
                    }
935
                }
936
                RandomCommand::Bytes(bytes) => {
971✔
937
                    let mut b_buffer = vec![0; bytes.len()];
3,884✔
938
                    let b = big.read_exact(&mut b_buffer);
3,884✔
939
                    let mut l_buffer = vec![0; bytes.len()];
3,884✔
940
                    let l = little.read_exact(&mut l_buffer);
3,884✔
941
                    let mut bb_buffer = vec![0; bytes.len()];
3,884✔
942
                    let bb = big_buff.read_exact(&mut bb_buffer);
3,884✔
943
                    let mut lb_buffer = vec![0; bytes.len()];
3,884✔
944
                    let lb = little_buff.read_exact(&mut lb_buffer);
3,884✔
945

946
                    if succ {
971✔
947
                        assert_eq!(&b_buffer, &bytes);
2,913✔
948
                        assert_eq!(&l_buffer, &bytes);
2,913✔
949
                        assert_eq!(&bb_buffer, &bytes);
2,913✔
950
                        assert_eq!(&lb_buffer, &bytes);
2,913✔
951
                        assert_eq!(pos + bytes.len() as u64 * 8, big.bit_pos().unwrap());
5,826✔
952
                        assert_eq!(pos + bytes.len() as u64 * 8, little.bit_pos().unwrap());
5,826✔
953
                        assert_eq!(pos + bytes.len() as u64 * 8, big_buff.bit_pos().unwrap());
5,826✔
954
                        assert_eq!(pos + bytes.len() as u64 * 8, little_buff.bit_pos().unwrap());
5,826✔
955

956
                        assert_eq!(pos + bytes.len() as u64 * 8, big.bit_pos().unwrap());
5,826✔
957
                        assert_eq!(pos + bytes.len() as u64 * 8, little.bit_pos().unwrap());
5,826✔
958
                        assert_eq!(pos + bytes.len() as u64 * 8, big_buff.bit_pos().unwrap());
5,826✔
959
                        assert_eq!(pos + bytes.len() as u64 * 8, little_buff.bit_pos().unwrap());
5,826✔
960
                    } else {
961
                        assert!(b.is_err());
×
962
                        assert!(l.is_err());
×
963
                        assert!(bb.is_err());
×
964
                        assert!(lb.is_err());
×
965
                        assert_eq!(pos, big.bit_pos().unwrap());
×
966
                        assert_eq!(pos, little.bit_pos().unwrap());
×
967
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
968
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
969
                    }
970
                }
971
                RandomCommand::Omega(value, read_tab, _) => {
1,196✔
972
                    let (b, l, bb, lb) = if read_tab {
2,990✔
973
                        (
974
                            big.read_omega_param::<true>(),
1,668✔
975
                            little.read_omega_param::<true>(),
1,668✔
976
                            big_buff.read_omega_param::<true>(),
1,668✔
977
                            little_buff.read_omega_param::<true>(),
556✔
978
                        )
979
                    } else {
980
                        (
981
                            big.read_omega_param::<false>(),
126✔
982
                            little.read_omega_param::<false>(),
126✔
983
                            big_buff.read_omega_param::<false>(),
126✔
984
                            little_buff.read_omega_param::<false>(),
42✔
985
                        )
986
                    };
987
                    if succ {
598✔
988
                        assert_eq!(b.unwrap(), value, "b");
1,794✔
989
                        assert_eq!(l.unwrap(), value, "l");
1,794✔
990
                        assert_eq!(bb.unwrap(), value, "bb");
1,794✔
991
                        assert_eq!(lb.unwrap(), value, "lb");
1,794✔
992
                        assert_eq!(
598✔
993
                            pos + len_omega_param::<false>(value) as u64,
1,196✔
994
                            big.bit_pos().unwrap()
1,794✔
995
                        );
996
                        assert_eq!(
598✔
997
                            pos + len_omega_param::<false>(value) as u64,
1,196✔
998
                            little.bit_pos().unwrap()
1,794✔
999
                        );
1000
                        assert_eq!(
598✔
1001
                            pos + len_omega_param::<false>(value) as u64,
1,196✔
1002
                            big_buff.bit_pos().unwrap()
1,794✔
1003
                        );
1004
                        assert_eq!(
598✔
1005
                            pos + len_omega_param::<false>(value) as u64,
1,196✔
1006
                            little_buff.bit_pos().unwrap()
1,794✔
1007
                        );
1008
                        assert_eq!(
598✔
1009
                            pos + len_omega_param::<true>(value) as u64,
1,196✔
1010
                            big.bit_pos().unwrap()
1,794✔
1011
                        );
1012
                        assert_eq!(
598✔
1013
                            pos + len_omega_param::<true>(value) as u64,
1,196✔
1014
                            little.bit_pos().unwrap()
1,794✔
1015
                        );
1016
                        assert_eq!(
598✔
1017
                            pos + len_omega_param::<true>(value) as u64,
1,196✔
1018
                            big_buff.bit_pos().unwrap()
1,794✔
1019
                        );
1020
                        assert_eq!(
598✔
1021
                            pos + len_omega_param::<true>(value) as u64,
1,196✔
1022
                            little_buff.bit_pos().unwrap()
1,794✔
1023
                        );
1024
                    } else {
1025
                        assert!(b.is_err());
×
1026
                        assert!(l.is_err());
×
1027
                        assert!(bb.is_err());
×
1028
                        assert!(lb.is_err());
×
1029
                        assert_eq!(pos, big.bit_pos().unwrap());
×
1030
                        assert_eq!(pos, little.bit_pos().unwrap());
×
1031
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
1032
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
1033
                    }
1034
                }
1035
                RandomCommand::Pi(value, k, read_tab, _) => {
2,943✔
1036
                    let (b, l, bb, lb) = if k == 2 {
4,905✔
1037
                        if read_tab {
4✔
1038
                            (
1039
                                big.read_pi2_param::<true>(),
6✔
1040
                                little.read_pi2_param::<true>(),
6✔
1041
                                big_buff.read_pi2_param::<true>(),
6✔
1042
                                little_buff.read_pi2_param::<true>(),
2✔
1043
                            )
1044
                        } else {
1045
                            (
1046
                                big.read_pi2_param::<false>(),
6✔
1047
                                little.read_pi2_param::<false>(),
6✔
1048
                                big_buff.read_pi2_param::<false>(),
6✔
1049
                                little_buff.read_pi2_param::<false>(),
2✔
1050
                            )
1051
                        }
1052
                    } else {
1053
                        (
1054
                            big.read_pi_param(k),
3,908✔
1055
                            little.read_pi_param(k),
3,908✔
1056
                            big_buff.read_pi_param(k),
3,908✔
1057
                            little_buff.read_pi_param(k),
1,954✔
1058
                        )
1059
                    };
1060
                    if succ {
981✔
1061
                        assert_eq!(bb.unwrap(), value);
2,943✔
1062
                        assert_eq!(lb.unwrap(), value);
2,943✔
1063
                        assert_eq!(b.unwrap(), value);
2,943✔
1064
                        assert_eq!(l.unwrap(), value);
2,943✔
1065
                        assert_eq!(
981✔
1066
                            pos + len_pi_param::<false>(value, k) as u64,
2,943✔
1067
                            big.bit_pos().unwrap()
2,943✔
1068
                        );
1069
                        assert_eq!(
981✔
1070
                            pos + len_pi_param::<false>(value, k) as u64,
2,943✔
1071
                            little.bit_pos().unwrap()
2,943✔
1072
                        );
1073
                        assert_eq!(
981✔
1074
                            pos + len_pi_param::<false>(value, k) as u64,
2,943✔
1075
                            big_buff.bit_pos().unwrap()
2,943✔
1076
                        );
1077
                        assert_eq!(
981✔
1078
                            pos + len_pi_param::<false>(value, k) as u64,
2,943✔
1079
                            little_buff.bit_pos().unwrap()
2,943✔
1080
                        );
1081
                        assert_eq!(
981✔
1082
                            pos + len_pi_param::<true>(value, k) as u64,
2,943✔
1083
                            big.bit_pos().unwrap()
2,943✔
1084
                        );
1085
                        assert_eq!(
981✔
1086
                            pos + len_pi_param::<true>(value, k) as u64,
2,943✔
1087
                            little.bit_pos().unwrap()
2,943✔
1088
                        );
1089
                        assert_eq!(
981✔
1090
                            pos + len_pi_param::<true>(value, k) as u64,
2,943✔
1091
                            big_buff.bit_pos().unwrap()
2,943✔
1092
                        );
1093
                        assert_eq!(
981✔
1094
                            pos + len_pi_param::<true>(value, k) as u64,
2,943✔
1095
                            little_buff.bit_pos().unwrap()
2,943✔
1096
                        );
1097
                    } else {
1098
                        assert!(b.is_err());
×
1099
                        assert!(l.is_err());
×
1100
                        assert!(bb.is_err());
×
1101
                        assert!(lb.is_err());
×
1102
                        assert_eq!(pos, big.bit_pos().unwrap());
×
1103
                        assert_eq!(pos, little.bit_pos().unwrap());
×
1104
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
1105
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
1106
                    }
1107
                }
1108
            };
1109
        }
1110
    }
1111
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc