Josh McKinney 92c4078413
chore: prep for merge with ratatui
Move files under ratatui-macros folder, remove CI and husky config
2025-02-05 12:15:36 -08:00

105 lines
3.1 KiB
Rust

use ratatui_core::layout::{Constraint, Rect};
use ratatui_macros::{constraints, horizontal, vertical};
#[test]
fn layout_constraints_macro() {
let rect = Rect {
x: 0,
y: 0,
width: 10,
height: 10,
};
let [rect1, rect2] = vertical![==7, <=3].split(rect).to_vec().try_into().unwrap();
assert_eq!(rect1, Rect::new(0, 0, 10, 7));
assert_eq!(rect2, Rect::new(0, 7, 10, 3));
let [rect1, rect2] = horizontal![==7, <=3]
.split(rect)
.to_vec()
.try_into()
.unwrap();
assert_eq!(rect1, Rect::new(0, 0, 7, 10));
assert_eq!(rect2, Rect::new(7, 0, 3, 10));
let one = 1;
let two = 2;
let ten = 10;
let zero = 0;
let [a, b, c, d, e, f] = horizontal![==one, >=one, <=one, == 1 / two, == ten %, >=zero]
.split(rect)
.to_vec()
.try_into()
.unwrap();
assert_eq!(a, Rect::new(0, 0, 1, 10));
assert_eq!(b, Rect::new(1, 0, 1, 10));
assert_eq!(c, Rect::new(2, 0, 1, 10));
assert_eq!(d, Rect::new(3, 0, 5, 10));
assert_eq!(e, Rect::new(8, 0, 1, 10));
assert_eq!(f, Rect::new(9, 0, 1, 10));
let one = 1;
let two = 2;
let ten = 10;
let zero = 0;
let [a, b, c, d, e, f] = horizontal![
== one*one, // expr allowed here
>= one+zero, // expr allowed here
<= one-zero, // expr allowed here
== 1/two, // only single token allowed in numerator and denominator
== ten%, // only single token allowed before %
>= zero // no trailing comma
]
.split(rect)
.to_vec()
.try_into()
.unwrap();
assert_eq!(a, Rect::new(0, 0, 1, 10));
assert_eq!(b, Rect::new(1, 0, 1, 10));
assert_eq!(c, Rect::new(2, 0, 1, 10));
assert_eq!(d, Rect::new(3, 0, 5, 10));
assert_eq!(e, Rect::new(8, 0, 1, 10));
assert_eq!(f, Rect::new(9, 0, 1, 10));
let [a, b, c, d, e] = constraints![ >=0, ==1, <=5, ==10%, ==1/2 ];
assert_eq!(a, Constraint::Min(0));
assert_eq!(b, Constraint::Length(1));
assert_eq!(c, Constraint::Max(5));
assert_eq!(d, Constraint::Percentage(10));
assert_eq!(e, Constraint::Ratio(1, 2));
let [a, b, c, d, e] = constraints![ >=0; 5 ];
assert_eq!(a, Constraint::Min(0));
assert_eq!(b, Constraint::Min(0));
assert_eq!(c, Constraint::Min(0));
assert_eq!(d, Constraint::Min(0));
assert_eq!(e, Constraint::Min(0));
let [a, b, c, d, e] = constraints![ <=0; 5 ];
assert_eq!(a, Constraint::Max(0));
assert_eq!(b, Constraint::Max(0));
assert_eq!(c, Constraint::Max(0));
assert_eq!(d, Constraint::Max(0));
assert_eq!(e, Constraint::Max(0));
let [a, b] = constraints![ ==0; 2 ];
assert_eq!(a, Constraint::Length(0));
assert_eq!(b, Constraint::Length(0));
let [a, b] = constraints![ == 50%; 2 ];
assert_eq!(a, Constraint::Percentage(50));
assert_eq!(b, Constraint::Percentage(50));
let [a, b] = constraints![ == 1/2; 2 ];
assert_eq!(a, Constraint::Ratio(1, 2));
assert_eq!(b, Constraint::Ratio(1, 2));
}
#[test]
fn fails() {
let t = trybuild::TestCases::new();
t.compile_fail("tests/ui/fails.rs");
}