()
| 464 | |
| 465 | #[test] |
| 466 | fn test_bool_buffer_fuzz() { |
| 467 | use rand::prelude::*; |
| 468 | |
| 469 | let mut buffer = BooleanBufferBuilder::new(12); |
| 470 | let mut all_bools = vec![]; |
| 471 | let mut rng = rand::rng(); |
| 472 | |
| 473 | let src_len = 32; |
| 474 | let (src, compacted_src) = { |
| 475 | let src: Vec<_> = std::iter::from_fn(|| Some(rng.next_u32() & 1 == 0)) |
| 476 | .take(src_len) |
| 477 | .collect(); |
| 478 | |
| 479 | let mut compacted_src = BooleanBufferBuilder::new(src_len); |
| 480 | compacted_src.append_slice(&src); |
| 481 | (src, compacted_src.finish()) |
| 482 | }; |
| 483 | |
| 484 | for _ in 0..100 { |
| 485 | let a = rng.next_u32() as usize % src_len; |
| 486 | let b = rng.next_u32() as usize % src_len; |
| 487 | |
| 488 | let start = a.min(b); |
| 489 | let end = a.max(b); |
| 490 | |
| 491 | buffer.append_packed_range(start..end, compacted_src.values()); |
| 492 | all_bools.extend_from_slice(&src[start..end]); |
| 493 | } |
| 494 | |
| 495 | let mut compacted = BooleanBufferBuilder::new(all_bools.len()); |
| 496 | compacted.append_slice(&all_bools); |
| 497 | |
| 498 | assert_eq!(buffer.finish(), compacted.finish()) |
| 499 | } |
| 500 | |
| 501 | #[test] |
| 502 | fn test_boolean_array_builder_resize() { |
nothing calls this directly
no test coverage detected