message: Tests for axis split
diff: @@ -54,3 +54,90 @@ impl Axis {
  }
  }
  }
  +
  +#[cfg(test)]
  +mod tests {
  + use super::*;
  +
  + #[test]
  + fn split_horizontal() {
  + let a = Axis::Horizontal;
  + // rectangle height, spacing, top height, bottom y, bottom height
  + let cases = vec![
  + // Even height, even spacing
  + (10.0, 2.0, 4.0, 6.0, 4.0),
  + // Odd height, even spacing
  + (9.0, 2.0, 4.0, 6.0, 3.0),
  + // Even height, odd spacing
  + (10.0, 1.0, 5.0, 6.0, 4.0),
  + // Odd height, odd spacing
  + (9.0, 1.0, 4.0, 5.0, 4.0),
  + ];
  + for case in cases {
  + let (h0, spacing, h1_top, y_bottom, h1_bottom) = case;
  + let r = Rectangle {
  + x: 0.0,
  + y: 0.0,
  + width: 10.0,
  + height: h0,
  + };
  + let (top, bottom) = a.split(&r, 0.5, spacing);
  + assert_eq!(
  + top,
  + Rectangle {
  + height: h1_top,
  + ..r
  + }
  + );
  + assert_eq!(
  + bottom,
  + Rectangle {
  + y: y_bottom,
  + height: h1_bottom,
  + ..r
  + }
  + );
  + }
  + }
  +
  + #[test]
  + fn split_vertical() {
  + let a = Axis::Vertical;
  + // rectangle width, spacing, left width, right x, right width
  + let cases = vec![
  + // Even width, even spacing
  + (10.0, 2.0, 4.0, 6.0, 4.0),
  + // Odd width, even spacing
  + (9.0, 2.0, 4.0, 6.0, 3.0),
  + // Even width, odd spacing
  + (10.0, 1.0, 5.0, 6.0, 4.0),
  + // Odd width, odd spacing
  + (9.0, 1.0, 4.0, 5.0, 4.0),
  + ];
  + for case in cases {
  + let (w0, spacing, w1_left, x_right, w1_right) = case;
  + let r = Rectangle {
  + x: 0.0,
  + y: 0.0,
  + width: w0,
  + height: 10.0,
  + };
  + let (left, right) = a.split(&r, 0.5, spacing);
  + assert_eq!(
  + left,
  + Rectangle {
  + width: w1_left,
  + ..r
  + }
  + );
  + assert_eq!(
  + right,
  + Rectangle {
  + x: x_right,
  + width: w1_right,
  + ..r
  + }
  + );
  + }
  + }
  +}
  