Fix grid track sizing for `fit-content(percentage)` and for items spanning percentage gaps (#335)
1use criterion::{criterion_group, criterion_main, Criterion};
2#[allow(dead_code)]
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4enum WritingMode {
5 Horizontal,
6 Vertical,
7}
8#[allow(dead_code)]
9fn measure_standard_text(
10 known_dimensions: taffy::geometry::Size<Option<f32>>,
11 available_space: taffy::geometry::Size<taffy::style::AvailableSpace>,
12 text_content: &str,
13 writing_mode: WritingMode,
14 _aspect_ratio: Option<f32>,
15) -> taffy::geometry::Size<f32> {
16 use taffy::axis::AbsoluteAxis;
17 use taffy::prelude::*;
18 const ZWS: char = '\u{200B}';
19 const H_WIDTH: f32 = 10.0;
20 const H_HEIGHT: f32 = 10.0;
21 if let Size { width: Some(width), height: Some(height) } = known_dimensions {
22 return Size { width, height };
23 }
24 let inline_axis = match writing_mode {
25 WritingMode::Horizontal => AbsoluteAxis::Horizontal,
26 WritingMode::Vertical => AbsoluteAxis::Vertical,
27 };
28 let block_axis = inline_axis.other_axis();
29 let lines: Vec<&str> = text_content.split(ZWS).collect();
30 if lines.is_empty() {
31 return Size::ZERO;
32 }
33 let min_line_length: usize = lines.iter().map(|line| line.len()).max().unwrap_or(0);
34 let max_line_length: usize = lines.iter().map(|line| line.len()).sum();
35 let inline_size =
36 known_dimensions.get_abs(inline_axis).unwrap_or_else(|| match available_space.get_abs(inline_axis) {
37 AvailableSpace::MinContent => min_line_length as f32 * H_WIDTH,
38 AvailableSpace::MaxContent => max_line_length as f32 * H_WIDTH,
39 AvailableSpace::Definite(inline_size) => {
40 inline_size.min(max_line_length as f32 * H_WIDTH).max(min_line_length as f32 * H_WIDTH)
41 }
42 });
43 let block_size = known_dimensions.get_abs(block_axis).unwrap_or_else(|| {
44 let inline_line_length = (inline_size / H_WIDTH).floor() as usize;
45 let mut line_count = 1;
46 let mut current_line_length = 0;
47 for line in &lines {
48 if current_line_length + line.len() > inline_line_length {
49 if current_line_length > 0 {
50 line_count += 1
51 };
52 current_line_length = line.len();
53 } else {
54 current_line_length += line.len();
55 };
56 }
57 (line_count as f32) * H_HEIGHT
58 });
59 match writing_mode {
60 WritingMode::Horizontal => Size { width: inline_size, height: block_size },
61 WritingMode::Vertical => Size { width: block_size, height: inline_size },
62 }
63}
64mod absolute_aspect_ratio_aspect_ratio_overrides_height_of_full_inset;
65mod absolute_aspect_ratio_fill_height;
66mod absolute_aspect_ratio_fill_height_from_inset;
67mod absolute_aspect_ratio_fill_max_height;
68mod absolute_aspect_ratio_fill_max_width;
69mod absolute_aspect_ratio_fill_min_height;
70mod absolute_aspect_ratio_fill_min_width;
71mod absolute_aspect_ratio_fill_width;
72mod absolute_aspect_ratio_fill_width_from_inset;
73mod absolute_aspect_ratio_height_overrides_inset;
74mod absolute_aspect_ratio_width_overrides_inset;
75mod absolute_child_with_cross_margin;
76mod absolute_child_with_main_margin;
77mod absolute_child_with_max_height;
78mod absolute_child_with_max_height_larger_shrinkable_grandchild;
79mod absolute_layout_align_items_and_justify_content_center;
80mod absolute_layout_align_items_and_justify_content_center_and_bottom_position;
81mod absolute_layout_align_items_and_justify_content_center_and_left_position;
82mod absolute_layout_align_items_and_justify_content_center_and_right_position;
83mod absolute_layout_align_items_and_justify_content_center_and_top_position;
84mod absolute_layout_align_items_and_justify_content_flex_end;
85mod absolute_layout_align_items_center;
86mod absolute_layout_align_items_center_on_child_only;
87mod absolute_layout_child_order;
88mod absolute_layout_in_wrap_reverse_column_container;
89mod absolute_layout_in_wrap_reverse_column_container_flex_end;
90mod absolute_layout_in_wrap_reverse_row_container;
91mod absolute_layout_in_wrap_reverse_row_container_flex_end;
92mod absolute_layout_justify_content_center;
93mod absolute_layout_no_size;
94mod absolute_layout_percentage_bottom_based_on_parent_height;
95mod absolute_layout_percentage_height;
96mod absolute_layout_row_width_height_end_bottom;
97mod absolute_layout_start_top_end_bottom;
98mod absolute_layout_width_height_end_bottom;
99mod absolute_layout_width_height_start_top;
100mod absolute_layout_width_height_start_top_end_bottom;
101mod absolute_layout_within_border;
102mod absolute_margin_bottom_left;
103mod absolute_minmax_bottom_right_max;
104mod absolute_minmax_bottom_right_min_max;
105mod absolute_minmax_bottom_right_min_max_preferred;
106mod absolute_minmax_top_left_bottom_right_max;
107mod absolute_minmax_top_left_bottom_right_min_max;
108mod align_baseline;
109mod align_baseline_child;
110mod align_baseline_child_margin;
111mod align_baseline_child_margin_percent;
112mod align_baseline_child_multiline;
113mod align_baseline_child_multiline_no_override_on_secondline;
114mod align_baseline_child_multiline_override;
115mod align_baseline_child_padding;
116mod align_baseline_child_top;
117mod align_baseline_child_top2;
118mod align_baseline_column;
119mod align_baseline_double_nested_child;
120mod align_baseline_multiline;
121mod align_baseline_multiline_column;
122mod align_baseline_multiline_column2;
123mod align_baseline_multiline_row_and_column;
124mod align_baseline_nested_child;
125mod align_baseline_nested_column;
126mod align_center_should_size_based_on_content;
127mod align_content_flex_end;
128mod align_content_flex_start;
129mod align_content_flex_start_with_flex;
130mod align_content_flex_start_without_height_on_children;
131mod align_content_not_stretch_with_align_items_stretch;
132mod align_content_space_around_single_line;
133mod align_content_space_around_wrapped;
134mod align_content_space_between_single_line;
135mod align_content_space_between_wrapped;
136mod align_content_space_evenly_single_line;
137mod align_content_space_evenly_wrapped;
138mod align_content_spacearound;
139mod align_content_spacebetween;
140mod align_content_stretch;
141mod align_content_stretch_column;
142mod align_content_stretch_is_not_overriding_align_items;
143mod align_content_stretch_row;
144mod align_content_stretch_row_with_children;
145mod align_content_stretch_row_with_fixed_height;
146mod align_content_stretch_row_with_flex;
147mod align_content_stretch_row_with_flex_no_shrink;
148mod align_content_stretch_row_with_margin;
149mod align_content_stretch_row_with_max_height;
150mod align_content_stretch_row_with_min_height;
151mod align_content_stretch_row_with_padding;
152mod align_content_stretch_row_with_single_row;
153mod align_flex_start_with_shrinking_children;
154mod align_flex_start_with_shrinking_children_with_stretch;
155mod align_flex_start_with_stretching_children;
156mod align_items_center;
157mod align_items_center_child_with_margin_bigger_than_parent;
158mod align_items_center_child_without_margin_bigger_than_parent;
159mod align_items_center_justify_content_center;
160mod align_items_center_min_max_with_padding;
161mod align_items_center_with_child_margin;
162mod align_items_center_with_child_top;
163mod align_items_flex_end;
164mod align_items_flex_end_child_with_margin_bigger_than_parent;
165mod align_items_flex_end_child_without_margin_bigger_than_parent;
166mod align_items_flex_start;
167mod align_items_min_max;
168mod align_items_stretch;
169mod align_items_stretch_min_cross;
170mod align_self_baseline;
171mod align_self_center;
172mod align_self_center_undefined_max_height;
173mod align_self_flex_end;
174mod align_self_flex_end_override_flex_start;
175mod align_self_flex_start;
176mod align_stretch_should_size_based_on_parent;
177mod android_news_feed;
178mod aspect_ratio_flex_column_fill_height;
179mod aspect_ratio_flex_column_fill_max_height;
180mod aspect_ratio_flex_column_fill_max_width;
181mod aspect_ratio_flex_column_fill_min_height;
182mod aspect_ratio_flex_column_fill_min_width;
183mod aspect_ratio_flex_column_fill_width;
184mod aspect_ratio_flex_column_fill_width_flex;
185mod aspect_ratio_flex_column_stretch_fill_height;
186mod aspect_ratio_flex_column_stretch_fill_max_height;
187mod aspect_ratio_flex_column_stretch_fill_max_width;
188mod aspect_ratio_flex_column_stretch_fill_width;
189mod aspect_ratio_flex_row_fill_height;
190mod aspect_ratio_flex_row_fill_max_height;
191mod aspect_ratio_flex_row_fill_max_width;
192mod aspect_ratio_flex_row_fill_min_height;
193mod aspect_ratio_flex_row_fill_min_width;
194mod aspect_ratio_flex_row_fill_width;
195mod aspect_ratio_flex_row_fill_width_flex;
196mod aspect_ratio_flex_row_stretch_fill_height;
197mod aspect_ratio_flex_row_stretch_fill_max_height;
198mod aspect_ratio_flex_row_stretch_fill_max_width;
199mod aspect_ratio_flex_row_stretch_fill_width;
200mod border_center_child;
201mod border_container_match_child;
202mod border_flex_child;
203mod border_no_child;
204mod border_no_size;
205mod border_stretch_child;
206mod child_min_max_width_flexing;
207mod child_with_padding_align_end;
208mod container_with_unsized_child;
209mod display_none;
210mod display_none_absolute_child;
211mod display_none_fixed_size;
212mod display_none_with_child;
213mod display_none_with_margin;
214mod display_none_with_position;
215mod display_none_with_position_absolute;
216mod flex_basis_and_main_dimen_set_when_flexing;
217mod flex_basis_flex_grow_column;
218mod flex_basis_flex_grow_row;
219mod flex_basis_flex_shrink_column;
220mod flex_basis_flex_shrink_row;
221mod flex_basis_larger_than_content_column;
222mod flex_basis_larger_than_content_row;
223mod flex_basis_overrides_main_size;
224mod flex_basis_slightly_smaller_then_content_with_flex_grow_large_size;
225mod flex_basis_smaller_than_content_column;
226mod flex_basis_smaller_than_content_row;
227mod flex_basis_smaller_than_main_dimen_column;
228mod flex_basis_smaller_than_main_dimen_row;
229mod flex_basis_smaller_then_content_with_flex_grow_large_size;
230mod flex_basis_smaller_then_content_with_flex_grow_small_size;
231mod flex_basis_smaller_then_content_with_flex_grow_unconstraint_size;
232mod flex_basis_smaller_then_content_with_flex_grow_very_large_size;
233mod flex_basis_unconstraint_column;
234mod flex_basis_unconstraint_row;
235mod flex_basis_zero_undefined_main_size;
236mod flex_direction_column;
237mod flex_direction_column_no_height;
238mod flex_direction_column_reverse;
239mod flex_direction_column_reverse_no_height;
240mod flex_direction_row;
241mod flex_direction_row_no_width;
242mod flex_direction_row_reverse;
243mod flex_grow_child;
244mod flex_grow_flex_basis_percent_min_max;
245mod flex_grow_height_maximized;
246mod flex_grow_in_at_most_container;
247mod flex_grow_less_than_factor_one;
248mod flex_grow_root_minimized;
249mod flex_grow_shrink_at_most;
250mod flex_grow_to_min;
251mod flex_grow_within_constrained_max_column;
252mod flex_grow_within_constrained_max_row;
253mod flex_grow_within_constrained_max_width;
254mod flex_grow_within_constrained_min_column;
255mod flex_grow_within_constrained_min_max_column;
256mod flex_grow_within_constrained_min_row;
257mod flex_grow_within_max_width;
258mod flex_root_ignored;
259mod flex_shrink_by_outer_margin_with_max_size;
260mod flex_shrink_flex_grow_child_flex_shrink_other_child;
261mod flex_shrink_flex_grow_row;
262mod flex_shrink_to_zero;
263mod flex_wrap_align_stretch_fits_one_row;
264mod flex_wrap_children_with_min_main_overriding_flex_basis;
265mod flex_wrap_wrap_to_child_height;
266mod gap_column_gap_child_margins;
267mod gap_column_gap_determines_parent_width;
268mod gap_column_gap_flexible;
269mod gap_column_gap_flexible_undefined_parent;
270mod gap_column_gap_inflexible;
271mod gap_column_gap_inflexible_undefined_parent;
272mod gap_column_gap_justify_center;
273mod gap_column_gap_justify_flex_end;
274mod gap_column_gap_justify_flex_start;
275mod gap_column_gap_justify_space_around;
276mod gap_column_gap_justify_space_between;
277mod gap_column_gap_justify_space_evenly;
278mod gap_column_gap_mixed_flexible;
279mod gap_column_gap_percentage_cyclic_partially_shrinkable;
280mod gap_column_gap_percentage_cyclic_shrinkable;
281mod gap_column_gap_percentage_cyclic_unshrinkable;
282mod gap_column_gap_percentage_flexible;
283mod gap_column_gap_percentage_flexible_with_padding;
284mod gap_column_gap_percentage_inflexible;
285mod gap_column_gap_row_gap_wrapping;
286mod gap_column_gap_wrap_align_center;
287mod gap_column_gap_wrap_align_flex_end;
288mod gap_column_gap_wrap_align_flex_start;
289mod gap_column_gap_wrap_align_space_around;
290mod gap_column_gap_wrap_align_space_between;
291mod gap_column_gap_wrap_align_stretch;
292mod gap_column_row_gap_wrapping;
293mod gap_percentage_row_gap_wrapping;
294mod gap_row_gap_align_items_end;
295mod gap_row_gap_align_items_stretch;
296mod gap_row_gap_column_child_margins;
297mod gap_row_gap_determines_parent_height;
298mod gap_row_gap_row_wrap_child_margins;
299#[cfg(feature = "grid")]
300mod grid_absolute_align_self_sized_all;
301#[cfg(feature = "grid")]
302mod grid_absolute_column_end;
303#[cfg(feature = "grid")]
304mod grid_absolute_column_start;
305#[cfg(feature = "grid")]
306mod grid_absolute_container_bottom_left;
307#[cfg(feature = "grid")]
308mod grid_absolute_container_bottom_left_margin;
309#[cfg(feature = "grid")]
310mod grid_absolute_container_left_overrides_right;
311#[cfg(feature = "grid")]
312mod grid_absolute_container_left_right;
313#[cfg(feature = "grid")]
314mod grid_absolute_container_left_right_margin;
315#[cfg(feature = "grid")]
316mod grid_absolute_container_negative_position;
317#[cfg(feature = "grid")]
318mod grid_absolute_container_negative_position_margin;
319#[cfg(feature = "grid")]
320mod grid_absolute_container_top_bottom;
321#[cfg(feature = "grid")]
322mod grid_absolute_container_top_bottom_margin;
323#[cfg(feature = "grid")]
324mod grid_absolute_container_top_right;
325#[cfg(feature = "grid")]
326mod grid_absolute_container_top_right_margin;
327#[cfg(feature = "grid")]
328mod grid_absolute_justify_self_sized_all;
329#[cfg(feature = "grid")]
330mod grid_absolute_layout_within_border;
331#[cfg(feature = "grid")]
332mod grid_absolute_layout_within_border_static;
333#[cfg(feature = "grid")]
334mod grid_absolute_row_end;
335#[cfg(feature = "grid")]
336mod grid_absolute_row_start;
337#[cfg(feature = "grid")]
338mod grid_absolute_top_overrides_bottom;
339#[cfg(feature = "grid")]
340mod grid_absolute_with_padding;
341#[cfg(feature = "grid")]
342mod grid_absolute_with_padding_and_margin;
343#[cfg(feature = "grid")]
344mod grid_align_content_center;
345#[cfg(feature = "grid")]
346mod grid_align_content_end;
347#[cfg(feature = "grid")]
348mod grid_align_content_end_with_padding_border;
349#[cfg(feature = "grid")]
350mod grid_align_content_space_around;
351#[cfg(feature = "grid")]
352mod grid_align_content_space_around_with_padding_border;
353#[cfg(feature = "grid")]
354mod grid_align_content_space_between;
355#[cfg(feature = "grid")]
356mod grid_align_content_space_between_with_padding_border;
357#[cfg(feature = "grid")]
358mod grid_align_content_space_evenly;
359#[cfg(feature = "grid")]
360mod grid_align_content_space_evenly_with_padding_border;
361#[cfg(feature = "grid")]
362mod grid_align_content_start;
363#[cfg(feature = "grid")]
364mod grid_align_content_start_with_padding_border;
365#[cfg(feature = "grid")]
366mod grid_align_items_sized_center;
367#[cfg(feature = "grid")]
368mod grid_align_items_sized_end;
369#[cfg(feature = "grid")]
370mod grid_align_items_sized_start;
371#[cfg(feature = "grid")]
372mod grid_align_items_sized_stretch;
373#[cfg(feature = "grid")]
374mod grid_align_self_sized_all;
375#[cfg(feature = "grid")]
376mod grid_aspect_ratio_absolute_aspect_ratio_overrides_height_of_full_inset;
377#[cfg(feature = "grid")]
378mod grid_aspect_ratio_absolute_fill_height_from_inset;
379#[cfg(feature = "grid")]
380mod grid_aspect_ratio_absolute_fill_width_from_inset;
381#[cfg(feature = "grid")]
382mod grid_aspect_ratio_absolute_height_overrides_inset;
383#[cfg(feature = "grid")]
384mod grid_aspect_ratio_absolute_width_overrides_inset;
385#[cfg(feature = "grid")]
386mod grid_aspect_ratio_child_fill_content_height;
387#[cfg(feature = "grid")]
388mod grid_aspect_ratio_child_fill_content_width;
389#[cfg(feature = "grid")]
390mod grid_aspect_ratio_fill_child_height;
391#[cfg(feature = "grid")]
392mod grid_aspect_ratio_fill_child_max_height;
393#[cfg(feature = "grid")]
394mod grid_aspect_ratio_fill_child_max_width;
395#[cfg(feature = "grid")]
396mod grid_aspect_ratio_fill_child_min_height;
397#[cfg(feature = "grid")]
398mod grid_aspect_ratio_fill_child_min_width;
399#[cfg(feature = "grid")]
400mod grid_aspect_ratio_fill_child_width;
401#[cfg(feature = "grid")]
402mod grid_aspect_ratio_overriden_by_explicit_sizes;
403#[cfg(feature = "grid")]
404mod grid_aspect_ratio_overriden_by_explicit_sizes_flex;
405#[cfg(feature = "grid")]
406mod grid_auto_columns_fixed_width;
407#[cfg(feature = "grid")]
408mod grid_auto_fill_fixed_size;
409#[cfg(feature = "grid")]
410mod grid_auto_fill_with_empty_auto_track;
411#[cfg(feature = "grid")]
412mod grid_auto_fit_with_empty_auto_track;
413#[cfg(feature = "grid")]
414mod grid_auto_single_item;
415#[cfg(feature = "grid")]
416mod grid_auto_single_item_fixed_width;
417#[cfg(feature = "grid")]
418mod grid_auto_single_item_fixed_width_with_definite_width;
419#[cfg(feature = "grid")]
420mod grid_basic;
421#[cfg(feature = "grid")]
422mod grid_basic_implicit_tracks;
423#[cfg(feature = "grid")]
424mod grid_basic_with_overflow;
425#[cfg(feature = "grid")]
426mod grid_basic_with_padding;
427#[cfg(feature = "grid")]
428mod grid_fit_content_percent_definite_argument;
429#[cfg(feature = "grid")]
430mod grid_fit_content_percent_definite_max_content;
431#[cfg(feature = "grid")]
432mod grid_fit_content_percent_definite_min_content;
433#[cfg(feature = "grid")]
434mod grid_fit_content_percent_indefinite_argument;
435#[cfg(feature = "grid")]
436mod grid_fit_content_percent_indefinite_max_content;
437#[cfg(feature = "grid")]
438mod grid_fit_content_percent_indefinite_min_content;
439#[cfg(feature = "grid")]
440mod grid_fit_content_points_argument;
441#[cfg(feature = "grid")]
442mod grid_fit_content_points_max_content;
443#[cfg(feature = "grid")]
444mod grid_fit_content_points_min_content;
445#[cfg(feature = "grid")]
446mod grid_fr_auto_no_sized_items;
447#[cfg(feature = "grid")]
448mod grid_fr_auto_single_item;
449#[cfg(feature = "grid")]
450mod grid_fr_fixed_size_no_content;
451#[cfg(feature = "grid")]
452mod grid_fr_fixed_size_single_item;
453#[cfg(feature = "grid")]
454mod grid_gap;
455#[cfg(feature = "grid")]
456mod grid_hidden;
457#[cfg(feature = "grid")]
458mod grid_justify_content_center;
459#[cfg(feature = "grid")]
460mod grid_justify_content_center_with_padding_border;
461#[cfg(feature = "grid")]
462mod grid_justify_content_end;
463#[cfg(feature = "grid")]
464mod grid_justify_content_end_with_padding_border;
465#[cfg(feature = "grid")]
466mod grid_justify_content_space_around;
467#[cfg(feature = "grid")]
468mod grid_justify_content_space_around_with_padding_border;
469#[cfg(feature = "grid")]
470mod grid_justify_content_space_between;
471#[cfg(feature = "grid")]
472mod grid_justify_content_space_between_with_padding_border;
473#[cfg(feature = "grid")]
474mod grid_justify_content_space_evenly;
475#[cfg(feature = "grid")]
476mod grid_justify_content_space_evenly_with_padding_border;
477#[cfg(feature = "grid")]
478mod grid_justify_content_start;
479#[cfg(feature = "grid")]
480mod grid_justify_content_start_with_padding_border;
481#[cfg(feature = "grid")]
482mod grid_justify_items_sized_center;
483#[cfg(feature = "grid")]
484mod grid_justify_items_sized_end;
485#[cfg(feature = "grid")]
486mod grid_justify_items_sized_start;
487#[cfg(feature = "grid")]
488mod grid_justify_items_sized_stretch;
489#[cfg(feature = "grid")]
490mod grid_justify_self_sized_all;
491#[cfg(feature = "grid")]
492mod grid_margins_auto_margins;
493#[cfg(feature = "grid")]
494mod grid_margins_auto_margins_override_stretch;
495#[cfg(feature = "grid")]
496mod grid_margins_fixed_center;
497#[cfg(feature = "grid")]
498mod grid_margins_fixed_end;
499#[cfg(feature = "grid")]
500mod grid_margins_fixed_start;
501#[cfg(feature = "grid")]
502mod grid_margins_fixed_stretch;
503#[cfg(feature = "grid")]
504mod grid_margins_percent_center;
505#[cfg(feature = "grid")]
506mod grid_margins_percent_end;
507#[cfg(feature = "grid")]
508mod grid_margins_percent_start;
509#[cfg(feature = "grid")]
510mod grid_margins_percent_stretch;
511#[cfg(feature = "grid")]
512mod grid_max_content_maximum_single_item;
513#[cfg(feature = "grid")]
514mod grid_max_content_single_item;
515#[cfg(feature = "grid")]
516mod grid_max_content_single_item_margin_auto;
517#[cfg(feature = "grid")]
518mod grid_max_content_single_item_margin_fixed;
519#[cfg(feature = "grid")]
520mod grid_max_content_single_item_margin_percent;
521#[cfg(feature = "grid")]
522mod grid_max_content_single_item_span_2;
523#[cfg(feature = "grid")]
524mod grid_max_content_single_item_span_2_gap_fixed;
525#[cfg(feature = "grid")]
526mod grid_max_content_single_item_span_2_gap_percent_definite;
527#[cfg(feature = "grid")]
528mod grid_max_content_single_item_span_2_gap_percent_indefinite;
529#[cfg(feature = "grid")]
530mod grid_min_content_flex_column;
531#[cfg(feature = "grid")]
532mod grid_min_content_flex_row;
533#[cfg(feature = "grid")]
534mod grid_min_content_flex_single_item;
535#[cfg(feature = "grid")]
536mod grid_min_content_flex_single_item_margin_auto;
537#[cfg(feature = "grid")]
538mod grid_min_content_flex_single_item_margin_fixed;
539#[cfg(feature = "grid")]
540mod grid_min_content_flex_single_item_margin_percent;
541#[cfg(feature = "grid")]
542mod grid_min_content_maximum_single_item;
543#[cfg(feature = "grid")]
544mod grid_min_content_single_item;
545#[cfg(feature = "grid")]
546mod grid_min_max_column_auto;
547#[cfg(feature = "grid")]
548mod grid_min_max_column_fixed_width_above_range;
549#[cfg(feature = "grid")]
550mod grid_min_max_column_fixed_width_below_range;
551#[cfg(feature = "grid")]
552mod grid_min_max_column_fixed_width_within_range;
553#[cfg(feature = "grid")]
554mod grid_out_of_order_items;
555#[cfg(feature = "grid")]
556mod grid_percent_items_nested_moderate;
557#[cfg(feature = "grid")]
558mod grid_percent_items_nested_with_padding_margin;
559#[cfg(feature = "grid")]
560mod grid_percent_items_width_and_margin;
561#[cfg(feature = "grid")]
562mod grid_percent_items_width_and_padding;
563#[cfg(feature = "grid")]
564mod grid_percent_tracks_definite_overflow;
565#[cfg(feature = "grid")]
566mod grid_percent_tracks_definite_underflow;
567#[cfg(feature = "grid")]
568mod grid_percent_tracks_indefinite_only;
569#[cfg(feature = "grid")]
570mod grid_percent_tracks_indefinite_with_content_overflow;
571#[cfg(feature = "grid")]
572mod grid_percent_tracks_indefinite_with_content_underflow;
573#[cfg(feature = "grid")]
574mod grid_placement_auto_negative;
575#[cfg(feature = "grid")]
576mod grid_placement_definite_in_secondary_axis_with_fully_definite_negative;
577#[cfg(feature = "grid")]
578mod grid_relayout_vertical_text;
579#[cfg(feature = "grid")]
580mod grid_size_child_fixed_tracks;
581mod justify_content_column_center;
582mod justify_content_column_flex_end;
583mod justify_content_column_flex_start;
584mod justify_content_column_max_height_and_margin;
585mod justify_content_column_min_height_and_margin;
586mod justify_content_column_min_height_and_margin_bottom;
587mod justify_content_column_min_height_and_margin_top;
588mod justify_content_column_space_around;
589mod justify_content_column_space_between;
590mod justify_content_column_space_evenly;
591mod justify_content_min_max;
592mod justify_content_min_width_with_padding_child_width_greater_than_parent;
593mod justify_content_min_width_with_padding_child_width_lower_than_parent;
594mod justify_content_overflow_min_max;
595mod justify_content_row_center;
596mod justify_content_row_flex_end;
597mod justify_content_row_flex_start;
598mod justify_content_row_max_width_and_margin;
599mod justify_content_row_min_width_and_margin;
600mod justify_content_row_space_around;
601mod justify_content_row_space_between;
602mod justify_content_row_space_evenly;
603mod margin_and_flex_column;
604mod margin_and_flex_row;
605mod margin_and_stretch_column;
606mod margin_and_stretch_row;
607mod margin_auto_bottom;
608mod margin_auto_bottom_and_top;
609mod margin_auto_bottom_and_top_justify_center;
610mod margin_auto_left;
611mod margin_auto_left_and_right;
612mod margin_auto_left_and_right_column;
613mod margin_auto_left_and_right_column_and_center;
614mod margin_auto_left_and_right_stretch;
615mod margin_auto_left_child_bigger_than_parent;
616mod margin_auto_left_fix_right_child_bigger_than_parent;
617mod margin_auto_left_right_child_bigger_than_parent;
618mod margin_auto_left_stretching_child;
619mod margin_auto_mutiple_children_column;
620mod margin_auto_mutiple_children_row;
621mod margin_auto_right;
622mod margin_auto_top;
623mod margin_auto_top_and_bottom_stretch;
624mod margin_auto_top_stretching_child;
625mod margin_bottom;
626mod margin_fix_left_auto_right_child_bigger_than_parent;
627mod margin_left;
628mod margin_right;
629mod margin_should_not_be_part_of_max_height;
630mod margin_should_not_be_part_of_max_width;
631mod margin_top;
632mod margin_with_sibling_column;
633mod margin_with_sibling_row;
634mod max_height;
635mod max_height_overrides_height;
636mod max_height_overrides_height_on_root;
637mod max_width;
638mod max_width_overrides_width;
639mod max_width_overrides_width_on_root;
640mod measure_child;
641mod measure_child_absolute;
642mod measure_child_constraint;
643mod measure_child_constraint_padding_parent;
644mod measure_child_with_flex_grow;
645mod measure_child_with_flex_shrink;
646mod measure_flex_basis_overrides_measure;
647mod measure_height_overrides_measure;
648mod measure_remeasure_child_after_growing;
649mod measure_remeasure_child_after_shrinking;
650mod measure_remeasure_child_after_stretching;
651mod measure_root;
652mod measure_stretch_overrides_measure;
653mod measure_width_overrides_measure;
654mod min_height;
655mod min_height_larger_than_height;
656mod min_height_overrides_height;
657mod min_height_overrides_height_on_root;
658mod min_height_overrides_max_height;
659mod min_height_with_nested_fixed_height;
660mod min_max_percent_different_width_height;
661mod min_max_percent_no_width_height;
662mod min_width;
663mod min_width_larger_than_width;
664mod min_width_overrides_max_width;
665mod min_width_overrides_width;
666mod min_width_overrides_width_on_root;
667mod nested_overflowing_child;
668mod nested_overflowing_child_in_constraint_parent;
669mod only_shrinkable_item_with_flex_basis_zero;
670mod overflow_cross_axis;
671mod overflow_main_axis;
672mod padding_align_end_child;
673mod padding_center_child;
674mod padding_container_match_child;
675mod padding_flex_child;
676mod padding_no_child;
677mod padding_no_size;
678mod padding_stretch_child;
679mod parent_wrap_child_size_overflowing_parent;
680mod percent_absolute_position;
681mod percent_within_flex_grow;
682mod percentage_absolute_position;
683mod percentage_container_in_wrapping_container;
684mod percentage_different_width_height;
685mod percentage_different_width_height_column;
686mod percentage_flex_basis;
687mod percentage_flex_basis_cross;
688mod percentage_flex_basis_cross_max_height;
689mod percentage_flex_basis_cross_max_width;
690mod percentage_flex_basis_cross_min_height;
691mod percentage_flex_basis_cross_min_width;
692mod percentage_flex_basis_main_max_height;
693mod percentage_flex_basis_main_max_width;
694mod percentage_flex_basis_main_min_width;
695mod percentage_main_max_height;
696mod percentage_margin_should_calculate_based_only_on_width;
697mod percentage_moderate_complexity;
698mod percentage_multiple_nested_with_padding_margin_and_percentage_values;
699mod percentage_padding_should_calculate_based_only_on_width;
700mod percentage_position_bottom_right;
701mod percentage_position_left_top;
702mod percentage_size_based_on_parent_inner_size;
703mod percentage_size_of_flex_basis;
704mod percentage_width_height;
705mod percentage_width_height_undefined_parent_size;
706mod position_root_with_rtl_should_position_withoutdirection;
707mod relative_position_should_not_nudge_siblings;
708mod rounding_flex_basis_flex_grow_row_prime_number_width;
709mod rounding_flex_basis_flex_grow_row_width_of_100;
710mod rounding_flex_basis_flex_shrink_row;
711mod rounding_flex_basis_overrides_main_size;
712mod rounding_fractial_input_1;
713mod rounding_fractial_input_2;
714mod rounding_fractial_input_3;
715mod rounding_fractial_input_4;
716mod rounding_inner_node_controversy_vertical;
717mod rounding_total_fractial;
718mod rounding_total_fractial_nested;
719mod single_flex_child_after_absolute_child;
720mod size_defined_by_child;
721mod size_defined_by_child_with_border;
722mod size_defined_by_child_with_padding;
723mod size_defined_by_grand_child;
724mod undefined_height_with_min_max;
725mod undefined_width_with_min_max;
726mod undefined_width_with_min_max_row;
727mod width_smaller_then_content_with_flex_grow_large_size;
728mod width_smaller_then_content_with_flex_grow_small_size;
729mod width_smaller_then_content_with_flex_grow_unconstraint_size;
730mod width_smaller_then_content_with_flex_grow_very_large_size;
731mod wrap_child;
732mod wrap_column;
733mod wrap_grandchild;
734mod wrap_nodes_with_content_sizing_margin_cross;
735mod wrap_nodes_with_content_sizing_overflowing_margin;
736mod wrap_reverse_column;
737mod wrap_reverse_column_fixed_size;
738mod wrap_reverse_row;
739mod wrap_reverse_row_align_content_center;
740mod wrap_reverse_row_align_content_flex_start;
741mod wrap_reverse_row_align_content_space_around;
742mod wrap_reverse_row_align_content_stretch;
743mod wrap_reverse_row_single_line_different_size;
744mod wrap_row;
745mod wrap_row_align_items_center;
746mod wrap_row_align_items_flex_end;
747mod wrapped_column_max_height;
748mod wrapped_column_max_height_flex;
749mod wrapped_row_within_align_items_center;
750mod wrapped_row_within_align_items_flex_end;
751mod wrapped_row_within_align_items_flex_start;
752fn benchmark(c: &mut Criterion) {
753 c.bench_function("generated benchmarks", |b| {
754 b.iter(|| {
755 absolute_aspect_ratio_aspect_ratio_overrides_height_of_full_inset::compute();
756 absolute_aspect_ratio_fill_height::compute();
757 absolute_aspect_ratio_fill_height_from_inset::compute();
758 absolute_aspect_ratio_fill_max_height::compute();
759 absolute_aspect_ratio_fill_max_width::compute();
760 absolute_aspect_ratio_fill_min_height::compute();
761 absolute_aspect_ratio_fill_min_width::compute();
762 absolute_aspect_ratio_fill_width::compute();
763 absolute_aspect_ratio_fill_width_from_inset::compute();
764 absolute_aspect_ratio_height_overrides_inset::compute();
765 absolute_aspect_ratio_width_overrides_inset::compute();
766 absolute_child_with_cross_margin::compute();
767 absolute_child_with_main_margin::compute();
768 absolute_child_with_max_height::compute();
769 absolute_child_with_max_height_larger_shrinkable_grandchild::compute();
770 absolute_layout_align_items_and_justify_content_center::compute();
771 absolute_layout_align_items_and_justify_content_center_and_bottom_position::compute();
772 absolute_layout_align_items_and_justify_content_center_and_left_position::compute();
773 absolute_layout_align_items_and_justify_content_center_and_right_position::compute();
774 absolute_layout_align_items_and_justify_content_center_and_top_position::compute();
775 absolute_layout_align_items_and_justify_content_flex_end::compute();
776 absolute_layout_align_items_center::compute();
777 absolute_layout_align_items_center_on_child_only::compute();
778 absolute_layout_child_order::compute();
779 absolute_layout_in_wrap_reverse_column_container::compute();
780 absolute_layout_in_wrap_reverse_column_container_flex_end::compute();
781 absolute_layout_in_wrap_reverse_row_container::compute();
782 absolute_layout_in_wrap_reverse_row_container_flex_end::compute();
783 absolute_layout_justify_content_center::compute();
784 absolute_layout_no_size::compute();
785 absolute_layout_percentage_bottom_based_on_parent_height::compute();
786 absolute_layout_percentage_height::compute();
787 absolute_layout_row_width_height_end_bottom::compute();
788 absolute_layout_start_top_end_bottom::compute();
789 absolute_layout_width_height_end_bottom::compute();
790 absolute_layout_width_height_start_top::compute();
791 absolute_layout_width_height_start_top_end_bottom::compute();
792 absolute_layout_within_border::compute();
793 absolute_margin_bottom_left::compute();
794 absolute_minmax_bottom_right_max::compute();
795 absolute_minmax_bottom_right_min_max::compute();
796 absolute_minmax_bottom_right_min_max_preferred::compute();
797 absolute_minmax_top_left_bottom_right_max::compute();
798 absolute_minmax_top_left_bottom_right_min_max::compute();
799 align_baseline::compute();
800 align_baseline_child::compute();
801 align_baseline_child_margin::compute();
802 align_baseline_child_margin_percent::compute();
803 align_baseline_child_multiline::compute();
804 align_baseline_child_multiline_no_override_on_secondline::compute();
805 align_baseline_child_multiline_override::compute();
806 align_baseline_child_padding::compute();
807 align_baseline_child_top::compute();
808 align_baseline_child_top2::compute();
809 align_baseline_column::compute();
810 align_baseline_double_nested_child::compute();
811 align_baseline_multiline::compute();
812 align_baseline_multiline_column::compute();
813 align_baseline_multiline_column2::compute();
814 align_baseline_multiline_row_and_column::compute();
815 align_baseline_nested_child::compute();
816 align_baseline_nested_column::compute();
817 align_center_should_size_based_on_content::compute();
818 align_content_flex_end::compute();
819 align_content_flex_start::compute();
820 align_content_flex_start_with_flex::compute();
821 align_content_flex_start_without_height_on_children::compute();
822 align_content_not_stretch_with_align_items_stretch::compute();
823 align_content_space_around_single_line::compute();
824 align_content_space_around_wrapped::compute();
825 align_content_space_between_single_line::compute();
826 align_content_space_between_wrapped::compute();
827 align_content_space_evenly_single_line::compute();
828 align_content_space_evenly_wrapped::compute();
829 align_content_spacearound::compute();
830 align_content_spacebetween::compute();
831 align_content_stretch::compute();
832 align_content_stretch_column::compute();
833 align_content_stretch_is_not_overriding_align_items::compute();
834 align_content_stretch_row::compute();
835 align_content_stretch_row_with_children::compute();
836 align_content_stretch_row_with_fixed_height::compute();
837 align_content_stretch_row_with_flex::compute();
838 align_content_stretch_row_with_flex_no_shrink::compute();
839 align_content_stretch_row_with_margin::compute();
840 align_content_stretch_row_with_max_height::compute();
841 align_content_stretch_row_with_min_height::compute();
842 align_content_stretch_row_with_padding::compute();
843 align_content_stretch_row_with_single_row::compute();
844 align_flex_start_with_shrinking_children::compute();
845 align_flex_start_with_shrinking_children_with_stretch::compute();
846 align_flex_start_with_stretching_children::compute();
847 align_items_center::compute();
848 align_items_center_child_with_margin_bigger_than_parent::compute();
849 align_items_center_child_without_margin_bigger_than_parent::compute();
850 align_items_center_justify_content_center::compute();
851 align_items_center_min_max_with_padding::compute();
852 align_items_center_with_child_margin::compute();
853 align_items_center_with_child_top::compute();
854 align_items_flex_end::compute();
855 align_items_flex_end_child_with_margin_bigger_than_parent::compute();
856 align_items_flex_end_child_without_margin_bigger_than_parent::compute();
857 align_items_flex_start::compute();
858 align_items_min_max::compute();
859 align_items_stretch::compute();
860 align_items_stretch_min_cross::compute();
861 align_self_baseline::compute();
862 align_self_center::compute();
863 align_self_center_undefined_max_height::compute();
864 align_self_flex_end::compute();
865 align_self_flex_end_override_flex_start::compute();
866 align_self_flex_start::compute();
867 align_stretch_should_size_based_on_parent::compute();
868 android_news_feed::compute();
869 aspect_ratio_flex_column_fill_height::compute();
870 aspect_ratio_flex_column_fill_max_height::compute();
871 aspect_ratio_flex_column_fill_max_width::compute();
872 aspect_ratio_flex_column_fill_min_height::compute();
873 aspect_ratio_flex_column_fill_min_width::compute();
874 aspect_ratio_flex_column_fill_width::compute();
875 aspect_ratio_flex_column_fill_width_flex::compute();
876 aspect_ratio_flex_column_stretch_fill_height::compute();
877 aspect_ratio_flex_column_stretch_fill_max_height::compute();
878 aspect_ratio_flex_column_stretch_fill_max_width::compute();
879 aspect_ratio_flex_column_stretch_fill_width::compute();
880 aspect_ratio_flex_row_fill_height::compute();
881 aspect_ratio_flex_row_fill_max_height::compute();
882 aspect_ratio_flex_row_fill_max_width::compute();
883 aspect_ratio_flex_row_fill_min_height::compute();
884 aspect_ratio_flex_row_fill_min_width::compute();
885 aspect_ratio_flex_row_fill_width::compute();
886 aspect_ratio_flex_row_fill_width_flex::compute();
887 aspect_ratio_flex_row_stretch_fill_height::compute();
888 aspect_ratio_flex_row_stretch_fill_max_height::compute();
889 aspect_ratio_flex_row_stretch_fill_max_width::compute();
890 aspect_ratio_flex_row_stretch_fill_width::compute();
891 border_center_child::compute();
892 border_container_match_child::compute();
893 border_flex_child::compute();
894 border_no_child::compute();
895 border_no_size::compute();
896 border_stretch_child::compute();
897 child_min_max_width_flexing::compute();
898 child_with_padding_align_end::compute();
899 container_with_unsized_child::compute();
900 display_none::compute();
901 display_none_absolute_child::compute();
902 display_none_fixed_size::compute();
903 display_none_with_child::compute();
904 display_none_with_margin::compute();
905 display_none_with_position::compute();
906 display_none_with_position_absolute::compute();
907 flex_basis_and_main_dimen_set_when_flexing::compute();
908 flex_basis_flex_grow_column::compute();
909 flex_basis_flex_grow_row::compute();
910 flex_basis_flex_shrink_column::compute();
911 flex_basis_flex_shrink_row::compute();
912 flex_basis_larger_than_content_column::compute();
913 flex_basis_larger_than_content_row::compute();
914 flex_basis_overrides_main_size::compute();
915 flex_basis_slightly_smaller_then_content_with_flex_grow_large_size::compute();
916 flex_basis_smaller_than_content_column::compute();
917 flex_basis_smaller_than_content_row::compute();
918 flex_basis_smaller_than_main_dimen_column::compute();
919 flex_basis_smaller_than_main_dimen_row::compute();
920 flex_basis_smaller_then_content_with_flex_grow_large_size::compute();
921 flex_basis_smaller_then_content_with_flex_grow_small_size::compute();
922 flex_basis_smaller_then_content_with_flex_grow_unconstraint_size::compute();
923 flex_basis_smaller_then_content_with_flex_grow_very_large_size::compute();
924 flex_basis_unconstraint_column::compute();
925 flex_basis_unconstraint_row::compute();
926 flex_basis_zero_undefined_main_size::compute();
927 flex_direction_column::compute();
928 flex_direction_column_no_height::compute();
929 flex_direction_column_reverse::compute();
930 flex_direction_column_reverse_no_height::compute();
931 flex_direction_row::compute();
932 flex_direction_row_no_width::compute();
933 flex_direction_row_reverse::compute();
934 flex_grow_child::compute();
935 flex_grow_flex_basis_percent_min_max::compute();
936 flex_grow_height_maximized::compute();
937 flex_grow_in_at_most_container::compute();
938 flex_grow_less_than_factor_one::compute();
939 flex_grow_root_minimized::compute();
940 flex_grow_shrink_at_most::compute();
941 flex_grow_to_min::compute();
942 flex_grow_within_constrained_max_column::compute();
943 flex_grow_within_constrained_max_row::compute();
944 flex_grow_within_constrained_max_width::compute();
945 flex_grow_within_constrained_min_column::compute();
946 flex_grow_within_constrained_min_max_column::compute();
947 flex_grow_within_constrained_min_row::compute();
948 flex_grow_within_max_width::compute();
949 flex_root_ignored::compute();
950 flex_shrink_by_outer_margin_with_max_size::compute();
951 flex_shrink_flex_grow_child_flex_shrink_other_child::compute();
952 flex_shrink_flex_grow_row::compute();
953 flex_shrink_to_zero::compute();
954 flex_wrap_align_stretch_fits_one_row::compute();
955 flex_wrap_children_with_min_main_overriding_flex_basis::compute();
956 flex_wrap_wrap_to_child_height::compute();
957 gap_column_gap_child_margins::compute();
958 gap_column_gap_determines_parent_width::compute();
959 gap_column_gap_flexible::compute();
960 gap_column_gap_flexible_undefined_parent::compute();
961 gap_column_gap_inflexible::compute();
962 gap_column_gap_inflexible_undefined_parent::compute();
963 gap_column_gap_justify_center::compute();
964 gap_column_gap_justify_flex_end::compute();
965 gap_column_gap_justify_flex_start::compute();
966 gap_column_gap_justify_space_around::compute();
967 gap_column_gap_justify_space_between::compute();
968 gap_column_gap_justify_space_evenly::compute();
969 gap_column_gap_mixed_flexible::compute();
970 gap_column_gap_percentage_cyclic_partially_shrinkable::compute();
971 gap_column_gap_percentage_cyclic_shrinkable::compute();
972 gap_column_gap_percentage_cyclic_unshrinkable::compute();
973 gap_column_gap_percentage_flexible::compute();
974 gap_column_gap_percentage_flexible_with_padding::compute();
975 gap_column_gap_percentage_inflexible::compute();
976 gap_column_gap_row_gap_wrapping::compute();
977 gap_column_gap_wrap_align_center::compute();
978 gap_column_gap_wrap_align_flex_end::compute();
979 gap_column_gap_wrap_align_flex_start::compute();
980 gap_column_gap_wrap_align_space_around::compute();
981 gap_column_gap_wrap_align_space_between::compute();
982 gap_column_gap_wrap_align_stretch::compute();
983 gap_column_row_gap_wrapping::compute();
984 gap_percentage_row_gap_wrapping::compute();
985 gap_row_gap_align_items_end::compute();
986 gap_row_gap_align_items_stretch::compute();
987 gap_row_gap_column_child_margins::compute();
988 gap_row_gap_determines_parent_height::compute();
989 gap_row_gap_row_wrap_child_margins::compute();
990 #[cfg(feature = "grid")]
991 grid_absolute_align_self_sized_all::compute();
992 #[cfg(feature = "grid")]
993 grid_absolute_column_end::compute();
994 #[cfg(feature = "grid")]
995 grid_absolute_column_start::compute();
996 #[cfg(feature = "grid")]
997 grid_absolute_container_bottom_left::compute();
998 #[cfg(feature = "grid")]
999 grid_absolute_container_bottom_left_margin::compute();
1000 #[cfg(feature = "grid")]
1001 grid_absolute_container_left_overrides_right::compute();
1002 #[cfg(feature = "grid")]
1003 grid_absolute_container_left_right::compute();
1004 #[cfg(feature = "grid")]
1005 grid_absolute_container_left_right_margin::compute();
1006 #[cfg(feature = "grid")]
1007 grid_absolute_container_negative_position::compute();
1008 #[cfg(feature = "grid")]
1009 grid_absolute_container_negative_position_margin::compute();
1010 #[cfg(feature = "grid")]
1011 grid_absolute_container_top_bottom::compute();
1012 #[cfg(feature = "grid")]
1013 grid_absolute_container_top_bottom_margin::compute();
1014 #[cfg(feature = "grid")]
1015 grid_absolute_container_top_right::compute();
1016 #[cfg(feature = "grid")]
1017 grid_absolute_container_top_right_margin::compute();
1018 #[cfg(feature = "grid")]
1019 grid_absolute_justify_self_sized_all::compute();
1020 #[cfg(feature = "grid")]
1021 grid_absolute_layout_within_border::compute();
1022 #[cfg(feature = "grid")]
1023 grid_absolute_layout_within_border_static::compute();
1024 #[cfg(feature = "grid")]
1025 grid_absolute_row_end::compute();
1026 #[cfg(feature = "grid")]
1027 grid_absolute_row_start::compute();
1028 #[cfg(feature = "grid")]
1029 grid_absolute_top_overrides_bottom::compute();
1030 #[cfg(feature = "grid")]
1031 grid_absolute_with_padding::compute();
1032 #[cfg(feature = "grid")]
1033 grid_absolute_with_padding_and_margin::compute();
1034 #[cfg(feature = "grid")]
1035 grid_align_content_center::compute();
1036 #[cfg(feature = "grid")]
1037 grid_align_content_end::compute();
1038 #[cfg(feature = "grid")]
1039 grid_align_content_end_with_padding_border::compute();
1040 #[cfg(feature = "grid")]
1041 grid_align_content_space_around::compute();
1042 #[cfg(feature = "grid")]
1043 grid_align_content_space_around_with_padding_border::compute();
1044 #[cfg(feature = "grid")]
1045 grid_align_content_space_between::compute();
1046 #[cfg(feature = "grid")]
1047 grid_align_content_space_between_with_padding_border::compute();
1048 #[cfg(feature = "grid")]
1049 grid_align_content_space_evenly::compute();
1050 #[cfg(feature = "grid")]
1051 grid_align_content_space_evenly_with_padding_border::compute();
1052 #[cfg(feature = "grid")]
1053 grid_align_content_start::compute();
1054 #[cfg(feature = "grid")]
1055 grid_align_content_start_with_padding_border::compute();
1056 #[cfg(feature = "grid")]
1057 grid_align_items_sized_center::compute();
1058 #[cfg(feature = "grid")]
1059 grid_align_items_sized_end::compute();
1060 #[cfg(feature = "grid")]
1061 grid_align_items_sized_start::compute();
1062 #[cfg(feature = "grid")]
1063 grid_align_items_sized_stretch::compute();
1064 #[cfg(feature = "grid")]
1065 grid_align_self_sized_all::compute();
1066 #[cfg(feature = "grid")]
1067 grid_aspect_ratio_absolute_aspect_ratio_overrides_height_of_full_inset::compute();
1068 #[cfg(feature = "grid")]
1069 grid_aspect_ratio_absolute_fill_height_from_inset::compute();
1070 #[cfg(feature = "grid")]
1071 grid_aspect_ratio_absolute_fill_width_from_inset::compute();
1072 #[cfg(feature = "grid")]
1073 grid_aspect_ratio_absolute_height_overrides_inset::compute();
1074 #[cfg(feature = "grid")]
1075 grid_aspect_ratio_absolute_width_overrides_inset::compute();
1076 #[cfg(feature = "grid")]
1077 grid_aspect_ratio_child_fill_content_height::compute();
1078 #[cfg(feature = "grid")]
1079 grid_aspect_ratio_child_fill_content_width::compute();
1080 #[cfg(feature = "grid")]
1081 grid_aspect_ratio_fill_child_height::compute();
1082 #[cfg(feature = "grid")]
1083 grid_aspect_ratio_fill_child_max_height::compute();
1084 #[cfg(feature = "grid")]
1085 grid_aspect_ratio_fill_child_max_width::compute();
1086 #[cfg(feature = "grid")]
1087 grid_aspect_ratio_fill_child_min_height::compute();
1088 #[cfg(feature = "grid")]
1089 grid_aspect_ratio_fill_child_min_width::compute();
1090 #[cfg(feature = "grid")]
1091 grid_aspect_ratio_fill_child_width::compute();
1092 #[cfg(feature = "grid")]
1093 grid_aspect_ratio_overriden_by_explicit_sizes::compute();
1094 #[cfg(feature = "grid")]
1095 grid_aspect_ratio_overriden_by_explicit_sizes_flex::compute();
1096 #[cfg(feature = "grid")]
1097 grid_auto_columns_fixed_width::compute();
1098 #[cfg(feature = "grid")]
1099 grid_auto_fill_fixed_size::compute();
1100 #[cfg(feature = "grid")]
1101 grid_auto_fill_with_empty_auto_track::compute();
1102 #[cfg(feature = "grid")]
1103 grid_auto_fit_with_empty_auto_track::compute();
1104 #[cfg(feature = "grid")]
1105 grid_auto_single_item::compute();
1106 #[cfg(feature = "grid")]
1107 grid_auto_single_item_fixed_width::compute();
1108 #[cfg(feature = "grid")]
1109 grid_auto_single_item_fixed_width_with_definite_width::compute();
1110 #[cfg(feature = "grid")]
1111 grid_basic::compute();
1112 #[cfg(feature = "grid")]
1113 grid_basic_implicit_tracks::compute();
1114 #[cfg(feature = "grid")]
1115 grid_basic_with_overflow::compute();
1116 #[cfg(feature = "grid")]
1117 grid_basic_with_padding::compute();
1118 #[cfg(feature = "grid")]
1119 grid_fit_content_percent_definite_argument::compute();
1120 #[cfg(feature = "grid")]
1121 grid_fit_content_percent_definite_max_content::compute();
1122 #[cfg(feature = "grid")]
1123 grid_fit_content_percent_definite_min_content::compute();
1124 #[cfg(feature = "grid")]
1125 grid_fit_content_percent_indefinite_argument::compute();
1126 #[cfg(feature = "grid")]
1127 grid_fit_content_percent_indefinite_max_content::compute();
1128 #[cfg(feature = "grid")]
1129 grid_fit_content_percent_indefinite_min_content::compute();
1130 #[cfg(feature = "grid")]
1131 grid_fit_content_points_argument::compute();
1132 #[cfg(feature = "grid")]
1133 grid_fit_content_points_max_content::compute();
1134 #[cfg(feature = "grid")]
1135 grid_fit_content_points_min_content::compute();
1136 #[cfg(feature = "grid")]
1137 grid_fr_auto_no_sized_items::compute();
1138 #[cfg(feature = "grid")]
1139 grid_fr_auto_single_item::compute();
1140 #[cfg(feature = "grid")]
1141 grid_fr_fixed_size_no_content::compute();
1142 #[cfg(feature = "grid")]
1143 grid_fr_fixed_size_single_item::compute();
1144 #[cfg(feature = "grid")]
1145 grid_gap::compute();
1146 #[cfg(feature = "grid")]
1147 grid_hidden::compute();
1148 #[cfg(feature = "grid")]
1149 grid_justify_content_center::compute();
1150 #[cfg(feature = "grid")]
1151 grid_justify_content_center_with_padding_border::compute();
1152 #[cfg(feature = "grid")]
1153 grid_justify_content_end::compute();
1154 #[cfg(feature = "grid")]
1155 grid_justify_content_end_with_padding_border::compute();
1156 #[cfg(feature = "grid")]
1157 grid_justify_content_space_around::compute();
1158 #[cfg(feature = "grid")]
1159 grid_justify_content_space_around_with_padding_border::compute();
1160 #[cfg(feature = "grid")]
1161 grid_justify_content_space_between::compute();
1162 #[cfg(feature = "grid")]
1163 grid_justify_content_space_between_with_padding_border::compute();
1164 #[cfg(feature = "grid")]
1165 grid_justify_content_space_evenly::compute();
1166 #[cfg(feature = "grid")]
1167 grid_justify_content_space_evenly_with_padding_border::compute();
1168 #[cfg(feature = "grid")]
1169 grid_justify_content_start::compute();
1170 #[cfg(feature = "grid")]
1171 grid_justify_content_start_with_padding_border::compute();
1172 #[cfg(feature = "grid")]
1173 grid_justify_items_sized_center::compute();
1174 #[cfg(feature = "grid")]
1175 grid_justify_items_sized_end::compute();
1176 #[cfg(feature = "grid")]
1177 grid_justify_items_sized_start::compute();
1178 #[cfg(feature = "grid")]
1179 grid_justify_items_sized_stretch::compute();
1180 #[cfg(feature = "grid")]
1181 grid_justify_self_sized_all::compute();
1182 #[cfg(feature = "grid")]
1183 grid_margins_auto_margins::compute();
1184 #[cfg(feature = "grid")]
1185 grid_margins_auto_margins_override_stretch::compute();
1186 #[cfg(feature = "grid")]
1187 grid_margins_fixed_center::compute();
1188 #[cfg(feature = "grid")]
1189 grid_margins_fixed_end::compute();
1190 #[cfg(feature = "grid")]
1191 grid_margins_fixed_start::compute();
1192 #[cfg(feature = "grid")]
1193 grid_margins_fixed_stretch::compute();
1194 #[cfg(feature = "grid")]
1195 grid_margins_percent_center::compute();
1196 #[cfg(feature = "grid")]
1197 grid_margins_percent_end::compute();
1198 #[cfg(feature = "grid")]
1199 grid_margins_percent_start::compute();
1200 #[cfg(feature = "grid")]
1201 grid_margins_percent_stretch::compute();
1202 #[cfg(feature = "grid")]
1203 grid_max_content_maximum_single_item::compute();
1204 #[cfg(feature = "grid")]
1205 grid_max_content_single_item::compute();
1206 #[cfg(feature = "grid")]
1207 grid_max_content_single_item_margin_auto::compute();
1208 #[cfg(feature = "grid")]
1209 grid_max_content_single_item_margin_fixed::compute();
1210 #[cfg(feature = "grid")]
1211 grid_max_content_single_item_margin_percent::compute();
1212 #[cfg(feature = "grid")]
1213 grid_max_content_single_item_span_2::compute();
1214 #[cfg(feature = "grid")]
1215 grid_max_content_single_item_span_2_gap_fixed::compute();
1216 #[cfg(feature = "grid")]
1217 grid_max_content_single_item_span_2_gap_percent_definite::compute();
1218 #[cfg(feature = "grid")]
1219 grid_max_content_single_item_span_2_gap_percent_indefinite::compute();
1220 #[cfg(feature = "grid")]
1221 grid_min_content_flex_column::compute();
1222 #[cfg(feature = "grid")]
1223 grid_min_content_flex_row::compute();
1224 #[cfg(feature = "grid")]
1225 grid_min_content_flex_single_item::compute();
1226 #[cfg(feature = "grid")]
1227 grid_min_content_flex_single_item_margin_auto::compute();
1228 #[cfg(feature = "grid")]
1229 grid_min_content_flex_single_item_margin_fixed::compute();
1230 #[cfg(feature = "grid")]
1231 grid_min_content_flex_single_item_margin_percent::compute();
1232 #[cfg(feature = "grid")]
1233 grid_min_content_maximum_single_item::compute();
1234 #[cfg(feature = "grid")]
1235 grid_min_content_single_item::compute();
1236 #[cfg(feature = "grid")]
1237 grid_min_max_column_auto::compute();
1238 #[cfg(feature = "grid")]
1239 grid_min_max_column_fixed_width_above_range::compute();
1240 #[cfg(feature = "grid")]
1241 grid_min_max_column_fixed_width_below_range::compute();
1242 #[cfg(feature = "grid")]
1243 grid_min_max_column_fixed_width_within_range::compute();
1244 #[cfg(feature = "grid")]
1245 grid_out_of_order_items::compute();
1246 #[cfg(feature = "grid")]
1247 grid_percent_items_nested_moderate::compute();
1248 #[cfg(feature = "grid")]
1249 grid_percent_items_nested_with_padding_margin::compute();
1250 #[cfg(feature = "grid")]
1251 grid_percent_items_width_and_margin::compute();
1252 #[cfg(feature = "grid")]
1253 grid_percent_items_width_and_padding::compute();
1254 #[cfg(feature = "grid")]
1255 grid_percent_tracks_definite_overflow::compute();
1256 #[cfg(feature = "grid")]
1257 grid_percent_tracks_definite_underflow::compute();
1258 #[cfg(feature = "grid")]
1259 grid_percent_tracks_indefinite_only::compute();
1260 #[cfg(feature = "grid")]
1261 grid_percent_tracks_indefinite_with_content_overflow::compute();
1262 #[cfg(feature = "grid")]
1263 grid_percent_tracks_indefinite_with_content_underflow::compute();
1264 #[cfg(feature = "grid")]
1265 grid_placement_auto_negative::compute();
1266 #[cfg(feature = "grid")]
1267 grid_placement_definite_in_secondary_axis_with_fully_definite_negative::compute();
1268 #[cfg(feature = "grid")]
1269 grid_relayout_vertical_text::compute();
1270 #[cfg(feature = "grid")]
1271 grid_size_child_fixed_tracks::compute();
1272 justify_content_column_center::compute();
1273 justify_content_column_flex_end::compute();
1274 justify_content_column_flex_start::compute();
1275 justify_content_column_max_height_and_margin::compute();
1276 justify_content_column_min_height_and_margin::compute();
1277 justify_content_column_min_height_and_margin_bottom::compute();
1278 justify_content_column_min_height_and_margin_top::compute();
1279 justify_content_column_space_around::compute();
1280 justify_content_column_space_between::compute();
1281 justify_content_column_space_evenly::compute();
1282 justify_content_min_max::compute();
1283 justify_content_min_width_with_padding_child_width_greater_than_parent::compute();
1284 justify_content_min_width_with_padding_child_width_lower_than_parent::compute();
1285 justify_content_overflow_min_max::compute();
1286 justify_content_row_center::compute();
1287 justify_content_row_flex_end::compute();
1288 justify_content_row_flex_start::compute();
1289 justify_content_row_max_width_and_margin::compute();
1290 justify_content_row_min_width_and_margin::compute();
1291 justify_content_row_space_around::compute();
1292 justify_content_row_space_between::compute();
1293 justify_content_row_space_evenly::compute();
1294 margin_and_flex_column::compute();
1295 margin_and_flex_row::compute();
1296 margin_and_stretch_column::compute();
1297 margin_and_stretch_row::compute();
1298 margin_auto_bottom::compute();
1299 margin_auto_bottom_and_top::compute();
1300 margin_auto_bottom_and_top_justify_center::compute();
1301 margin_auto_left::compute();
1302 margin_auto_left_and_right::compute();
1303 margin_auto_left_and_right_column::compute();
1304 margin_auto_left_and_right_column_and_center::compute();
1305 margin_auto_left_and_right_stretch::compute();
1306 margin_auto_left_child_bigger_than_parent::compute();
1307 margin_auto_left_fix_right_child_bigger_than_parent::compute();
1308 margin_auto_left_right_child_bigger_than_parent::compute();
1309 margin_auto_left_stretching_child::compute();
1310 margin_auto_mutiple_children_column::compute();
1311 margin_auto_mutiple_children_row::compute();
1312 margin_auto_right::compute();
1313 margin_auto_top::compute();
1314 margin_auto_top_and_bottom_stretch::compute();
1315 margin_auto_top_stretching_child::compute();
1316 margin_bottom::compute();
1317 margin_fix_left_auto_right_child_bigger_than_parent::compute();
1318 margin_left::compute();
1319 margin_right::compute();
1320 margin_should_not_be_part_of_max_height::compute();
1321 margin_should_not_be_part_of_max_width::compute();
1322 margin_top::compute();
1323 margin_with_sibling_column::compute();
1324 margin_with_sibling_row::compute();
1325 max_height::compute();
1326 max_height_overrides_height::compute();
1327 max_height_overrides_height_on_root::compute();
1328 max_width::compute();
1329 max_width_overrides_width::compute();
1330 max_width_overrides_width_on_root::compute();
1331 measure_child::compute();
1332 measure_child_absolute::compute();
1333 measure_child_constraint::compute();
1334 measure_child_constraint_padding_parent::compute();
1335 measure_child_with_flex_grow::compute();
1336 measure_child_with_flex_shrink::compute();
1337 measure_flex_basis_overrides_measure::compute();
1338 measure_height_overrides_measure::compute();
1339 measure_remeasure_child_after_growing::compute();
1340 measure_remeasure_child_after_shrinking::compute();
1341 measure_remeasure_child_after_stretching::compute();
1342 measure_root::compute();
1343 measure_stretch_overrides_measure::compute();
1344 measure_width_overrides_measure::compute();
1345 min_height::compute();
1346 min_height_larger_than_height::compute();
1347 min_height_overrides_height::compute();
1348 min_height_overrides_height_on_root::compute();
1349 min_height_overrides_max_height::compute();
1350 min_height_with_nested_fixed_height::compute();
1351 min_max_percent_different_width_height::compute();
1352 min_max_percent_no_width_height::compute();
1353 min_width::compute();
1354 min_width_larger_than_width::compute();
1355 min_width_overrides_max_width::compute();
1356 min_width_overrides_width::compute();
1357 min_width_overrides_width_on_root::compute();
1358 nested_overflowing_child::compute();
1359 nested_overflowing_child_in_constraint_parent::compute();
1360 only_shrinkable_item_with_flex_basis_zero::compute();
1361 overflow_cross_axis::compute();
1362 overflow_main_axis::compute();
1363 padding_align_end_child::compute();
1364 padding_center_child::compute();
1365 padding_container_match_child::compute();
1366 padding_flex_child::compute();
1367 padding_no_child::compute();
1368 padding_no_size::compute();
1369 padding_stretch_child::compute();
1370 parent_wrap_child_size_overflowing_parent::compute();
1371 percent_absolute_position::compute();
1372 percent_within_flex_grow::compute();
1373 percentage_absolute_position::compute();
1374 percentage_container_in_wrapping_container::compute();
1375 percentage_different_width_height::compute();
1376 percentage_different_width_height_column::compute();
1377 percentage_flex_basis::compute();
1378 percentage_flex_basis_cross::compute();
1379 percentage_flex_basis_cross_max_height::compute();
1380 percentage_flex_basis_cross_max_width::compute();
1381 percentage_flex_basis_cross_min_height::compute();
1382 percentage_flex_basis_cross_min_width::compute();
1383 percentage_flex_basis_main_max_height::compute();
1384 percentage_flex_basis_main_max_width::compute();
1385 percentage_flex_basis_main_min_width::compute();
1386 percentage_main_max_height::compute();
1387 percentage_margin_should_calculate_based_only_on_width::compute();
1388 percentage_moderate_complexity::compute();
1389 percentage_multiple_nested_with_padding_margin_and_percentage_values::compute();
1390 percentage_padding_should_calculate_based_only_on_width::compute();
1391 percentage_position_bottom_right::compute();
1392 percentage_position_left_top::compute();
1393 percentage_size_based_on_parent_inner_size::compute();
1394 percentage_size_of_flex_basis::compute();
1395 percentage_width_height::compute();
1396 percentage_width_height_undefined_parent_size::compute();
1397 position_root_with_rtl_should_position_withoutdirection::compute();
1398 relative_position_should_not_nudge_siblings::compute();
1399 rounding_flex_basis_flex_grow_row_prime_number_width::compute();
1400 rounding_flex_basis_flex_grow_row_width_of_100::compute();
1401 rounding_flex_basis_flex_shrink_row::compute();
1402 rounding_flex_basis_overrides_main_size::compute();
1403 rounding_fractial_input_1::compute();
1404 rounding_fractial_input_2::compute();
1405 rounding_fractial_input_3::compute();
1406 rounding_fractial_input_4::compute();
1407 rounding_inner_node_controversy_vertical::compute();
1408 rounding_total_fractial::compute();
1409 rounding_total_fractial_nested::compute();
1410 single_flex_child_after_absolute_child::compute();
1411 size_defined_by_child::compute();
1412 size_defined_by_child_with_border::compute();
1413 size_defined_by_child_with_padding::compute();
1414 size_defined_by_grand_child::compute();
1415 undefined_height_with_min_max::compute();
1416 undefined_width_with_min_max::compute();
1417 undefined_width_with_min_max_row::compute();
1418 width_smaller_then_content_with_flex_grow_large_size::compute();
1419 width_smaller_then_content_with_flex_grow_small_size::compute();
1420 width_smaller_then_content_with_flex_grow_unconstraint_size::compute();
1421 width_smaller_then_content_with_flex_grow_very_large_size::compute();
1422 wrap_child::compute();
1423 wrap_column::compute();
1424 wrap_grandchild::compute();
1425 wrap_nodes_with_content_sizing_margin_cross::compute();
1426 wrap_nodes_with_content_sizing_overflowing_margin::compute();
1427 wrap_reverse_column::compute();
1428 wrap_reverse_column_fixed_size::compute();
1429 wrap_reverse_row::compute();
1430 wrap_reverse_row_align_content_center::compute();
1431 wrap_reverse_row_align_content_flex_start::compute();
1432 wrap_reverse_row_align_content_space_around::compute();
1433 wrap_reverse_row_align_content_stretch::compute();
1434 wrap_reverse_row_single_line_different_size::compute();
1435 wrap_row::compute();
1436 wrap_row_align_items_center::compute();
1437 wrap_row_align_items_flex_end::compute();
1438 wrapped_column_max_height::compute();
1439 wrapped_column_max_height_flex::compute();
1440 wrapped_row_within_align_items_center::compute();
1441 wrapped_row_within_align_items_flex_end::compute();
1442 wrapped_row_within_align_items_flex_start::compute();
1443 })
1444 });
1445}
1446criterion_group!(benches, benchmark);
1447criterion_main!(benches);