tawasuyu

tawasuyu/taffy

A high performance rust-powered UI layout library

HTML 5544Rust 88Markdown 11TOML 91926 Definiciones

⎇ 0.2.x tests/border_and_padding.rs Rust · 106 líneas · 3.1 KB Historia Quién tocó qué crudo

Release/0.2.2 (#281) df9799325 · Nico Burns ·

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