gioser

tawasuyu/taffy

A high performance rust-powered UI layout library

HTML 231Rust 10TOML 3CSS 1348 Sutichaykuna

⎇ morphorm tests/border_and_padding.rs Rust · 106 siq'ikuna · 3.2 KB Ñawpa willay Pi imata llamkarqan ch'uya

Replace per-node measure functions with a single measure function + per-node context (#490) be627e7fa · Nico Burns ·

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}