Replace per-node measure functions with a single measure function + per-node context (#490)
1use taffy::prelude::*;
2use taffy::style_helpers::TaffyZero;
3
4fn arr_to_rect<T: Copy>(items: [T; 4]) -> Rect<T> {
5 Rect { left: items[0], right: items[1], top: items[2], bottom: items[3] }
6}
7
8#[test]
9#[ignore]
10fn border_on_a_single_axis_doesnt_increase_size() {
11 for i in 0..4 {
12 let mut taffy: Taffy<()> = Taffy::new();
13 let node = taffy
14 .new_leaf(Style {
15 border: {
16 let mut lengths = [LengthPercentage::ZERO; 4];
17 lengths[i] = LengthPercentage::Length(10.);
18 arr_to_rect(lengths)
19 },
20 ..Default::default()
21 })
22 .unwrap();
23
24 taffy
25 .compute_layout(
26 node,
27 Size { width: AvailableSpace::Definite(100.0), height: AvailableSpace::Definite(100.0) },
28 )
29 .unwrap();
30
31 let layout = taffy.layout(node).unwrap();
32 assert_eq!(layout.size.width * layout.size.height, 0.);
33 }
34}
35
36#[test]
37#[ignore]
38fn padding_on_a_single_axis_doesnt_increase_size() {
39 for i in 0..4 {
40 let mut taffy: Taffy<()> = Taffy::new();
41 let node = taffy
42 .new_leaf(Style {
43 padding: {
44 let mut lengths = [LengthPercentage::ZERO; 4];
45 lengths[i] = LengthPercentage::Length(10.);
46 arr_to_rect(lengths)
47 },
48 ..Default::default()
49 })
50 .unwrap();
51
52 taffy
53 .compute_layout(
54 node,
55 Size { width: AvailableSpace::Definite(100.0), height: AvailableSpace::Definite(100.0) },
56 )
57 .unwrap();
58
59 let layout = taffy.layout(node).unwrap();
60 assert_eq!(layout.size.width * layout.size.height, 0.);
61 }
62}
63
64#[test]
65#[ignore]
66fn border_and_padding_on_a_single_axis_doesnt_increase_size() {
67 for i in 0..4 {
68 let mut taffy: Taffy<()> = Taffy::new();
69 let rect = {
70 let mut lengths = [LengthPercentage::ZERO; 4];
71 lengths[i] = LengthPercentage::Length(10.);
72 arr_to_rect(lengths)
73 };
74 let node = taffy.new_leaf(Style { border: rect, padding: rect, ..Default::default() }).unwrap();
75
76 taffy
77 .compute_layout(
78 node,
79 Size { width: AvailableSpace::Definite(100.0), height: AvailableSpace::Definite(100.0) },
80 )
81 .unwrap();
82 let layout = taffy.layout(node).unwrap();
83 assert_eq!(layout.size.width * layout.size.height, 0.);
84 }
85}
86
87#[test]
88#[ignore]
89fn vertical_border_and_padding_percentage_values_use_available_space_correctly() {
90 let mut taffy: Taffy<()> = Taffy::new();
91
92 let node = taffy
93 .new_leaf(Style {
94 padding: Rect { left: LengthPercentage::Percent(1.0), top: LengthPercentage::Percent(1.0), ..Rect::zero() },
95 ..Default::default()
96 })
97 .unwrap();
98
99 taffy
100 .compute_layout(node, Size { width: AvailableSpace::Definite(200.0), height: AvailableSpace::Definite(100.0) })
101 .unwrap();
102
103 let layout = taffy.layout(node).unwrap();
104 assert_eq!(layout.size.width, 200.0);
105 assert_eq!(layout.size.height, 200.0);
106}