1 //! Helpers for use in unit tests within the grid module 2 use super::super::OriginZeroLine; 3 use crate::prelude::*; 4 use crate::style::{Dimension, GridPlacement, Style}; 5 6 pub(crate) trait CreateParentTestNode { into_grid(self) -> Style7 fn into_grid(self) -> Style; 8 } 9 impl CreateParentTestNode for (f32, f32, i32, i32) { into_grid(self) -> Style10 fn into_grid(self) -> Style { 11 Style { 12 display: Display::Grid, 13 size: Size { width: Dimension::Length(self.0), height: Dimension::Length(self.1) }, 14 grid_template_columns: vec![fr(1f32); self.2 as usize], 15 grid_template_rows: vec![fr(1f32); self.3 as usize], 16 ..Default::default() 17 } 18 } 19 } 20 pub(crate) trait CreateChildTestNode { into_grid_child(self) -> Style21 fn into_grid_child(self) -> Style; 22 } 23 impl CreateChildTestNode for (GridPlacement, GridPlacement, GridPlacement, GridPlacement) { into_grid_child(self) -> Style24 fn into_grid_child(self) -> Style { 25 Style { 26 display: Display::Grid, 27 grid_column: Line { start: self.0, end: self.1 }, 28 grid_row: Line { start: self.2, end: self.3 }, 29 ..Default::default() 30 } 31 } 32 } 33 34 pub(crate) trait CreateExpectedPlacement { into_oz(self) -> (OriginZeroLine, OriginZeroLine, OriginZeroLine, OriginZeroLine)35 fn into_oz(self) -> (OriginZeroLine, OriginZeroLine, OriginZeroLine, OriginZeroLine); 36 } 37 impl CreateExpectedPlacement for (i16, i16, i16, i16) { into_oz(self) -> (OriginZeroLine, OriginZeroLine, OriginZeroLine, OriginZeroLine)38 fn into_oz(self) -> (OriginZeroLine, OriginZeroLine, OriginZeroLine, OriginZeroLine) { 39 (OriginZeroLine(self.0), OriginZeroLine(self.1), OriginZeroLine(self.2), OriginZeroLine(self.3)) 40 } 41 } 42