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

vigna / dsi-bitstream-rs / 22237719643

20 Feb 2026 07:16PM UTC coverage: 54.824% (-0.5%) from 55.302%
22237719643

push

github

vigna
Cosmetic changes

2108 of 3845 relevant lines covered (54.82%)

3125840.71 hits per line

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

83.07
/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::*;
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),
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 {
12,313✔
57
        match command {
11,329✔
58
            RandomCommand::Bits(value, n_bits) => {
1,635✔
59
                *n_bits = 1 + (*n_bits % 63);
545✔
60
                *value &= (1 << *n_bits) - 1;
545✔
61
            }
62
            RandomCommand::MinimalBinary(value, max) => {
837✔
63
                *max = (*max).clamp(1, u32::MAX as _);
558✔
64
                *value %= *max;
279✔
65
            }
66
            RandomCommand::Unary(value) => {
980✔
67
                *value = (*value).min(300);
490✔
68
            }
69
            RandomCommand::Gamma(value, _, _) => {
2,614✔
70
                *value = (*value).min(u64::MAX - 1);
2,614✔
71
            }
72
            RandomCommand::Delta(value, _, _) => {
2,980✔
73
                *value = (*value).min(u64::MAX - 1);
2,980✔
74
            }
75
            RandomCommand::Zeta(value, k, _, _) => {
3,030✔
76
                *value = (*value).min(u32::MAX as u64 - 1);
3,030✔
77
                *k = (*k).clamp(1, 7);
1,010✔
78
            }
79
            RandomCommand::Golomb(value, b) => {
1,731✔
80
                *value = (*value).min(u16::MAX as u64 - 1);
1,731✔
81
                *b = (*b).clamp(1, 20);
577✔
82
            }
83
            RandomCommand::Rice(value, k) => {
627✔
84
                *value = (*value).min(u16::MAX as u64 - 1);
627✔
85
                *k = (*k).clamp(0, 8);
209✔
86
            }
87
            RandomCommand::ExpGolomb(value, k) => {
1,884✔
88
                *value = (*value).min(u16::MAX as u64 - 1);
1,884✔
89
                *k = (*k).clamp(0, 8);
628✔
90
            }
91
            RandomCommand::Bytes(_) => {}
1,316✔
92
            RandomCommand::VByteLe(_) => {}
620✔
93
            RandomCommand::VByteBe(_) => {}
875✔
94
            RandomCommand::Omega(value) => {
1,918✔
95
                *value = (*value).min(u64::MAX - 1);
1,918✔
96
            }
97
            RandomCommand::Pi(value, k, _, _) => {
3,072✔
98
                *value = (*value).min(u32::MAX as u64 - 1);
3,072✔
99
                *k = (*k).clamp(0, 7);
1,024✔
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() {
12,313✔
115
            match command {
11,329✔
116
                RandomCommand::Bits(value, n_bits) => {
1,090✔
117
                    let big_success = big.write_bits(*value, *n_bits).is_ok();
2,725✔
118
                    let little_success = little.write_bits(*value, *n_bits).is_ok();
2,725✔
119
                    assert_eq!(big_success, little_success);
545✔
120
                    writes.push(big_success);
1,635✔
121
                }
122
                RandomCommand::MinimalBinary(value, max) => {
558✔
123
                    let big_success = big.write_minimal_binary(*value, *max).is_ok();
1,395✔
124
                    let little_success = little.write_minimal_binary(*value, *max).is_ok();
1,395✔
125
                    assert_eq!(big_success, little_success);
279✔
126
                    writes.push(big_success);
837✔
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,614✔
137
                    let (big_success, little_success) = if *write_tab {
3,921✔
138
                        (
139
                            big.write_gamma_param::<true>(*value).is_ok(),
4,728✔
140
                            little.write_gamma_param::<true>(*value).is_ok(),
2,364✔
141
                        )
142
                    } else {
143
                        (
144
                            big.write_gamma_param::<false>(*value).is_ok(),
500✔
145
                            little.write_gamma_param::<false>(*value).is_ok(),
250✔
146
                        )
147
                    };
148
                    assert_eq!(big_success, little_success);
1,307✔
149
                    writes.push(big_success);
3,921✔
150
                }
151
                RandomCommand::Delta(value, _, write_tab) => {
2,980✔
152
                    let (big_success, little_success) = if *write_tab {
4,470✔
153
                        (
154
                            big.write_delta_param::<true, false>(*value).is_ok(),
5,044✔
155
                            little.write_delta_param::<true, false>(*value).is_ok(),
2,522✔
156
                        )
157
                    } else {
158
                        (
159
                            big.write_delta_param::<false, false>(*value).is_ok(),
916✔
160
                            little.write_delta_param::<false, false>(*value).is_ok(),
458✔
161
                        )
162
                    };
163
                    assert_eq!(big_success, little_success);
1,490✔
164
                    writes.push(big_success);
4,470✔
165
                }
166
                RandomCommand::Zeta(value, k, _, _write_tab) => {
3,030✔
167
                    let (big_success, little_success) = (
3,030✔
168
                        big.write_zeta_param(*value, *k).is_ok(),
5,050✔
169
                        little.write_zeta_param(*value, *k).is_ok(),
3,030✔
170
                    );
171

172
                    assert_eq!(big_success, little_success);
1,010✔
173
                    writes.push(big_success);
3,030✔
174
                }
175
                RandomCommand::Golomb(value, b) => {
1,154✔
176
                    let (big_success, little_success) = (
1,731✔
177
                        big.write_golomb(*value, *b).is_ok(),
2,885✔
178
                        little.write_golomb(*value, *b).is_ok(),
1,731✔
179
                    );
180
                    assert_eq!(big_success, little_success);
577✔
181
                    writes.push(big_success);
1,731✔
182
                }
183
                RandomCommand::Rice(value, k) => {
418✔
184
                    let (big_success, little_success) = (
627✔
185
                        big.write_rice(*value, *k).is_ok(),
1,045✔
186
                        little.write_rice(*value, *k).is_ok(),
627✔
187
                    );
188
                    assert_eq!(big_success, little_success);
209✔
189
                    writes.push(big_success);
627✔
190
                }
191
                RandomCommand::ExpGolomb(value, k) => {
1,256✔
192
                    let (big_success, little_success) = (
1,884✔
193
                        big.write_exp_golomb(*value, *k).is_ok(),
3,140✔
194
                        little.write_exp_golomb(*value, *k).is_ok(),
1,884✔
195
                    );
196
                    assert_eq!(big_success, little_success);
628✔
197
                    writes.push(big_success);
1,884✔
198
                }
199
                RandomCommand::Bytes(bytes) => {
1,316✔
200
                    let (big_success, little_success) =
2,632✔
201
                        (big.write(bytes).is_ok(), little.write(bytes).is_ok());
6,580✔
202
                    assert_eq!(big_success, little_success);
1,316✔
203
                    writes.push(big_success);
3,948✔
204
                }
205
                RandomCommand::VByteLe(value) => {
620✔
206
                    let (big_success, little_success) = (
1,860✔
207
                        big.write_vbyte_le(*value).is_ok(),
2,480✔
208
                        little.write_vbyte_le(*value).is_ok(),
1,240✔
209
                    );
210
                    assert_eq!(big_success, little_success);
620✔
211
                    writes.push(big_success);
1,860✔
212
                }
213
                RandomCommand::VByteBe(value) => {
875✔
214
                    let (big_success, little_success) = (
2,625✔
215
                        big.write_vbyte_be(*value).is_ok(),
3,500✔
216
                        little.write_vbyte_be(*value).is_ok(),
1,750✔
217
                    );
218
                    assert_eq!(big_success, little_success);
875✔
219
                    writes.push(big_success);
2,625✔
220
                }
221
                RandomCommand::Omega(value) => {
959✔
222
                    let (big_success, little_success) = (
2,877✔
223
                        big.write_omega(*value).is_ok(),
3,836✔
224
                        little.write_omega(*value).is_ok(),
1,918✔
225
                    );
226
                    assert_eq!(big_success, little_success);
959✔
227
                    writes.push(big_success);
2,877✔
228
                }
229
                RandomCommand::Pi(value, k, _, _write_tab) => {
3,072✔
230
                    let (big_success, little_success) = (
3,072✔
231
                        big.write_pi_param(*value, *k).is_ok(),
5,120✔
232
                        little.write_pi_param(*value, *k).is_ok(),
3,072✔
233
                    );
234

235
                    assert_eq!(big_success, little_success);
1,024✔
236
                    writes.push(big_success);
3,072✔
237
                }
238
            };
239
        }
240
    }
241
    // read back
242
    debug!("BE: ");
984✔
243
    for word in &buffer_be {
70,657✔
244
        debug!("{:064b} ", *word);
69,673✔
245
    }
246
    debug!("\n");
984✔
247
    debug!("LE: ");
984✔
248
    for word in &buffer_le {
70,657✔
249
        debug!("{:064b} ", *word);
69,673✔
250
    }
251
    debug!("\n");
984✔
252
    let be_trans: &[ReadWord] = unsafe {
253
        core::slice::from_raw_parts(
254
            buffer_be.as_ptr() as *const ReadWord,
1,968✔
255
            buffer_be.len() * (core::mem::size_of::<u64>() / core::mem::size_of::<ReadWord>()),
2,952✔
256
        )
257
    };
258
    let le_trans: &[ReadWord] = unsafe {
259
        core::slice::from_raw_parts(
260
            buffer_le.as_ptr() as *const ReadWord,
1,968✔
261
            buffer_le.len() * (core::mem::size_of::<u64>() / core::mem::size_of::<ReadWord>()),
2,952✔
262
        )
263
    };
264
    {
265
        let mut big = BitReader::<BE, _>::new(MemWordReader::new(&buffer_be));
3,936✔
266
        let mut big_buff = BufBitReader::<BE, _>::new(MemWordReader::new(be_trans));
3,936✔
267

268
        let mut little = BitReader::<LE, _>::new(MemWordReader::new(&buffer_le));
3,936✔
269
        let mut little_buff = BufBitReader::<LE, _>::new(MemWordReader::new(le_trans));
3,936✔
270

271
        for (succ, command) in writes.into_iter().zip(data.commands.into_iter()) {
27,578✔
272
            let pos = big.bit_pos().unwrap();
45,316✔
273
            assert_eq!(pos, little.bit_pos().unwrap());
45,316✔
274
            assert_eq!(pos, big_buff.bit_pos().unwrap());
45,316✔
275
            assert_eq!(pos, little_buff.bit_pos().unwrap());
45,316✔
276

277
            match command {
11,329✔
278
                RandomCommand::Bits(value, n_bits) => {
1,090✔
279
                    let b = big.read_bits(n_bits);
2,180✔
280
                    let l = little.read_bits(n_bits);
2,180✔
281
                    let bb = big_buff.read_bits(n_bits);
2,180✔
282
                    let lb = little_buff.read_bits(n_bits);
2,180✔
283
                    if succ {
545✔
284
                        let b = b.unwrap();
1,635✔
285
                        let l = l.unwrap();
1,635✔
286
                        let bb = bb.unwrap();
1,635✔
287
                        let lb = lb.unwrap();
1,635✔
288
                        assert_eq!(
545✔
289
                            b,
290
                            value,
291
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
292
                            b,
293
                            value,
294
                            n = n_bits as _
×
295
                        );
296
                        assert_eq!(
545✔
297
                            l,
298
                            value,
299
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
300
                            l,
301
                            value,
302
                            n = n_bits as _
×
303
                        );
304
                        assert_eq!(
545✔
305
                            bb,
306
                            value,
307
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
308
                            bb,
309
                            value,
310
                            n = n_bits as _
×
311
                        );
312
                        assert_eq!(
545✔
313
                            lb,
314
                            value,
315
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
316
                            lb,
317
                            value,
318
                            n = n_bits as _
×
319
                        );
320
                        assert_eq!(pos + n_bits as u64, big.bit_pos().unwrap());
2,725✔
321
                        assert_eq!(pos + n_bits as u64, little.bit_pos().unwrap());
2,725✔
322
                        assert_eq!(pos + n_bits as u64, big_buff.bit_pos().unwrap());
2,725✔
323
                        assert_eq!(pos + n_bits as u64, little_buff.bit_pos().unwrap());
2,725✔
324
                    } else {
325
                        assert!(b.is_err());
×
326
                        assert!(l.is_err());
×
327
                        assert!(bb.is_err());
×
328
                        assert!(lb.is_err());
×
329
                        assert_eq!(pos, big.bit_pos().unwrap());
×
330
                        assert_eq!(pos, little.bit_pos().unwrap());
×
331
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
332
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
333
                    }
334
                }
335

336
                RandomCommand::MinimalBinary(value, max) => {
558✔
337
                    let n_bits = len_minimal_binary(value, max) as u8;
837✔
338
                    let b = big.read_minimal_binary(max);
1,116✔
339
                    let l = little.read_minimal_binary(max);
1,116✔
340
                    let bb = big_buff.read_minimal_binary(max);
1,116✔
341
                    let lb = little_buff.read_minimal_binary(max);
1,116✔
342
                    if succ {
279✔
343
                        let b = b.unwrap();
837✔
344
                        let l = l.unwrap();
837✔
345
                        let bb = bb.unwrap();
837✔
346
                        let lb = lb.unwrap();
837✔
347
                        assert_eq!(
279✔
348
                            b,
349
                            value,
350
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
351
                            b,
352
                            value,
353
                            n = n_bits as _
×
354
                        );
355
                        assert_eq!(
279✔
356
                            l,
357
                            value,
358
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
359
                            l,
360
                            value,
361
                            n = n_bits as _
×
362
                        );
363
                        assert_eq!(
279✔
364
                            bb,
365
                            value,
366
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
367
                            bb,
368
                            value,
369
                            n = n_bits as _
×
370
                        );
371
                        assert_eq!(
279✔
372
                            lb,
373
                            value,
374
                            "\nread : {:0n$b}\ntruth: {:0n$b}",
375
                            lb,
376
                            value,
377
                            n = n_bits as _
×
378
                        );
379
                        assert_eq!(pos + n_bits as u64, big.bit_pos().unwrap());
1,395✔
380
                        assert_eq!(pos + n_bits as u64, little.bit_pos().unwrap());
1,395✔
381
                        assert_eq!(pos + n_bits as u64, big_buff.bit_pos().unwrap());
1,395✔
382
                        assert_eq!(pos + n_bits as u64, little_buff.bit_pos().unwrap());
1,395✔
383
                    } else {
384
                        assert!(b.is_err());
×
385
                        assert!(l.is_err());
×
386
                        assert!(bb.is_err());
×
387
                        assert!(lb.is_err());
×
388
                        assert_eq!(pos, big.bit_pos().unwrap());
×
389
                        assert_eq!(pos, little.bit_pos().unwrap());
×
390
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
391
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
392
                    }
393
                }
394

395
                RandomCommand::Unary(value) => {
490✔
396
                    let (b, l, bb, lb) = (
2,450✔
397
                        big.read_unary(),
1,470✔
398
                        little.read_unary(),
1,470✔
399
                        big_buff.read_unary(),
1,470✔
400
                        little_buff.read_unary(),
490✔
401
                    );
402
                    if succ {
490✔
403
                        assert_eq!(b.unwrap(), value);
1,470✔
404
                        assert_eq!(l.unwrap(), value);
1,470✔
405
                        assert_eq!(bb.unwrap(), value);
1,470✔
406
                        assert_eq!(lb.unwrap(), value);
1,470✔
407
                        assert_eq!(pos + value + 1, big.bit_pos().unwrap());
2,450✔
408
                        assert_eq!(pos + value + 1, little.bit_pos().unwrap());
2,450✔
409
                        assert_eq!(pos + value + 1, big_buff.bit_pos().unwrap());
2,450✔
410
                        assert_eq!(pos + value + 1, little_buff.bit_pos().unwrap());
2,450✔
411

412
                        assert_eq!(pos + value + 1, big.bit_pos().unwrap());
2,450✔
413
                        assert_eq!(pos + value + 1, little.bit_pos().unwrap());
2,450✔
414
                        assert_eq!(pos + value + 1, big_buff.bit_pos().unwrap());
2,450✔
415
                        assert_eq!(pos + value + 1, little_buff.bit_pos().unwrap());
2,450✔
416
                    } else {
417
                        assert!(b.is_err());
×
418
                        assert!(l.is_err());
×
419
                        assert!(bb.is_err());
×
420
                        assert!(lb.is_err());
×
421
                        assert_eq!(pos, big.bit_pos().unwrap());
×
422
                        assert_eq!(pos, little.bit_pos().unwrap());
×
423
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
424
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
425
                    }
426
                }
427

428
                RandomCommand::Gamma(value, read_tab, _) => {
2,614✔
429
                    let (b, l, bb, lb) = if read_tab {
6,535✔
430
                        (
431
                            big.read_gamma_param::<true>(),
3,531✔
432
                            little.read_gamma_param::<true>(),
3,531✔
433
                            big_buff.read_gamma_param::<true>(),
3,531✔
434
                            little_buff.read_gamma_param::<true>(),
1,177✔
435
                        )
436
                    } else {
437
                        (
438
                            big.read_gamma_param::<false>(),
390✔
439
                            little.read_gamma_param::<false>(),
390✔
440
                            big_buff.read_gamma_param::<false>(),
390✔
441
                            little_buff.read_gamma_param::<false>(),
130✔
442
                        )
443
                    };
444
                    if succ {
1,307✔
445
                        assert_eq!(b.unwrap(), value);
3,921✔
446
                        assert_eq!(l.unwrap(), value);
3,921✔
447
                        assert_eq!(bb.unwrap(), value);
3,921✔
448
                        assert_eq!(lb.unwrap(), value);
3,921✔
449
                        assert_eq!(
1,307✔
450
                            pos + len_gamma_param::<false>(value) as u64,
2,614✔
451
                            big.bit_pos().unwrap()
3,921✔
452
                        );
453
                        assert_eq!(
1,307✔
454
                            pos + len_gamma_param::<false>(value) as u64,
2,614✔
455
                            little.bit_pos().unwrap()
3,921✔
456
                        );
457
                        assert_eq!(
1,307✔
458
                            pos + len_gamma_param::<false>(value) as u64,
2,614✔
459
                            big_buff.bit_pos().unwrap()
3,921✔
460
                        );
461
                        assert_eq!(
1,307✔
462
                            pos + len_gamma_param::<false>(value) as u64,
2,614✔
463
                            little_buff.bit_pos().unwrap()
3,921✔
464
                        );
465
                        assert_eq!(
1,307✔
466
                            pos + len_gamma_param::<true>(value) as u64,
2,614✔
467
                            big.bit_pos().unwrap()
3,921✔
468
                        );
469
                        assert_eq!(
1,307✔
470
                            pos + len_gamma_param::<true>(value) as u64,
2,614✔
471
                            little.bit_pos().unwrap()
3,921✔
472
                        );
473
                        assert_eq!(
1,307✔
474
                            pos + len_gamma_param::<true>(value) as u64,
2,614✔
475
                            big_buff.bit_pos().unwrap()
3,921✔
476
                        );
477
                        assert_eq!(
1,307✔
478
                            pos + len_gamma_param::<true>(value) as u64,
2,614✔
479
                            little_buff.bit_pos().unwrap()
3,921✔
480
                        );
481
                    } else {
482
                        assert!(b.is_err());
×
483
                        assert!(l.is_err());
×
484
                        assert!(bb.is_err());
×
485
                        assert!(lb.is_err());
×
486
                        assert_eq!(pos, big.bit_pos().unwrap());
×
487
                        assert_eq!(pos, little.bit_pos().unwrap());
×
488
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
489
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
490
                    }
491
                }
492

493
                RandomCommand::Delta(value, read_tab, _) => {
2,980✔
494
                    let (b, l, bb, lb) = if read_tab {
7,450✔
495
                        (
496
                            big.read_delta_param::<true, false>(),
3,861✔
497
                            little.read_delta_param::<true, false>(),
3,861✔
498
                            big_buff.read_delta_param::<true, false>(),
3,861✔
499
                            little_buff.read_delta_param::<true, false>(),
1,287✔
500
                        )
501
                    } else {
502
                        (
503
                            big.read_delta_param::<false, false>(),
609✔
504
                            little.read_delta_param::<false, false>(),
609✔
505
                            big_buff.read_delta_param::<false, false>(),
609✔
506
                            little_buff.read_delta_param::<false, false>(),
203✔
507
                        )
508
                    };
509
                    if succ {
1,490✔
510
                        assert_eq!(b.unwrap(), value);
4,470✔
511
                        assert_eq!(l.unwrap(), value);
4,470✔
512
                        assert_eq!(bb.unwrap(), value);
4,470✔
513
                        assert_eq!(lb.unwrap(), value);
4,470✔
514
                        assert_eq!(
1,490✔
515
                            pos + len_delta_param::<true, true>(value) as u64,
2,980✔
516
                            big.bit_pos().unwrap()
4,470✔
517
                        );
518
                        assert_eq!(
1,490✔
519
                            pos + len_delta_param::<true, true>(value) as u64,
2,980✔
520
                            little.bit_pos().unwrap()
4,470✔
521
                        );
522
                        assert_eq!(
1,490✔
523
                            pos + len_delta_param::<true, true>(value) as u64,
2,980✔
524
                            big_buff.bit_pos().unwrap()
4,470✔
525
                        );
526
                        assert_eq!(
1,490✔
527
                            pos + len_delta_param::<true, true>(value) as u64,
2,980✔
528
                            little_buff.bit_pos().unwrap()
4,470✔
529
                        );
530
                        assert_eq!(
1,490✔
531
                            pos + len_delta_param::<false, true>(value) as u64,
2,980✔
532
                            big.bit_pos().unwrap()
4,470✔
533
                        );
534
                        assert_eq!(
1,490✔
535
                            pos + len_delta_param::<false, true>(value) as u64,
2,980✔
536
                            little.bit_pos().unwrap()
4,470✔
537
                        );
538
                        assert_eq!(
1,490✔
539
                            pos + len_delta_param::<false, true>(value) as u64,
2,980✔
540
                            big_buff.bit_pos().unwrap()
4,470✔
541
                        );
542
                        assert_eq!(
1,490✔
543
                            pos + len_delta_param::<false, true>(value) as u64,
2,980✔
544
                            little_buff.bit_pos().unwrap()
4,470✔
545
                        );
546
                        assert_eq!(
1,490✔
547
                            pos + len_delta_param::<true, false>(value) as u64,
2,980✔
548
                            big.bit_pos().unwrap()
4,470✔
549
                        );
550
                        assert_eq!(
1,490✔
551
                            pos + len_delta_param::<true, false>(value) as u64,
2,980✔
552
                            little.bit_pos().unwrap()
4,470✔
553
                        );
554
                        assert_eq!(
1,490✔
555
                            pos + len_delta_param::<true, false>(value) as u64,
2,980✔
556
                            big_buff.bit_pos().unwrap()
4,470✔
557
                        );
558
                        assert_eq!(
1,490✔
559
                            pos + len_delta_param::<true, false>(value) as u64,
2,980✔
560
                            little_buff.bit_pos().unwrap()
4,470✔
561
                        );
562
                        assert_eq!(
1,490✔
563
                            pos + len_delta_param::<false, false>(value) as u64,
2,980✔
564
                            big.bit_pos().unwrap()
4,470✔
565
                        );
566
                        assert_eq!(
1,490✔
567
                            pos + len_delta_param::<false, false>(value) as u64,
2,980✔
568
                            little.bit_pos().unwrap()
4,470✔
569
                        );
570
                        assert_eq!(
1,490✔
571
                            pos + len_delta_param::<false, false>(value) as u64,
2,980✔
572
                            big_buff.bit_pos().unwrap()
4,470✔
573
                        );
574
                        assert_eq!(
1,490✔
575
                            pos + len_delta_param::<false, false>(value) as u64,
2,980✔
576
                            little_buff.bit_pos().unwrap()
4,470✔
577
                        );
578
                    } else {
579
                        assert!(b.is_err());
×
580
                        assert!(l.is_err());
×
581
                        assert!(bb.is_err());
×
582
                        assert!(lb.is_err());
×
583
                        assert_eq!(pos, big.bit_pos().unwrap());
×
584
                        assert_eq!(pos, little.bit_pos().unwrap());
×
585
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
586
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
587
                    }
588
                }
589

590
                RandomCommand::Zeta(value, k, read_tab, _) => {
3,030✔
591
                    let (b, l, bb, lb) = if k == 3 {
5,050✔
592
                        if read_tab {
61✔
593
                            (
594
                                big.read_zeta3_param::<true>(),
171✔
595
                                little.read_zeta3_param::<true>(),
171✔
596
                                big_buff.read_zeta3_param::<true>(),
171✔
597
                                little_buff.read_zeta3_param::<true>(),
57✔
598
                            )
599
                        } else {
600
                            (
601
                                big.read_zeta3_param::<false>(),
12✔
602
                                little.read_zeta3_param::<false>(),
12✔
603
                                big_buff.read_zeta3_param::<false>(),
12✔
604
                                little_buff.read_zeta3_param::<false>(),
4✔
605
                            )
606
                        }
607
                    } else {
608
                        (
609
                            big.read_zeta_param(k),
3,796✔
610
                            little.read_zeta_param(k),
3,796✔
611
                            big_buff.read_zeta_param(k),
3,796✔
612
                            little_buff.read_zeta_param(k),
1,898✔
613
                        )
614
                    };
615
                    if succ {
1,010✔
616
                        assert_eq!(bb.unwrap(), value);
3,030✔
617
                        assert_eq!(lb.unwrap(), value);
3,030✔
618
                        assert_eq!(b.unwrap(), value);
3,030✔
619
                        assert_eq!(l.unwrap(), value);
3,030✔
620
                        assert_eq!(
1,010✔
621
                            pos + len_zeta_param::<false>(value, k) as u64,
3,030✔
622
                            big.bit_pos().unwrap()
3,030✔
623
                        );
624
                        assert_eq!(
1,010✔
625
                            pos + len_zeta_param::<false>(value, k) as u64,
3,030✔
626
                            little.bit_pos().unwrap()
3,030✔
627
                        );
628
                        assert_eq!(
1,010✔
629
                            pos + len_zeta_param::<false>(value, k) as u64,
3,030✔
630
                            big_buff.bit_pos().unwrap()
3,030✔
631
                        );
632
                        assert_eq!(
1,010✔
633
                            pos + len_zeta_param::<false>(value, k) as u64,
3,030✔
634
                            little_buff.bit_pos().unwrap()
3,030✔
635
                        );
636
                        assert_eq!(
1,010✔
637
                            pos + len_zeta_param::<true>(value, k) as u64,
3,030✔
638
                            big.bit_pos().unwrap()
3,030✔
639
                        );
640
                        assert_eq!(
1,010✔
641
                            pos + len_zeta_param::<true>(value, k) as u64,
3,030✔
642
                            little.bit_pos().unwrap()
3,030✔
643
                        );
644
                        assert_eq!(
1,010✔
645
                            pos + len_zeta_param::<true>(value, k) as u64,
3,030✔
646
                            big_buff.bit_pos().unwrap()
3,030✔
647
                        );
648
                        assert_eq!(
1,010✔
649
                            pos + len_zeta_param::<true>(value, k) as u64,
3,030✔
650
                            little_buff.bit_pos().unwrap()
3,030✔
651
                        );
652
                    } else {
653
                        assert!(b.is_err());
×
654
                        assert!(l.is_err());
×
655
                        assert!(bb.is_err());
×
656
                        assert!(lb.is_err());
×
657
                        assert_eq!(pos, big.bit_pos().unwrap());
×
658
                        assert_eq!(pos, little.bit_pos().unwrap());
×
659
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
660
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
661
                    }
662
                }
663
                RandomCommand::Golomb(value, b_par) => {
1,154✔
664
                    let (b, l, bb, lb) = (
2,885✔
665
                        big.read_golomb(b_par),
2,308✔
666
                        little.read_golomb(b_par),
2,308✔
667
                        big_buff.read_golomb(b_par),
2,308✔
668
                        little_buff.read_golomb(b_par),
1,154✔
669
                    );
670
                    if succ {
577✔
671
                        assert_eq!(b.unwrap(), value);
1,731✔
672
                        assert_eq!(l.unwrap(), value);
1,731✔
673
                        assert_eq!(bb.unwrap(), value);
1,731✔
674
                        assert_eq!(lb.unwrap(), value);
1,731✔
675
                        assert_eq!(
577✔
676
                            pos + len_golomb(value, b_par) as u64,
1,731✔
677
                            big.bit_pos().unwrap()
1,731✔
678
                        );
679
                        assert_eq!(
577✔
680
                            pos + len_golomb(value, b_par) as u64,
1,731✔
681
                            little.bit_pos().unwrap()
1,731✔
682
                        );
683
                        assert_eq!(
577✔
684
                            pos + len_golomb(value, b_par) as u64,
1,731✔
685
                            big_buff.bit_pos().unwrap()
1,731✔
686
                        );
687
                        assert_eq!(
577✔
688
                            pos + len_golomb(value, b_par) as u64,
1,731✔
689
                            little_buff.bit_pos().unwrap()
1,731✔
690
                        );
691

692
                        assert_eq!(
577✔
693
                            pos + len_golomb(value, b_par) as u64,
1,731✔
694
                            big.bit_pos().unwrap()
1,731✔
695
                        );
696
                        assert_eq!(
577✔
697
                            pos + len_golomb(value, b_par) as u64,
1,731✔
698
                            little.bit_pos().unwrap()
1,731✔
699
                        );
700
                        assert_eq!(
577✔
701
                            pos + len_golomb(value, b_par) as u64,
1,731✔
702
                            big_buff.bit_pos().unwrap()
1,731✔
703
                        );
704
                        assert_eq!(
577✔
705
                            pos + len_golomb(value, b_par) as u64,
1,731✔
706
                            little_buff.bit_pos().unwrap()
1,731✔
707
                        );
708
                    } else {
709
                        assert!(b.is_err());
×
710
                        assert!(l.is_err());
×
711
                        assert!(bb.is_err());
×
712
                        assert!(lb.is_err());
×
713
                        assert_eq!(pos, big.bit_pos().unwrap());
×
714
                        assert_eq!(pos, little.bit_pos().unwrap());
×
715
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
716
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
717
                    }
718
                }
719
                RandomCommand::Rice(value, k) => {
418✔
720
                    let (b, l, bb, lb) = (
1,045✔
721
                        big.read_rice(k),
836✔
722
                        little.read_rice(k),
836✔
723
                        big_buff.read_rice(k),
836✔
724
                        little_buff.read_rice(k),
418✔
725
                    );
726
                    if succ {
209✔
727
                        assert_eq!(b.unwrap(), value);
627✔
728
                        assert_eq!(l.unwrap(), value);
627✔
729
                        assert_eq!(bb.unwrap(), value);
627✔
730
                        assert_eq!(lb.unwrap(), value);
627✔
731
                        assert_eq!(pos + len_rice(value, k) as u64, big.bit_pos().unwrap());
1,463✔
732
                        assert_eq!(pos + len_rice(value, k) as u64, little.bit_pos().unwrap());
1,463✔
733
                        assert_eq!(pos + len_rice(value, k) as u64, big_buff.bit_pos().unwrap());
1,463✔
734
                        assert_eq!(
209✔
735
                            pos + len_rice(value, k) as u64,
627✔
736
                            little_buff.bit_pos().unwrap()
627✔
737
                        );
738

739
                        assert_eq!(pos + len_rice(value, k) as u64, big.bit_pos().unwrap());
1,463✔
740
                        assert_eq!(pos + len_rice(value, k) as u64, little.bit_pos().unwrap());
1,463✔
741
                        assert_eq!(pos + len_rice(value, k) as u64, big_buff.bit_pos().unwrap());
1,463✔
742
                        assert_eq!(
209✔
743
                            pos + len_rice(value, k) as u64,
627✔
744
                            little_buff.bit_pos().unwrap()
627✔
745
                        );
746
                    } else {
747
                        assert!(b.is_err());
×
748
                        assert!(l.is_err());
×
749
                        assert!(bb.is_err());
×
750
                        assert!(lb.is_err());
×
751
                        assert_eq!(pos, big.bit_pos().unwrap());
×
752
                        assert_eq!(pos, little.bit_pos().unwrap());
×
753
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
754
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
755
                    }
756
                }
757
                RandomCommand::ExpGolomb(value, k) => {
1,256✔
758
                    let (b, l, bb, lb) = (
3,140✔
759
                        big.read_exp_golomb(k),
2,512✔
760
                        little.read_exp_golomb(k),
2,512✔
761
                        big_buff.read_exp_golomb(k),
2,512✔
762
                        little_buff.read_exp_golomb(k),
1,256✔
763
                    );
764
                    if succ {
628✔
765
                        assert_eq!(b.unwrap(), value);
1,884✔
766
                        assert_eq!(l.unwrap(), value);
1,884✔
767
                        assert_eq!(bb.unwrap(), value);
1,884✔
768
                        assert_eq!(lb.unwrap(), value);
1,884✔
769
                        assert_eq!(
628✔
770
                            pos + len_exp_golomb(value, k) as u64,
1,884✔
771
                            big.bit_pos().unwrap()
1,884✔
772
                        );
773
                        assert_eq!(
628✔
774
                            pos + len_exp_golomb(value, k) as u64,
1,884✔
775
                            little.bit_pos().unwrap()
1,884✔
776
                        );
777
                        assert_eq!(
628✔
778
                            pos + len_exp_golomb(value, k) as u64,
1,884✔
779
                            big_buff.bit_pos().unwrap()
1,884✔
780
                        );
781
                        assert_eq!(
628✔
782
                            pos + len_exp_golomb(value, k) as u64,
1,884✔
783
                            little_buff.bit_pos().unwrap()
1,884✔
784
                        );
785

786
                        assert_eq!(
628✔
787
                            pos + len_exp_golomb(value, k) as u64,
1,884✔
788
                            big.bit_pos().unwrap()
1,884✔
789
                        );
790
                        assert_eq!(
628✔
791
                            pos + len_exp_golomb(value, k) as u64,
1,884✔
792
                            little.bit_pos().unwrap()
1,884✔
793
                        );
794
                        assert_eq!(
628✔
795
                            pos + len_exp_golomb(value, k) as u64,
1,884✔
796
                            big_buff.bit_pos().unwrap()
1,884✔
797
                        );
798
                        assert_eq!(
628✔
799
                            pos + len_exp_golomb(value, k) as u64,
1,884✔
800
                            little_buff.bit_pos().unwrap()
1,884✔
801
                        );
802
                    } else {
803
                        assert!(b.is_err());
×
804
                        assert!(l.is_err());
×
805
                        assert!(bb.is_err());
×
806
                        assert!(lb.is_err());
×
807
                        assert_eq!(pos, big.bit_pos().unwrap());
×
808
                        assert_eq!(pos, little.bit_pos().unwrap());
×
809
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
810
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
811
                    }
812
                }
813
                RandomCommand::VByteLe(value) => {
620✔
814
                    let (b, l, bb, lb) = (
3,100✔
815
                        big.read_vbyte_le(),
1,860✔
816
                        little.read_vbyte_le(),
1,860✔
817
                        big_buff.read_vbyte_le(),
1,860✔
818
                        little_buff.read_vbyte_le(),
620✔
819
                    );
820
                    if succ {
620✔
821
                        assert_eq!(b.unwrap(), value, "b");
1,860✔
822
                        assert_eq!(l.unwrap(), value, "l");
1,860✔
823
                        assert_eq!(bb.unwrap(), value, "bb");
1,860✔
824
                        assert_eq!(lb.unwrap(), value, "lb");
1,860✔
825
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
3,720✔
826
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
3,720✔
827
                        assert_eq!(
620✔
828
                            pos + bit_len_vbyte(value) as u64,
1,240✔
829
                            big_buff.bit_pos().unwrap()
1,860✔
830
                        );
831
                        assert_eq!(
620✔
832
                            pos + bit_len_vbyte(value) as u64,
1,240✔
833
                            little_buff.bit_pos().unwrap()
1,860✔
834
                        );
835

836
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
3,720✔
837
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
3,720✔
838
                        assert_eq!(
620✔
839
                            pos + bit_len_vbyte(value) as u64,
1,240✔
840
                            big_buff.bit_pos().unwrap()
1,860✔
841
                        );
842
                        assert_eq!(
620✔
843
                            pos + bit_len_vbyte(value) as u64,
1,240✔
844
                            little_buff.bit_pos().unwrap()
1,860✔
845
                        );
846
                    } else {
847
                        assert!(b.is_err());
×
848
                        assert!(l.is_err());
×
849
                        assert!(bb.is_err());
×
850
                        assert!(lb.is_err());
×
851
                        assert_eq!(pos, big.bit_pos().unwrap());
×
852
                        assert_eq!(pos, little.bit_pos().unwrap());
×
853
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
854
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
855
                    }
856
                }
857
                RandomCommand::VByteBe(value) => {
875✔
858
                    let (b, l, bb, lb) = (
4,375✔
859
                        big.read_vbyte_be(),
2,625✔
860
                        little.read_vbyte_be(),
2,625✔
861
                        big_buff.read_vbyte_be(),
2,625✔
862
                        little_buff.read_vbyte_be(),
875✔
863
                    );
864
                    if succ {
875✔
865
                        assert_eq!(b.unwrap(), value, "b");
2,625✔
866
                        assert_eq!(l.unwrap(), value, "l");
2,625✔
867
                        assert_eq!(bb.unwrap(), value, "bb");
2,625✔
868
                        assert_eq!(lb.unwrap(), value, "lb");
2,625✔
869
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
5,250✔
870
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
5,250✔
871
                        assert_eq!(
875✔
872
                            pos + bit_len_vbyte(value) as u64,
1,750✔
873
                            big_buff.bit_pos().unwrap()
2,625✔
874
                        );
875
                        assert_eq!(
875✔
876
                            pos + bit_len_vbyte(value) as u64,
1,750✔
877
                            little_buff.bit_pos().unwrap()
2,625✔
878
                        );
879

880
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
5,250✔
881
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
5,250✔
882
                        assert_eq!(
875✔
883
                            pos + bit_len_vbyte(value) as u64,
1,750✔
884
                            big_buff.bit_pos().unwrap()
2,625✔
885
                        );
886
                        assert_eq!(
875✔
887
                            pos + bit_len_vbyte(value) as u64,
1,750✔
888
                            little_buff.bit_pos().unwrap()
2,625✔
889
                        );
890
                    } else {
891
                        assert!(b.is_err());
×
892
                        assert!(l.is_err());
×
893
                        assert!(bb.is_err());
×
894
                        assert!(lb.is_err());
×
895
                        assert_eq!(pos, big.bit_pos().unwrap());
×
896
                        assert_eq!(pos, little.bit_pos().unwrap());
×
897
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
898
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
899
                    }
900
                }
901
                RandomCommand::Bytes(bytes) => {
1,316✔
902
                    let mut b_buffer = vec![0; bytes.len()];
5,264✔
903
                    let b = big.read_exact(&mut b_buffer);
5,264✔
904
                    let mut l_buffer = vec![0; bytes.len()];
5,264✔
905
                    let l = little.read_exact(&mut l_buffer);
5,264✔
906
                    let mut bb_buffer = vec![0; bytes.len()];
5,264✔
907
                    let bb = big_buff.read_exact(&mut bb_buffer);
5,264✔
908
                    let mut lb_buffer = vec![0; bytes.len()];
5,264✔
909
                    let lb = little_buff.read_exact(&mut lb_buffer);
5,264✔
910

911
                    if succ {
1,316✔
912
                        assert_eq!(&b_buffer, &bytes);
3,948✔
913
                        assert_eq!(&l_buffer, &bytes);
3,948✔
914
                        assert_eq!(&bb_buffer, &bytes);
3,948✔
915
                        assert_eq!(&lb_buffer, &bytes);
3,948✔
916
                        assert_eq!(pos + bytes.len() as u64 * 8, big.bit_pos().unwrap());
7,896✔
917
                        assert_eq!(pos + bytes.len() as u64 * 8, little.bit_pos().unwrap());
7,896✔
918
                        assert_eq!(pos + bytes.len() as u64 * 8, big_buff.bit_pos().unwrap());
7,896✔
919
                        assert_eq!(pos + bytes.len() as u64 * 8, little_buff.bit_pos().unwrap());
7,896✔
920

921
                        assert_eq!(pos + bytes.len() as u64 * 8, big.bit_pos().unwrap());
7,896✔
922
                        assert_eq!(pos + bytes.len() as u64 * 8, little.bit_pos().unwrap());
7,896✔
923
                        assert_eq!(pos + bytes.len() as u64 * 8, big_buff.bit_pos().unwrap());
7,896✔
924
                        assert_eq!(pos + bytes.len() as u64 * 8, little_buff.bit_pos().unwrap());
7,896✔
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::Omega(value) => {
959✔
937
                    let (b, l, bb, lb) = (
4,795✔
938
                        big.read_omega(),
2,877✔
939
                        little.read_omega(),
2,877✔
940
                        big_buff.read_omega(),
2,877✔
941
                        little_buff.read_omega(),
959✔
942
                    );
943
                    if succ {
959✔
944
                        assert_eq!(b.unwrap(), value, "b");
2,877✔
945
                        assert_eq!(l.unwrap(), value, "l");
2,877✔
946
                        assert_eq!(bb.unwrap(), value, "bb");
2,877✔
947
                        assert_eq!(lb.unwrap(), value, "lb");
2,877✔
948
                        assert_eq!(pos + len_omega(value) as u64, big.bit_pos().unwrap());
5,754✔
949
                        assert_eq!(pos + len_omega(value) as u64, little.bit_pos().unwrap());
5,754✔
950
                        assert_eq!(pos + len_omega(value) as u64, big_buff.bit_pos().unwrap());
5,754✔
951
                        assert_eq!(
959✔
952
                            pos + len_omega(value) as u64,
1,918✔
953
                            little_buff.bit_pos().unwrap()
2,877✔
954
                        );
955

956
                        assert_eq!(pos + len_omega(value) as u64, big.bit_pos().unwrap());
5,754✔
957
                        assert_eq!(pos + len_omega(value) as u64, little.bit_pos().unwrap());
5,754✔
958
                        assert_eq!(pos + len_omega(value) as u64, big_buff.bit_pos().unwrap());
5,754✔
959
                        assert_eq!(
959✔
960
                            pos + len_omega(value) as u64,
1,918✔
961
                            little_buff.bit_pos().unwrap()
2,877✔
962
                        );
963
                    } else {
964
                        assert!(b.is_err());
×
965
                        assert!(l.is_err());
×
966
                        assert!(bb.is_err());
×
967
                        assert!(lb.is_err());
×
968
                        assert_eq!(pos, big.bit_pos().unwrap());
×
969
                        assert_eq!(pos, little.bit_pos().unwrap());
×
970
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
971
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
972
                    }
973
                }
974
                RandomCommand::Pi(value, k, read_tab, _) => {
3,072✔
975
                    let (b, l, bb, lb) = if k == 2 {
5,120✔
976
                        if read_tab {
7✔
977
                            (
978
                                big.read_pi2_param::<true>(),
12✔
979
                                little.read_pi2_param::<true>(),
12✔
980
                                big_buff.read_pi2_param::<true>(),
12✔
981
                                little_buff.read_pi2_param::<true>(),
4✔
982
                            )
983
                        } else {
984
                            (
985
                                big.read_pi2_param::<false>(),
9✔
986
                                little.read_pi2_param::<false>(),
9✔
987
                                big_buff.read_pi2_param::<false>(),
9✔
988
                                little_buff.read_pi2_param::<false>(),
3✔
989
                            )
990
                        }
991
                    } else {
992
                        (
993
                            big.read_pi_param(k),
4,068✔
994
                            little.read_pi_param(k),
4,068✔
995
                            big_buff.read_pi_param(k),
4,068✔
996
                            little_buff.read_pi_param(k),
2,034✔
997
                        )
998
                    };
999
                    if succ {
1,024✔
1000
                        assert_eq!(bb.unwrap(), value);
3,072✔
1001
                        assert_eq!(lb.unwrap(), value);
3,072✔
1002
                        assert_eq!(b.unwrap(), value);
3,072✔
1003
                        assert_eq!(l.unwrap(), value);
3,072✔
1004
                        assert_eq!(
1,024✔
1005
                            pos + len_pi_param::<false>(value, k) as u64,
3,072✔
1006
                            big.bit_pos().unwrap()
3,072✔
1007
                        );
1008
                        assert_eq!(
1,024✔
1009
                            pos + len_pi_param::<false>(value, k) as u64,
3,072✔
1010
                            little.bit_pos().unwrap()
3,072✔
1011
                        );
1012
                        assert_eq!(
1,024✔
1013
                            pos + len_pi_param::<false>(value, k) as u64,
3,072✔
1014
                            big_buff.bit_pos().unwrap()
3,072✔
1015
                        );
1016
                        assert_eq!(
1,024✔
1017
                            pos + len_pi_param::<false>(value, k) as u64,
3,072✔
1018
                            little_buff.bit_pos().unwrap()
3,072✔
1019
                        );
1020
                        assert_eq!(
1,024✔
1021
                            pos + len_pi_param::<true>(value, k) as u64,
3,072✔
1022
                            big.bit_pos().unwrap()
3,072✔
1023
                        );
1024
                        assert_eq!(
1,024✔
1025
                            pos + len_pi_param::<true>(value, k) as u64,
3,072✔
1026
                            little.bit_pos().unwrap()
3,072✔
1027
                        );
1028
                        assert_eq!(
1,024✔
1029
                            pos + len_pi_param::<true>(value, k) as u64,
3,072✔
1030
                            big_buff.bit_pos().unwrap()
3,072✔
1031
                        );
1032
                        assert_eq!(
1,024✔
1033
                            pos + len_pi_param::<true>(value, k) as u64,
3,072✔
1034
                            little_buff.bit_pos().unwrap()
3,072✔
1035
                        );
1036
                    } else {
1037
                        assert!(b.is_err());
×
1038
                        assert!(l.is_err());
×
1039
                        assert!(bb.is_err());
×
1040
                        assert!(lb.is_err());
×
1041
                        assert_eq!(pos, big.bit_pos().unwrap());
×
1042
                        assert_eq!(pos, little.bit_pos().unwrap());
×
1043
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
1044
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
1045
                    }
1046
                }
1047
            };
1048
        }
1049
    }
1050
}
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