Structured test cases
This commit is contained in:
parent
9079014974
commit
858eafe22e
@ -59,85 +59,156 @@ impl Axis {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
enum Case {
|
||||||
|
Horizontal {
|
||||||
|
overall_height: f32,
|
||||||
|
spacing: f32,
|
||||||
|
top_height: f32,
|
||||||
|
bottom_y: f32,
|
||||||
|
bottom_height: f32,
|
||||||
|
},
|
||||||
|
Vertical {
|
||||||
|
overall_width: f32,
|
||||||
|
spacing: f32,
|
||||||
|
left_width: f32,
|
||||||
|
right_x: f32,
|
||||||
|
right_width: f32,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn split_horizontal() {
|
fn split() {
|
||||||
let a = Axis::Horizontal;
|
|
||||||
// rectangle height, spacing, top height, bottom y, bottom height
|
|
||||||
let cases = vec![
|
let cases = vec![
|
||||||
// Even height, even spacing
|
// Even height, even spacing
|
||||||
(10.0, 2.0, 4.0, 6.0, 4.0),
|
Case::Horizontal {
|
||||||
|
overall_height: 10.0,
|
||||||
|
spacing: 2.0,
|
||||||
|
top_height: 4.0,
|
||||||
|
bottom_y: 6.0,
|
||||||
|
bottom_height: 4.0,
|
||||||
|
},
|
||||||
// Odd height, even spacing
|
// Odd height, even spacing
|
||||||
(9.0, 2.0, 4.0, 6.0, 3.0),
|
Case::Horizontal {
|
||||||
|
overall_height: 9.0,
|
||||||
|
spacing: 2.0,
|
||||||
|
top_height: 4.0,
|
||||||
|
bottom_y: 6.0,
|
||||||
|
bottom_height: 3.0,
|
||||||
|
},
|
||||||
// Even height, odd spacing
|
// Even height, odd spacing
|
||||||
(10.0, 1.0, 5.0, 6.0, 4.0),
|
Case::Horizontal {
|
||||||
|
overall_height: 10.0,
|
||||||
|
spacing: 1.0,
|
||||||
|
top_height: 5.0,
|
||||||
|
bottom_y: 6.0,
|
||||||
|
bottom_height: 4.0,
|
||||||
|
},
|
||||||
// Odd height, odd spacing
|
// Odd height, odd spacing
|
||||||
(9.0, 1.0, 4.0, 5.0, 4.0),
|
Case::Horizontal {
|
||||||
|
overall_height: 9.0,
|
||||||
|
spacing: 1.0,
|
||||||
|
top_height: 4.0,
|
||||||
|
bottom_y: 5.0,
|
||||||
|
bottom_height: 4.0,
|
||||||
|
},
|
||||||
|
// Even width, even spacing
|
||||||
|
Case::Vertical {
|
||||||
|
overall_width: 10.0,
|
||||||
|
spacing: 2.0,
|
||||||
|
left_width: 4.0,
|
||||||
|
right_x: 6.0,
|
||||||
|
right_width: 4.0,
|
||||||
|
},
|
||||||
|
// Odd width, even spacing
|
||||||
|
Case::Vertical {
|
||||||
|
overall_width: 9.0,
|
||||||
|
spacing: 2.0,
|
||||||
|
left_width: 4.0,
|
||||||
|
right_x: 6.0,
|
||||||
|
right_width: 3.0,
|
||||||
|
},
|
||||||
|
// Even width, odd spacing
|
||||||
|
Case::Vertical {
|
||||||
|
overall_width: 10.0,
|
||||||
|
spacing: 1.0,
|
||||||
|
left_width: 5.0,
|
||||||
|
right_x: 6.0,
|
||||||
|
right_width: 4.0,
|
||||||
|
},
|
||||||
|
// Odd width, odd spacing
|
||||||
|
Case::Vertical {
|
||||||
|
overall_width: 9.0,
|
||||||
|
spacing: 1.0,
|
||||||
|
left_width: 4.0,
|
||||||
|
right_x: 5.0,
|
||||||
|
right_width: 4.0,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
for case in cases {
|
for case in cases {
|
||||||
let (h0, spacing, h1_top, y_bottom, h1_bottom) = case;
|
match case {
|
||||||
|
Case::Horizontal {
|
||||||
|
overall_height,
|
||||||
|
spacing,
|
||||||
|
top_height,
|
||||||
|
bottom_y,
|
||||||
|
bottom_height,
|
||||||
|
} => {
|
||||||
|
let a = Axis::Horizontal;
|
||||||
let r = Rectangle {
|
let r = Rectangle {
|
||||||
x: 0.0,
|
x: 0.0,
|
||||||
y: 0.0,
|
y: 0.0,
|
||||||
width: 10.0,
|
width: 10.0,
|
||||||
height: h0,
|
height: overall_height,
|
||||||
};
|
};
|
||||||
let (top, bottom) = a.split(&r, 0.5, spacing);
|
let (top, bottom) = a.split(&r, 0.5, spacing);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
top,
|
top,
|
||||||
Rectangle {
|
Rectangle {
|
||||||
height: h1_top,
|
height: top_height,
|
||||||
..r
|
..r
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
bottom,
|
bottom,
|
||||||
Rectangle {
|
Rectangle {
|
||||||
y: y_bottom,
|
y: bottom_y,
|
||||||
height: h1_bottom,
|
height: bottom_height,
|
||||||
..r
|
..r
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
Case::Vertical {
|
||||||
|
overall_width,
|
||||||
#[test]
|
spacing,
|
||||||
fn split_vertical() {
|
left_width,
|
||||||
|
right_x,
|
||||||
|
right_width,
|
||||||
|
} => {
|
||||||
let a = Axis::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 {
|
let r = Rectangle {
|
||||||
x: 0.0,
|
x: 0.0,
|
||||||
y: 0.0,
|
y: 0.0,
|
||||||
width: w0,
|
width: overall_width,
|
||||||
height: 10.0,
|
height: 10.0,
|
||||||
};
|
};
|
||||||
let (left, right) = a.split(&r, 0.5, spacing);
|
let (left, right) = a.split(&r, 0.5, spacing);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
left,
|
left,
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: w1_left,
|
width: left_width,
|
||||||
..r
|
..r
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
right,
|
right,
|
||||||
Rectangle {
|
Rectangle {
|
||||||
x: x_right,
|
x: right_x,
|
||||||
width: w1_right,
|
width: right_width,
|
||||||
..r
|
..r
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user