use ggplot_rs::position::identity::PositionIdentity;
use ggplot_rs::position::stack::PositionStack;
use ggplot_rs::prelude::*;
fn mixed_group_data() -> Vec<(String, Vec<Value>)> {
vec![
("x".into(), vec![Value::Float(1.0), Value::Float(1.0)]),
(
"grp".into(),
vec![Value::Str("a".into()), Value::Str("b".into())],
),
("y".into(), vec![Value::Float(3.0), Value::Float(5.0)]),
]
}
fn base() -> GGPlot {
GGPlot::new(mixed_group_data())
.aes(Aes::new().x("x").y("y").fill("grp"))
.geom_col()
}
fn render(plot: GGPlot) -> String {
plot.render_svg_native_with_size(320, 400)
.expect("native svg render")
}
#[test]
fn geom_col_default_position_matches_explicit_stack() {
let default_svg = render(base());
let stack_svg = render(base().position(PositionStack));
assert_eq!(
default_svg, stack_svg,
"geom_col()'s default position must be position_stack() (ggplot2 parity)"
);
}
#[test]
fn geom_col_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_col()'s default must no longer be position_stack()'s old \
PositionIdentity default"
);
}