| 329 | } |
| 330 | |
| 331 | fn get_int32_iterator_cases() -> impl Iterator<Item = (Int32Array, Vec<Option<i32>>)> { |
| 332 | let mut rng = StdRng::seed_from_u64(42); |
| 333 | |
| 334 | let no_nulls_and_no_duplicates = (0..10).map(Some).collect::<Vec<Option<i32>>>(); |
| 335 | let no_nulls_random_values = (0..10) |
| 336 | .map(|_| rng.random::<i32>()) |
| 337 | .map(Some) |
| 338 | .collect::<Vec<Option<i32>>>(); |
| 339 | |
| 340 | let all_nulls = (0..10).map(|_| None).collect::<Vec<Option<i32>>>(); |
| 341 | let only_start_nulls = (0..10) |
| 342 | .map(|item| if item < 4 { None } else { Some(item) }) |
| 343 | .collect::<Vec<Option<i32>>>(); |
| 344 | let only_end_nulls = (0..10) |
| 345 | .map(|item| if item > 8 { None } else { Some(item) }) |
| 346 | .collect::<Vec<Option<i32>>>(); |
| 347 | let only_middle_nulls = (0..10) |
| 348 | .map(|item| { |
| 349 | if (4..=8).contains(&item) && rng.random_bool(0.9) { |
| 350 | None |
| 351 | } else { |
| 352 | Some(item) |
| 353 | } |
| 354 | }) |
| 355 | .collect::<Vec<Option<i32>>>(); |
| 356 | let random_values_with_random_nulls = (0..10) |
| 357 | .map(|_| { |
| 358 | if rng.random_bool(0.3) { |
| 359 | None |
| 360 | } else { |
| 361 | Some(rng.random::<i32>()) |
| 362 | } |
| 363 | }) |
| 364 | .collect::<Vec<Option<i32>>>(); |
| 365 | |
| 366 | let no_nulls_and_some_duplicates = (0..10) |
| 367 | .map(|item| item % 3) |
| 368 | .map(Some) |
| 369 | .collect::<Vec<Option<i32>>>(); |
| 370 | let no_nulls_and_all_same_value = |
| 371 | (0..10).map(|_| 9).map(Some).collect::<Vec<Option<i32>>>(); |
| 372 | let no_nulls_and_continues_duplicates = [0, 0, 0, 1, 1, 2, 2, 2, 2, 3] |
| 373 | .map(Some) |
| 374 | .into_iter() |
| 375 | .collect::<Vec<Option<i32>>>(); |
| 376 | |
| 377 | let single_null_and_no_duplicates = (0..10) |
| 378 | .map(|item| if item == 4 { None } else { Some(item) }) |
| 379 | .collect::<Vec<Option<i32>>>(); |
| 380 | let multiple_nulls_and_no_duplicates = (0..10) |
| 381 | .map(|item| if item % 3 == 2 { None } else { Some(item) }) |
| 382 | .collect::<Vec<Option<i32>>>(); |
| 383 | let continues_nulls_and_no_duplicates = [ |
| 384 | Some(0), |
| 385 | Some(1), |
| 386 | None, |
| 387 | None, |
| 388 | Some(2), |