| 531 | |
| 532 | #[test] |
| 533 | fn rows_frame_min_max() { |
| 534 | let cols = ci(&["v"]); |
| 535 | let f = frame( |
| 536 | "rows", |
| 537 | FrameBound::UnboundedPreceding, |
| 538 | FrameBound::UnboundedFollowing, |
| 539 | ); |
| 540 | |
| 541 | let mut rows = rows_v(&[3, 1, 2]); |
| 542 | let mn = agg_spec("min", f.clone(), vec![]); |
| 543 | run_agg(&mut rows, &cols, &mn); |
| 544 | assert!((rows[0][1].as_f64().unwrap() - 1.0).abs() < 1e-9); |
| 545 | |
| 546 | let mut rows = rows_v(&[3, 1, 2]); |
| 547 | let mx = agg_spec("max", f, vec![]); |
| 548 | run_agg(&mut rows, &cols, &mx); |
| 549 | assert!((rows[0][1].as_f64().unwrap() - 3.0).abs() < 1e-9); |
| 550 | } |
| 551 | |
| 552 | #[test] |
| 553 | fn first_and_last_value() { |