use ggplot_rs::position::identity::PositionIdentity;
use ggplot_rs::position::stack::PositionStack;
use ggplot_rs::prelude::*;
fn two_series_data() -> Vec<(String, Vec<Value>)> {
let x: Vec<Value> = [1.0, 2.0, 3.0, 1.0, 2.0, 3.0]
.iter()
.map(|v| Value::Float(*v))
.collect();
let grp: Vec<Value> = ["a", "a", "a", "b", "b", "b"]
.iter()
.map(|s| Value::Str(s.to_string()))
.collect();
let y: Vec<Value> = [1.0, 2.0, 1.0, 1.0, 2.0, 1.0]
.iter()
.map(|v| Value::Float(*v))
.collect();
vec![("x".into(), x), ("grp".into(), grp), ("y".into(), y)]
}
fn base() -> GGPlot {
GGPlot::new(two_series_data())
.aes(Aes::new().x("x").y("y").fill("grp"))
.geom_area()
}
fn render(plot: GGPlot) -> String {
plot.render_svg_native_with_size(320, 400)
.expect("native svg render")
}
#[test]
fn geom_area_default_position_matches_explicit_stack() {
let default_svg = render(base());
let stack_svg = render(base().position(PositionStack));
assert_eq!(
default_svg, stack_svg,
"geom_area()'s default position must be position_stack() (ggplot2 parity)"
);
}
#[test]
fn geom_area_default_position_no_longer_matches_identity() {
let default_svg = render(base());
let identity_svg = render(base().position(PositionIdentity));
assert_ne!(
default_svg, identity_svg,
"geom_area()'s default must no longer be PositionIdentity"
);
}