From c9b79e76fc523810bc5dab5b037c29b0c7121a25 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 12 Sep 2024 22:46:12 +0300 Subject: [PATCH] wip: more layout tests --- crates/tek_core/src/test.rs | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/crates/tek_core/src/test.rs b/crates/tek_core/src/test.rs index bbc72e8e..5b04e761 100644 --- a/crates/tek_core/src/test.rs +++ b/crates/tek_core/src/test.rs @@ -1,20 +1,45 @@ use crate::*; +#[derive(Copy, Clone)] +struct TestArea(u16, u16); + +impl Widget for TestArea { + type Engine = Tui; + fn layout (&self, to: [u16;4]) -> Perhaps<[u16;4]> { + Ok(Some([to[0], to[1], self.0, self.1])) + } + fn render (&self, to: &mut Tui) -> Perhaps<[u16;4]> { + self.layout(to.area()) + } +} + #[test] fn test_offset () -> Usually<()> { let area: [u16;4] = [50, 50, 100, 100]; - assert_eq!(Offset::X(1, "1").layout(area)?, Some([51, 50, 1, 1])); - assert_eq!(Offset::Y(1, "1").layout(area)?, Some([50, 51, 1, 1])); - assert_eq!(Offset::XY(1, 1, "1").layout(area)?, Some([51, 51, 1, 1])); + let test = TestArea(3, 3); + assert_eq!(Offset::X(1, test).layout(area)?, Some([51, 50, 3, 3])); + assert_eq!(Offset::Y(1, test).layout(area)?, Some([50, 51, 3, 3])); + assert_eq!(Offset::XY(1, 1, test).layout(area)?, Some([51, 51, 3, 3])); Ok(()) } #[test] fn test_outset () -> Usually<()> { let area: [u16;4] = [50, 50, 100, 100]; - assert_eq!(Outset::X(1, "1").layout(area)?, Some([49, 50, 3, 1])); - assert_eq!(Outset::Y(1, "1").layout(area)?, Some([50, 49, 1, 3])); - assert_eq!(Outset::XY(1, 1, "1").layout(area)?, Some([49, 49, 3, 3])); + let test = TestArea(3, 3); + assert_eq!(Outset::X(1, test).layout(area)?, Some([49, 50, 5, 1])); + assert_eq!(Outset::Y(1, test).layout(area)?, Some([50, 49, 1, 5])); + assert_eq!(Outset::XY(1, 1, test).layout(area)?, Some([49, 49, 5, 5])); + Ok(()) +} + +#[test] +fn test_inset () -> Usually<()> { + let area: [u16;4] = [50, 50, 100, 100]; + let test = TestArea(3, 3); + assert_eq!(Inset::X(1, test).layout(area)?, Some([51, 50, 1, 3])); + assert_eq!(Inset::Y(1, test).layout(area)?, Some([50, 51, 3, 1])); + assert_eq!(Inset::XY(1, 1, test).layout(area)?, Some([51, 51, 1, 1])); Ok(()) }