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

vigna / dsi-bitstream-rs / 18131186772

30 Sep 2025 01:16PM UTC coverage: 48.731% (-3.0%) from 51.712%
18131186772

push

github

vigna
Better error message

0 of 2 new or added lines in 1 file covered. (0.0%)

114 existing lines in 12 files now uncovered.

1728 of 3546 relevant lines covered (48.73%)

1985043.52 hits per line

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

76.93
/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),
52
}
53

54
pub fn harness(data: FuzzCase) {
469✔
55
    let mut data = data;
938✔
56
    for command in &mut data.commands {
2,699✔
57
        match command {
×
58
            RandomCommand::Bits(value, n_bits) => {
161✔
UNCOV
59
                *n_bits = 1 + (*n_bits % 63);
×
UNCOV
60
                *value &= (1 << *n_bits) - 1;
×
61
            }
62
            RandomCommand::MinimalBinary(value, max) => {
27✔
63
                *max = (*max).max(1).min(u32::MAX as _);
36✔
64
                *value = (*value) % *max;
9✔
65
            }
66
            RandomCommand::Unary(value) => {
110✔
67
                *value = (*value).min(300);
55✔
68
            }
69
            RandomCommand::Gamma(value, _, _) => {
6✔
70
                *value = (*value).min(u64::MAX - 1);
6✔
71
            }
72
            RandomCommand::Delta(value, _, _) => {
50✔
73
                *value = (*value).min(u64::MAX - 1);
50✔
74
            }
75
            RandomCommand::Zeta(value, k, _, _) => {
1,305✔
76
                *value = (*value).min(u32::MAX as u64 - 1);
1,305✔
77
                *k = (*k).max(1).min(7);
870✔
78
            }
79
            RandomCommand::Golomb(value, b) => {
174✔
80
                *value = (*value).min(u16::MAX as u64 - 1);
174✔
81
                *b = (*b).max(1).min(20);
116✔
82
            }
83
            RandomCommand::Rice(value, k) => {
63✔
84
                *value = (*value).min(u16::MAX as u64 - 1);
63✔
85
                *k = (*k).max(0).min(8);
42✔
86
            }
87
            RandomCommand::ExpGolomb(value, k) => {
207✔
88
                *value = (*value).min(u16::MAX as u64 - 1);
207✔
89
                *k = (*k).max(0).min(8);
138✔
90
            }
91
            RandomCommand::Bytes(_) => {}
30✔
92
            RandomCommand::VByteLe(_) => {}
75✔
93
            RandomCommand::VByteBe(_) => {}
16✔
94
            RandomCommand::Omega(value) => {
20✔
95
                *value = (*value).min(u64::MAX - 1);
20✔
96
            }
97
            RandomCommand::Pi(value, k) => {
444✔
98
                *value = (*value).min(u32::MAX as u64 - 1);
444✔
99
                *k = (*k).max(1).min(7);
296✔
100
            }
101
        };
102
    }
103

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

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

114
        for command in data.commands.iter() {
2,053✔
115
            match command {
1,115✔
116
                RandomCommand::Bits(value, n_bits) => {
161✔
UNCOV
117
                    let big_success = big.write_bits(*value, *n_bits).is_ok();
×
UNCOV
118
                    let little_success = little.write_bits(*value, *n_bits).is_ok();
×
UNCOV
119
                    assert_eq!(big_success, little_success);
×
120
                    writes.push(big_success);
161✔
121
                }
122
                RandomCommand::MinimalBinary(value, max) => {
18✔
123
                    let big_success = big.write_minimal_binary(*value, *max).is_ok();
45✔
124
                    let little_success = little.write_minimal_binary(*value, *max).is_ok();
45✔
125
                    assert_eq!(big_success, little_success);
9✔
126
                    writes.push(big_success);
27✔
127
                }
128
                RandomCommand::Unary(value) => {
55✔
129
                    let (big_success, little_success) = (
165✔
130
                        big.write_unary(*value as u64).is_ok(),
220✔
131
                        little.write_unary(*value as u64).is_ok(),
110✔
132
                    );
133
                    assert_eq!(big_success, little_success);
55✔
134
                    writes.push(big_success);
165✔
135
                }
136
                RandomCommand::Gamma(value, _, write_tab) => {
6✔
137
                    let (big_success, little_success) = if *write_tab {
9✔
138
                        (
139
                            big.write_gamma_param::<true>(*value).is_ok(),
4✔
140
                            little.write_gamma_param::<true>(*value).is_ok(),
2✔
141
                        )
142
                    } else {
143
                        (
144
                            big.write_gamma_param::<false>(*value).is_ok(),
2✔
145
                            little.write_gamma_param::<false>(*value).is_ok(),
2✔
146
                        )
147
                    };
148
                    assert_eq!(big_success, little_success);
3✔
149
                    writes.push(big_success);
9✔
150
                }
151
                RandomCommand::Delta(value, _, write_tab) => {
50✔
152
                    let (big_success, little_success) = if *write_tab {
75✔
153
                        (
154
                            big.write_delta_param::<true, false>(*value).is_ok(),
60✔
155
                            little.write_delta_param::<true, false>(*value).is_ok(),
30✔
156
                        )
157
                    } else {
158
                        (
159
                            big.write_delta_param::<false, false>(*value).is_ok(),
10✔
160
                            little.write_delta_param::<false, false>(*value).is_ok(),
10✔
161
                        )
162
                    };
163
                    assert_eq!(big_success, little_success);
25✔
164
                    writes.push(big_success);
75✔
165
                }
166
                RandomCommand::Zeta(value, k, _, write_tab) => {
1,305✔
167
                    let (big_success, little_success) = if *write_tab {
1,305✔
168
                        (
169
                            big.write_zeta_param::<true>(*value, *k).is_ok(),
1,905✔
170
                            little.write_zeta_param::<true>(*value, *k).is_ok(),
1,143✔
171
                        )
172
                    } else {
173
                        (
174
                            big.write_zeta_param::<false>(*value, *k).is_ok(),
54✔
175
                            little.write_zeta_param::<false>(*value, *k).is_ok(),
54✔
176
                        )
177
                    };
178
                    assert_eq!(big_success, little_success);
435✔
179
                    writes.push(big_success);
1,305✔
180
                }
181
                RandomCommand::Golomb(value, b) => {
116✔
182
                    let (big_success, little_success) = (
174✔
183
                        big.write_golomb(*value, *b).is_ok(),
290✔
184
                        little.write_golomb(*value, *b).is_ok(),
174✔
185
                    );
186
                    assert_eq!(big_success, little_success);
58✔
187
                    writes.push(big_success);
174✔
188
                }
189
                RandomCommand::Rice(value, k) => {
42✔
190
                    let (big_success, little_success) = (
63✔
191
                        big.write_rice(*value, *k).is_ok(),
105✔
192
                        little.write_rice(*value, *k).is_ok(),
63✔
193
                    );
194
                    assert_eq!(big_success, little_success);
21✔
195
                    writes.push(big_success);
63✔
196
                }
197
                RandomCommand::ExpGolomb(value, k) => {
138✔
198
                    let (big_success, little_success) = (
207✔
199
                        big.write_exp_golomb(*value, *k).is_ok(),
345✔
200
                        little.write_exp_golomb(*value, *k).is_ok(),
207✔
201
                    );
202
                    assert_eq!(big_success, little_success);
69✔
203
                    writes.push(big_success);
207✔
204
                }
205
                RandomCommand::Bytes(bytes) => {
30✔
206
                    let (big_success, little_success) =
60✔
207
                        (big.write(bytes).is_ok(), little.write(bytes).is_ok());
150✔
208
                    assert_eq!(big_success, little_success);
30✔
209
                    writes.push(big_success);
90✔
210
                }
211
                RandomCommand::VByteLe(value) => {
75✔
212
                    let (big_success, little_success) = (
225✔
213
                        big.write_vbyte_le(*value).is_ok(),
300✔
214
                        little.write_vbyte_le(*value).is_ok(),
150✔
215
                    );
216
                    assert_eq!(big_success, little_success);
75✔
217
                    writes.push(big_success);
225✔
218
                }
219
                RandomCommand::VByteBe(value) => {
16✔
220
                    let (big_success, little_success) = (
48✔
221
                        big.write_vbyte_be(*value).is_ok(),
64✔
222
                        little.write_vbyte_be(*value).is_ok(),
32✔
223
                    );
224
                    assert_eq!(big_success, little_success);
16✔
225
                    writes.push(big_success);
48✔
226
                }
227
                RandomCommand::Omega(value) => {
10✔
228
                    let (big_success, little_success) = (
30✔
229
                        big.write_omega(*value).is_ok(),
40✔
230
                        little.write_omega(*value).is_ok(),
20✔
231
                    );
232
                    assert_eq!(big_success, little_success);
10✔
233
                    writes.push(big_success);
30✔
234
                }
235
                RandomCommand::Pi(value, k) => {
296✔
236
                    let (big_success, little_success) = (
444✔
237
                        big.write_pi(*value, *k).is_ok(),
740✔
238
                        little.write_pi(*value, *k).is_ok(),
444✔
239
                    );
240
                    assert_eq!(big_success, little_success);
148✔
241
                    writes.push(big_success);
444✔
242
                }
243
            };
244
        }
245
    }
246
    // read back
247
    debug!("BE: ");
469✔
248
    for word in &buffer_be {
14,717✔
249
        debug!("{:064b} ", *word);
×
250
    }
251
    debug!("\n");
×
252
    debug!("LE: ");
×
253
    for word in &buffer_le {
14,717✔
254
        debug!("{:064b} ", *word);
×
255
    }
256
    debug!("\n");
×
257
    let be_trans: &[ReadWord] = unsafe {
258
        core::slice::from_raw_parts(
259
            buffer_be.as_ptr() as *const ReadWord,
×
260
            buffer_be.len() * (core::mem::size_of::<u64>() / core::mem::size_of::<ReadWord>()),
×
261
        )
262
    };
263
    let le_trans: &[ReadWord] = unsafe {
264
        core::slice::from_raw_parts(
265
            buffer_le.as_ptr() as *const ReadWord,
×
266
            buffer_le.len() * (core::mem::size_of::<u64>() / core::mem::size_of::<ReadWord>()),
×
267
        )
268
    };
269
    {
270
        let mut big = BitReader::<BE, _>::new(MemWordReader::new(&buffer_be));
×
271
        let mut big_buff = BufBitReader::<BE, _>::new(MemWordReader::new(be_trans));
×
272

273
        let mut little = BitReader::<LE, _>::new(MemWordReader::new(&buffer_le));
×
274
        let mut little_buff = BufBitReader::<LE, _>::new(MemWordReader::new(le_trans));
×
275

276
        for (succ, command) in writes.into_iter().zip(data.commands.into_iter()) {
2,230✔
277
            let pos = big.bit_pos().unwrap();
4,460✔
278
            assert_eq!(pos, little.bit_pos().unwrap());
4,460✔
279
            assert_eq!(pos, big_buff.bit_pos().unwrap());
4,460✔
280
            assert_eq!(pos, little_buff.bit_pos().unwrap());
4,460✔
281

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

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

400
                RandomCommand::Unary(value) => {
55✔
401
                    let (b, l, bb, lb) = (
275✔
402
                        big.read_unary(),
165✔
403
                        little.read_unary(),
165✔
404
                        big_buff.read_unary(),
165✔
405
                        little_buff.read_unary(),
55✔
406
                    );
407
                    if succ {
55✔
408
                        assert_eq!(b.unwrap(), value as u64);
220✔
409
                        assert_eq!(l.unwrap(), value as u64);
220✔
410
                        assert_eq!(bb.unwrap(), value as u64);
220✔
411
                        assert_eq!(lb.unwrap(), value as u64);
220✔
412
                        assert_eq!(pos + value as u64 + 1, big.bit_pos().unwrap());
275✔
413
                        assert_eq!(pos + value as u64 + 1, little.bit_pos().unwrap());
275✔
414
                        assert_eq!(pos + value as u64 + 1, big_buff.bit_pos().unwrap());
275✔
415
                        assert_eq!(pos + value as u64 + 1, little_buff.bit_pos().unwrap());
275✔
416

417
                        assert_eq!(pos + value as u64 + 1, big.bit_pos().unwrap());
275✔
418
                        assert_eq!(pos + value as u64 + 1, little.bit_pos().unwrap());
275✔
419
                        assert_eq!(pos + value as u64 + 1, big_buff.bit_pos().unwrap());
275✔
420
                        assert_eq!(pos + value as u64 + 1, little_buff.bit_pos().unwrap());
275✔
421
                    } else {
422
                        assert!(b.is_err());
×
423
                        assert!(l.is_err());
×
424
                        assert!(bb.is_err());
×
425
                        assert!(lb.is_err());
×
426
                        assert_eq!(pos, big.bit_pos().unwrap());
×
427
                        assert_eq!(pos, little.bit_pos().unwrap());
×
428
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
429
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
430
                    }
431
                }
432

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

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

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

697
                        assert_eq!(
58✔
698
                            pos + len_golomb(value, b_par) as u64,
174✔
699
                            big.bit_pos().unwrap()
174✔
700
                        );
701
                        assert_eq!(
58✔
702
                            pos + len_golomb(value, b_par) as u64,
174✔
703
                            little.bit_pos().unwrap()
174✔
704
                        );
705
                        assert_eq!(
58✔
706
                            pos + len_golomb(value, b_par) as u64,
174✔
707
                            big_buff.bit_pos().unwrap()
174✔
708
                        );
709
                        assert_eq!(
58✔
710
                            pos + len_golomb(value, b_par) as u64,
174✔
711
                            little_buff.bit_pos().unwrap()
174✔
712
                        );
713
                    } else {
714
                        assert!(b.is_err());
×
715
                        assert!(l.is_err());
×
716
                        assert!(bb.is_err());
×
717
                        assert!(lb.is_err());
×
718
                        assert_eq!(pos, big.bit_pos().unwrap());
×
719
                        assert_eq!(pos, little.bit_pos().unwrap());
×
720
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
721
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
722
                    }
723
                }
724
                RandomCommand::Rice(value, k) => {
42✔
725
                    let (b, l, bb, lb) = (
105✔
726
                        big.read_rice(k),
84✔
727
                        little.read_rice(k),
84✔
728
                        big_buff.read_rice(k),
84✔
729
                        little_buff.read_rice(k),
42✔
730
                    );
731
                    if succ {
21✔
732
                        assert_eq!(b.unwrap(), value as u64);
84✔
733
                        assert_eq!(l.unwrap(), value as u64);
84✔
734
                        assert_eq!(bb.unwrap(), value as u64);
84✔
735
                        assert_eq!(lb.unwrap(), value as u64);
84✔
736
                        assert_eq!(pos + len_rice(value, k) as u64, big.bit_pos().unwrap());
147✔
737
                        assert_eq!(pos + len_rice(value, k) as u64, little.bit_pos().unwrap());
147✔
738
                        assert_eq!(pos + len_rice(value, k) as u64, big_buff.bit_pos().unwrap());
147✔
739
                        assert_eq!(
21✔
740
                            pos + len_rice(value, k) as u64,
63✔
741
                            little_buff.bit_pos().unwrap()
63✔
742
                        );
743

744
                        assert_eq!(pos + len_rice(value, k) as u64, big.bit_pos().unwrap());
147✔
745
                        assert_eq!(pos + len_rice(value, k) as u64, little.bit_pos().unwrap());
147✔
746
                        assert_eq!(pos + len_rice(value, k) as u64, big_buff.bit_pos().unwrap());
147✔
747
                        assert_eq!(
21✔
748
                            pos + len_rice(value, k) as u64,
63✔
749
                            little_buff.bit_pos().unwrap()
63✔
750
                        );
751
                    } else {
752
                        assert!(b.is_err());
×
753
                        assert!(l.is_err());
×
754
                        assert!(bb.is_err());
×
755
                        assert!(lb.is_err());
×
756
                        assert_eq!(pos, big.bit_pos().unwrap());
×
757
                        assert_eq!(pos, little.bit_pos().unwrap());
×
758
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
759
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
760
                    }
761
                }
762
                RandomCommand::ExpGolomb(value, k) => {
138✔
763
                    let (b, l, bb, lb) = (
345✔
764
                        big.read_exp_golomb(k),
276✔
765
                        little.read_exp_golomb(k),
276✔
766
                        big_buff.read_exp_golomb(k),
276✔
767
                        little_buff.read_exp_golomb(k),
138✔
768
                    );
769
                    if succ {
69✔
770
                        assert_eq!(b.unwrap(), value as u64);
276✔
771
                        assert_eq!(l.unwrap(), value as u64);
276✔
772
                        assert_eq!(bb.unwrap(), value as u64);
276✔
773
                        assert_eq!(lb.unwrap(), value as u64);
276✔
774
                        assert_eq!(
69✔
775
                            pos + len_exp_golomb(value, k) as u64,
207✔
776
                            big.bit_pos().unwrap()
207✔
777
                        );
778
                        assert_eq!(
69✔
779
                            pos + len_exp_golomb(value, k) as u64,
207✔
780
                            little.bit_pos().unwrap()
207✔
781
                        );
782
                        assert_eq!(
69✔
783
                            pos + len_exp_golomb(value, k) as u64,
207✔
784
                            big_buff.bit_pos().unwrap()
207✔
785
                        );
786
                        assert_eq!(
69✔
787
                            pos + len_exp_golomb(value, k) as u64,
207✔
788
                            little_buff.bit_pos().unwrap()
207✔
789
                        );
790

791
                        assert_eq!(
69✔
792
                            pos + len_exp_golomb(value, k) as u64,
207✔
793
                            big.bit_pos().unwrap()
207✔
794
                        );
795
                        assert_eq!(
69✔
796
                            pos + len_exp_golomb(value, k) as u64,
207✔
797
                            little.bit_pos().unwrap()
207✔
798
                        );
799
                        assert_eq!(
69✔
800
                            pos + len_exp_golomb(value, k) as u64,
207✔
801
                            big_buff.bit_pos().unwrap()
207✔
802
                        );
803
                        assert_eq!(
69✔
804
                            pos + len_exp_golomb(value, k) as u64,
207✔
805
                            little_buff.bit_pos().unwrap()
207✔
806
                        );
807
                    } else {
808
                        assert!(b.is_err());
×
809
                        assert!(l.is_err());
×
810
                        assert!(bb.is_err());
×
811
                        assert!(lb.is_err());
×
812
                        assert_eq!(pos, big.bit_pos().unwrap());
×
813
                        assert_eq!(pos, little.bit_pos().unwrap());
×
814
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
815
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
816
                    }
817
                }
818
                RandomCommand::VByteLe(value) => {
75✔
819
                    let (b, l, bb, lb) = (
375✔
820
                        big.read_vbyte_le(),
225✔
821
                        little.read_vbyte_le(),
225✔
822
                        big_buff.read_vbyte_le(),
225✔
823
                        little_buff.read_vbyte_le(),
75✔
824
                    );
825
                    if succ {
75✔
826
                        assert_eq!(b.unwrap(), value as u64, "b");
300✔
827
                        assert_eq!(l.unwrap(), value as u64, "l");
300✔
828
                        assert_eq!(bb.unwrap(), value as u64, "bb");
300✔
829
                        assert_eq!(lb.unwrap(), value as u64, "lb");
300✔
830
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
450✔
831
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
450✔
832
                        assert_eq!(
75✔
833
                            pos + bit_len_vbyte(value) as u64,
150✔
834
                            big_buff.bit_pos().unwrap()
225✔
835
                        );
836
                        assert_eq!(
75✔
837
                            pos + bit_len_vbyte(value) as u64,
150✔
838
                            little_buff.bit_pos().unwrap()
225✔
839
                        );
840

841
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
450✔
842
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
450✔
843
                        assert_eq!(
75✔
844
                            pos + bit_len_vbyte(value) as u64,
150✔
845
                            big_buff.bit_pos().unwrap()
225✔
846
                        );
847
                        assert_eq!(
75✔
848
                            pos + bit_len_vbyte(value) as u64,
150✔
849
                            little_buff.bit_pos().unwrap()
225✔
850
                        );
851
                    } else {
852
                        assert!(b.is_err());
×
853
                        assert!(l.is_err());
×
854
                        assert!(bb.is_err());
×
855
                        assert!(lb.is_err());
×
856
                        assert_eq!(pos, big.bit_pos().unwrap());
×
857
                        assert_eq!(pos, little.bit_pos().unwrap());
×
858
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
859
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
860
                    }
861
                }
862
                RandomCommand::VByteBe(value) => {
16✔
863
                    let (b, l, bb, lb) = (
80✔
864
                        big.read_vbyte_be(),
48✔
865
                        little.read_vbyte_be(),
48✔
866
                        big_buff.read_vbyte_be(),
48✔
867
                        little_buff.read_vbyte_be(),
16✔
868
                    );
869
                    if succ {
16✔
870
                        assert_eq!(b.unwrap(), value as u64, "b");
64✔
871
                        assert_eq!(l.unwrap(), value as u64, "l");
64✔
872
                        assert_eq!(bb.unwrap(), value as u64, "bb");
64✔
873
                        assert_eq!(lb.unwrap(), value as u64, "lb");
64✔
874
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
96✔
875
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
96✔
876
                        assert_eq!(
16✔
877
                            pos + bit_len_vbyte(value) as u64,
32✔
878
                            big_buff.bit_pos().unwrap()
48✔
879
                        );
880
                        assert_eq!(
16✔
881
                            pos + bit_len_vbyte(value) as u64,
32✔
882
                            little_buff.bit_pos().unwrap()
48✔
883
                        );
884

885
                        assert_eq!(pos + bit_len_vbyte(value) as u64, big.bit_pos().unwrap());
96✔
886
                        assert_eq!(pos + bit_len_vbyte(value) as u64, little.bit_pos().unwrap());
96✔
887
                        assert_eq!(
16✔
888
                            pos + bit_len_vbyte(value) as u64,
32✔
889
                            big_buff.bit_pos().unwrap()
48✔
890
                        );
891
                        assert_eq!(
16✔
892
                            pos + bit_len_vbyte(value) as u64,
32✔
893
                            little_buff.bit_pos().unwrap()
48✔
894
                        );
895
                    } else {
896
                        assert!(b.is_err());
×
897
                        assert!(l.is_err());
×
898
                        assert!(bb.is_err());
×
899
                        assert!(lb.is_err());
×
900
                        assert_eq!(pos, big.bit_pos().unwrap());
×
901
                        assert_eq!(pos, little.bit_pos().unwrap());
×
902
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
903
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
904
                    }
905
                }
906
                RandomCommand::Bytes(bytes) => {
30✔
907
                    let mut b_buffer = vec![0; bytes.len()];
120✔
908
                    let b = big.read_exact(&mut b_buffer);
120✔
909
                    let mut l_buffer = vec![0; bytes.len()];
120✔
910
                    let l = little.read_exact(&mut l_buffer);
120✔
911
                    let mut bb_buffer = vec![0; bytes.len()];
120✔
912
                    let bb = big_buff.read_exact(&mut bb_buffer);
120✔
913
                    let mut lb_buffer = vec![0; bytes.len()];
120✔
914
                    let lb = little_buff.read_exact(&mut lb_buffer);
120✔
915

916
                    if succ {
30✔
917
                        assert_eq!(&b_buffer, &bytes);
90✔
918
                        assert_eq!(&l_buffer, &bytes);
90✔
919
                        assert_eq!(&bb_buffer, &bytes);
90✔
920
                        assert_eq!(&lb_buffer, &bytes);
90✔
921
                        assert_eq!(pos + bytes.len() as u64 * 8, big.bit_pos().unwrap());
180✔
922
                        assert_eq!(pos + bytes.len() as u64 * 8, little.bit_pos().unwrap());
180✔
923
                        assert_eq!(pos + bytes.len() as u64 * 8, big_buff.bit_pos().unwrap());
180✔
924
                        assert_eq!(pos + bytes.len() as u64 * 8, little_buff.bit_pos().unwrap());
180✔
925

926
                        assert_eq!(pos + bytes.len() as u64 * 8, big.bit_pos().unwrap());
180✔
927
                        assert_eq!(pos + bytes.len() as u64 * 8, little.bit_pos().unwrap());
180✔
928
                        assert_eq!(pos + bytes.len() as u64 * 8, big_buff.bit_pos().unwrap());
180✔
929
                        assert_eq!(pos + bytes.len() as u64 * 8, little_buff.bit_pos().unwrap());
180✔
930
                    } else {
931
                        assert!(b.is_err());
×
932
                        assert!(l.is_err());
×
933
                        assert!(bb.is_err());
×
934
                        assert!(lb.is_err());
×
935
                        assert_eq!(pos, big.bit_pos().unwrap());
×
936
                        assert_eq!(pos, little.bit_pos().unwrap());
×
937
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
938
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
939
                    }
940
                }
941
                RandomCommand::Omega(value) => {
10✔
942
                    let (b, l, bb, lb) = (
50✔
943
                        big.read_omega(),
30✔
944
                        little.read_omega(),
30✔
945
                        big_buff.read_omega(),
30✔
946
                        little_buff.read_omega(),
10✔
947
                    );
948
                    if succ {
10✔
949
                        assert_eq!(b.unwrap(), value as u64, "b");
40✔
950
                        assert_eq!(l.unwrap(), value as u64, "l");
40✔
951
                        assert_eq!(bb.unwrap(), value as u64, "bb");
40✔
952
                        assert_eq!(lb.unwrap(), value as u64, "lb");
40✔
953
                        assert_eq!(pos + len_omega(value) as u64, big.bit_pos().unwrap());
60✔
954
                        assert_eq!(pos + len_omega(value) as u64, little.bit_pos().unwrap());
60✔
955
                        assert_eq!(pos + len_omega(value) as u64, big_buff.bit_pos().unwrap());
60✔
956
                        assert_eq!(
10✔
957
                            pos + len_omega(value) as u64,
20✔
958
                            little_buff.bit_pos().unwrap()
30✔
959
                        );
960

961
                        assert_eq!(pos + len_omega(value) as u64, big.bit_pos().unwrap());
60✔
962
                        assert_eq!(pos + len_omega(value) as u64, little.bit_pos().unwrap());
60✔
963
                        assert_eq!(pos + len_omega(value) as u64, big_buff.bit_pos().unwrap());
60✔
964
                        assert_eq!(
10✔
965
                            pos + len_omega(value) as u64,
20✔
966
                            little_buff.bit_pos().unwrap()
30✔
967
                        );
968
                    } else {
969
                        assert!(b.is_err());
×
970
                        assert!(l.is_err());
×
971
                        assert!(bb.is_err());
×
972
                        assert!(lb.is_err());
×
973
                        assert_eq!(pos, big.bit_pos().unwrap());
×
974
                        assert_eq!(pos, little.bit_pos().unwrap());
×
975
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
976
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
977
                    }
978
                }
979
                RandomCommand::Pi(value, k) => {
296✔
980
                    let (b, l, bb, lb) = (
740✔
981
                        big.read_pi(k),
592✔
982
                        little.read_pi(k),
592✔
983
                        big_buff.read_pi(k),
592✔
984
                        little_buff.read_pi(k),
296✔
985
                    );
986
                    if succ {
148✔
987
                        assert_eq!(b.unwrap(), value as u64);
592✔
988
                        assert_eq!(l.unwrap(), value as u64);
592✔
989
                        assert_eq!(bb.unwrap(), value as u64);
592✔
990
                        assert_eq!(lb.unwrap(), value as u64);
592✔
991
                        assert_eq!(pos + len_pi(value, k) as u64, big.bit_pos().unwrap());
1,036✔
992
                        assert_eq!(pos + len_pi(value, k) as u64, little.bit_pos().unwrap());
1,036✔
993
                        assert_eq!(pos + len_pi(value, k) as u64, big_buff.bit_pos().unwrap());
1,036✔
994
                        assert_eq!(
148✔
995
                            pos + len_pi(value, k) as u64,
444✔
996
                            little_buff.bit_pos().unwrap()
444✔
997
                        );
998

999
                        assert_eq!(pos + len_pi(value, k) as u64, big.bit_pos().unwrap());
1,036✔
1000
                        assert_eq!(pos + len_pi(value, k) as u64, little.bit_pos().unwrap());
1,036✔
1001
                        assert_eq!(pos + len_pi(value, k) as u64, big_buff.bit_pos().unwrap());
1,036✔
1002
                        assert_eq!(
148✔
1003
                            pos + len_pi(value, k) as u64,
444✔
1004
                            little_buff.bit_pos().unwrap()
444✔
1005
                        );
1006
                    } else {
1007
                        assert!(b.is_err());
×
1008
                        assert!(l.is_err());
×
1009
                        assert!(bb.is_err());
×
1010
                        assert!(lb.is_err());
×
1011
                        assert_eq!(pos, big.bit_pos().unwrap());
×
1012
                        assert_eq!(pos, little.bit_pos().unwrap());
×
1013
                        assert_eq!(pos, big_buff.bit_pos().unwrap());
×
1014
                        assert_eq!(pos, little_buff.bit_pos().unwrap());
×
1015
                    }
1016
                }
1017
            };
1018
        }
1019
    }
1020
}
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