| 325 | |
| 326 | #[test] |
| 327 | fn test_nullif_boolean_offset() { |
| 328 | let a = BooleanArray::from(vec![ |
| 329 | None, // 0 |
| 330 | Some(true), // 1 |
| 331 | Some(false), |
| 332 | Some(true), |
| 333 | Some(true), |
| 334 | ]); |
| 335 | let a = a.slice(1, 3); // Some(true), Some(false), Some(true) |
| 336 | |
| 337 | let comp = BooleanArray::from(vec![ |
| 338 | Some(false), // 0 |
| 339 | Some(false), // 1 |
| 340 | Some(false), // 2 |
| 341 | None, |
| 342 | Some(true), |
| 343 | Some(false), |
| 344 | None, |
| 345 | ]); |
| 346 | let comp = comp.slice(2, 3); // Some(false), None, Some(true) |
| 347 | let comp = comp.as_any().downcast_ref::<BooleanArray>().unwrap(); |
| 348 | let res = nullif(&a, comp).unwrap(); |
| 349 | let res = res.as_any().downcast_ref::<BooleanArray>().unwrap(); |
| 350 | |
| 351 | let expected = BooleanArray::from(vec![ |
| 352 | Some(true), // False => keep it |
| 353 | Some(false), // None => keep it |
| 354 | None, // true => None |
| 355 | ]); |
| 356 | assert_eq!(&expected, res) |
| 357 | } |
| 358 | |
| 359 | struct Foo { |
| 360 | a: Option<i32>, |