Fix Generation of Tests from Fixtures
Summary:
https://github.com/facebook/yoga/pull/1116 added a change to the test generator "gentests.rb" to support a newer version of chromedriver, along with a change to the enum generator (not touched in this diff) to produce code consistent with the current tests, which seem to have been manually edited since last generation.
I had trouble running the test generator locally, because it relies on unversioned third-party dependencies, whose APIs change. Looking at source history, it seems like each time someone wants to run the script, they end up updating its syntax to match whatever versions they pull in.
This change adds a Gemfile and lock so that that the version of "watir" is locked, and so that we will also automatically pull in a consistent "chomedriver" version via the "webdrivers" gem. It includes the updates from the PR to be consistent with already output tests, and I have also updated the copyright header generation to no longer create lint warnings on newly generated tests (some of the previous ones were fixed manually it looks like).
The test generator would still produce bodies which would fail clang-format, and were manually edited (causing generation to emit new lint warnings), so I updated the generator to suppress clang-format in the body of the generated files.
Three tests, around the interaction of minimum dimensions and flexible children produce different results in Chrome now compared to when the tests were added, so running `gentests.rb` creates tests which break UTs. This doesn't seem like any sort of rounding, or device specific difference, so I have disabled these tests for now. While digging around, it does look like Chrome periodically will fix bugs in its own layout implementation which cause differences, like https://bugs.chromium.org/p/chromium/issues/detail?id=927066
Reviewed By: rozele, Andrey-Mishanin
Differential Revision: D39907416
fbshipit-source-id: f88714ff038b42f935901783452df25eabb6ebb1
2022-09-29 22:25:24 -07:00
|
|
|
/*
|
|
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
2016-10-23 10:27:32 -07:00
|
|
|
*
|
Fix Generation of Tests from Fixtures
Summary:
https://github.com/facebook/yoga/pull/1116 added a change to the test generator "gentests.rb" to support a newer version of chromedriver, along with a change to the enum generator (not touched in this diff) to produce code consistent with the current tests, which seem to have been manually edited since last generation.
I had trouble running the test generator locally, because it relies on unversioned third-party dependencies, whose APIs change. Looking at source history, it seems like each time someone wants to run the script, they end up updating its syntax to match whatever versions they pull in.
This change adds a Gemfile and lock so that that the version of "watir" is locked, and so that we will also automatically pull in a consistent "chomedriver" version via the "webdrivers" gem. It includes the updates from the PR to be consistent with already output tests, and I have also updated the copyright header generation to no longer create lint warnings on newly generated tests (some of the previous ones were fixed manually it looks like).
The test generator would still produce bodies which would fail clang-format, and were manually edited (causing generation to emit new lint warnings), so I updated the generator to suppress clang-format in the body of the generated files.
Three tests, around the interaction of minimum dimensions and flexible children produce different results in Chrome now compared to when the tests were added, so running `gentests.rb` creates tests which break UTs. This doesn't seem like any sort of rounding, or device specific difference, so I have disabled these tests for now. While digging around, it does look like Chrome periodically will fix bugs in its own layout implementation which cause differences, like https://bugs.chromium.org/p/chromium/issues/detail?id=927066
Reviewed By: rozele, Andrey-Mishanin
Differential Revision: D39907416
fbshipit-source-id: f88714ff038b42f935901783452df25eabb6ebb1
2022-09-29 22:25:24 -07:00
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
2016-10-23 10:27:32 -07:00
|
|
|
*/
|
Fix Generation of Tests from Fixtures
Summary:
https://github.com/facebook/yoga/pull/1116 added a change to the test generator "gentests.rb" to support a newer version of chromedriver, along with a change to the enum generator (not touched in this diff) to produce code consistent with the current tests, which seem to have been manually edited since last generation.
I had trouble running the test generator locally, because it relies on unversioned third-party dependencies, whose APIs change. Looking at source history, it seems like each time someone wants to run the script, they end up updating its syntax to match whatever versions they pull in.
This change adds a Gemfile and lock so that that the version of "watir" is locked, and so that we will also automatically pull in a consistent "chomedriver" version via the "webdrivers" gem. It includes the updates from the PR to be consistent with already output tests, and I have also updated the copyright header generation to no longer create lint warnings on newly generated tests (some of the previous ones were fixed manually it looks like).
The test generator would still produce bodies which would fail clang-format, and were manually edited (causing generation to emit new lint warnings), so I updated the generator to suppress clang-format in the body of the generated files.
Three tests, around the interaction of minimum dimensions and flexible children produce different results in Chrome now compared to when the tests were added, so running `gentests.rb` creates tests which break UTs. This doesn't seem like any sort of rounding, or device specific difference, so I have disabled these tests for now. While digging around, it does look like Chrome periodically will fix bugs in its own layout implementation which cause differences, like https://bugs.chromium.org/p/chromium/issues/detail?id=927066
Reviewed By: rozele, Andrey-Mishanin
Differential Revision: D39907416
fbshipit-source-id: f88714ff038b42f935901783452df25eabb6ebb1
2022-09-29 22:25:24 -07:00
|
|
|
|
2022-11-15 19:51:48 -08:00
|
|
|
// @generated by gentest/gentest.rb from gentest/fixtures/YGAbsolutePositionTest.html
|
2016-10-23 10:27:32 -07:00
|
|
|
|
|
|
|
using System;
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
2016-12-02 11:18:16 -08:00
|
|
|
namespace Facebook.Yoga
|
2016-10-23 10:27:32 -07:00
|
|
|
{
|
|
|
|
[TestFixture]
|
2016-12-03 04:40:21 -08:00
|
|
|
public class YGAbsolutePositionTest
|
2016-10-23 10:27:32 -07:00
|
|
|
{
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_width_height_start_top()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2016-12-02 05:47:43 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-08 07:58:31 -08:00
|
|
|
root_child0.Top = 10;
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root_child0.Width = 10;
|
|
|
|
root_child0.Height = 10;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.Insert(0, root_child0);
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(90f, root_child0.LayoutX);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_width_height_end_bottom()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2016-12-02 05:47:43 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-08 07:58:31 -08:00
|
|
|
root_child0.Bottom = 10;
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root_child0.Width = 10;
|
|
|
|
root_child0.Height = 10;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.Insert(0, root_child0);
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(80f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(90f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(80f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_row_width_height_end_bottom()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.FlexDirection = YogaFlexDirection.Row;
|
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Bottom = 10;
|
|
|
|
root_child0.Width = 10;
|
|
|
|
root_child0.Height = 10;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(80f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(90f, root_child0.LayoutX);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(80f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_start_top_end_bottom()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2016-12-02 05:47:43 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-08 07:58:31 -08:00
|
|
|
root_child0.Top = 10;
|
|
|
|
root_child0.Bottom = 10;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.Insert(0, root_child0);
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(0f, root_child0.LayoutWidth);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(80f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(100f, root_child0.LayoutX);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(0f, root_child0.LayoutWidth);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(80f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_width_height_start_top_end_bottom()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2016-12-02 05:47:43 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-08 07:58:31 -08:00
|
|
|
root_child0.Top = 10;
|
|
|
|
root_child0.Bottom = 10;
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root_child0.Width = 10;
|
|
|
|
root_child0.Height = 10;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.Insert(0, root_child0);
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2022-12-26 16:43:31 -08:00
|
|
|
Assert.AreEqual(90f, root_child0.LayoutX);
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_do_not_clamp_height_of_absolute_node_to_height_of_its_overflow_hidden_parent()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2016-12-02 05:47:43 -08:00
|
|
|
root.FlexDirection = YogaFlexDirection.Row;
|
|
|
|
root.Overflow = YogaOverflow.Hidden;
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root.Width = 50;
|
|
|
|
root.Height = 50;
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2016-12-02 05:47:43 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-08 07:58:31 -08:00
|
|
|
root_child0.Top = 0;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.Insert(0, root_child0);
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0_child0 = new YogaNode(config);
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root_child0_child0.Width = 100;
|
|
|
|
root_child0_child0.Height = 100;
|
2016-10-23 10:27:32 -07:00
|
|
|
root_child0.Insert(0, root_child0_child0);
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root_child0_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0_child0.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root_child0_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root_child0_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
2016-10-23 10:27:32 -07:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(-50f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(0f, root_child0_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0_child0.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root_child0_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root_child0_child0.LayoutHeight);
|
2016-10-23 10:27:32 -07:00
|
|
|
}
|
|
|
|
|
2016-11-09 11:45:18 -08:00
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_within_border()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-08 07:58:31 -08:00
|
|
|
root.MarginLeft = 10;
|
|
|
|
root.MarginTop = 10;
|
|
|
|
root.MarginRight = 10;
|
|
|
|
root.MarginBottom = 10;
|
|
|
|
root.PaddingLeft = 10;
|
|
|
|
root.PaddingTop = 10;
|
|
|
|
root.PaddingRight = 10;
|
|
|
|
root.PaddingBottom = 10;
|
|
|
|
root.BorderLeftWidth = 10;
|
|
|
|
root.BorderTopWidth = 10;
|
|
|
|
root.BorderRightWidth = 10;
|
|
|
|
root.BorderBottomWidth = 10;
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
2016-11-09 11:45:18 -08:00
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2016-12-02 05:47:43 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-08 07:58:31 -08:00
|
|
|
root_child0.Left = 0;
|
|
|
|
root_child0.Top = 0;
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root_child0.Width = 50;
|
|
|
|
root_child0.Height = 50;
|
2016-11-09 11:45:18 -08:00
|
|
|
root.Insert(0, root_child0);
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child1 = new YogaNode(config);
|
2016-12-02 05:47:43 -08:00
|
|
|
root_child1.PositionType = YogaPositionType.Absolute;
|
2017-01-08 07:58:31 -08:00
|
|
|
root_child1.Right = 0;
|
|
|
|
root_child1.Bottom = 0;
|
Add feature to use percentage as value unit
Summary:
Adds the feature to use percentage as a value unit.
You can use the function ```YGPx(float)``` and ```YGPercent(float)``` for convenience.
I did some benchmarks:
```
Without Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.146683 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.490101 ms
Huge nested layout: median: 23.000000 ms, stddev: 0.928291 ms
Stack with flex: median: 0.000000 ms, stddev: 0.170587 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.143384 ms
Nested flex: median: 0.000000 ms, stddev: 0.477791 ms
Huge nested layout: median: 22.000000 ms, stddev: 2.129779 ms
With Percentage Feature - Release x86:
Stack with flex: median: 0.000000 ms, stddev: 0.132951 ms
Align stretch in undefined axis: median: 0.000000 ms, stddev: 0.136525 ms
Nested flex: median: 0.000000 ms, stddev: 0.489570 ms
Huge nested layout: median: 21.000000 ms, stddev: 1.390476 ms
Closes https://github.com/facebook/yoga/pull/258
Reviewed By: dshahidehpour
Differential Revision: D4361945
Pulled By: emilsjolander
fbshipit-source-id: a8f5bc63ad352eb9410d792729e56664468cd76a
2017-01-02 05:20:37 -08:00
|
|
|
root_child1.Width = 50;
|
|
|
|
root_child1.Height = 50;
|
2016-11-09 11:45:18 -08:00
|
|
|
root.Insert(1, root_child1);
|
2017-05-22 02:56:19 -07:00
|
|
|
|
|
|
|
YogaNode root_child2 = new YogaNode(config);
|
|
|
|
root_child2.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child2.Left = 0;
|
|
|
|
root_child2.Top = 0;
|
|
|
|
root_child2.MarginLeft = 10;
|
|
|
|
root_child2.MarginTop = 10;
|
|
|
|
root_child2.MarginRight = 10;
|
|
|
|
root_child2.MarginBottom = 10;
|
|
|
|
root_child2.Width = 50;
|
|
|
|
root_child2.Height = 50;
|
|
|
|
root.Insert(2, root_child2);
|
|
|
|
|
|
|
|
YogaNode root_child3 = new YogaNode(config);
|
|
|
|
root_child3.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child3.Right = 0;
|
|
|
|
root_child3.Bottom = 0;
|
|
|
|
root_child3.MarginLeft = 10;
|
|
|
|
root_child3.MarginTop = 10;
|
|
|
|
root_child3.MarginRight = 10;
|
|
|
|
root_child3.MarginBottom = 10;
|
|
|
|
root_child3.Width = 50;
|
|
|
|
root_child3.Height = 50;
|
|
|
|
root.Insert(3, root_child3);
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
2016-11-09 11:45:18 -08:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root.LayoutX);
|
|
|
|
Assert.AreEqual(10f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-11-09 11:45:18 -08:00
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutHeight);
|
2016-11-09 11:45:18 -08:00
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(40f, root_child1.LayoutX);
|
|
|
|
Assert.AreEqual(40f, root_child1.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root_child1.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child1.LayoutHeight);
|
2016-11-09 11:45:18 -08:00
|
|
|
|
2017-05-22 02:56:19 -07:00
|
|
|
Assert.AreEqual(20f, root_child2.LayoutX);
|
|
|
|
Assert.AreEqual(20f, root_child2.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root_child2.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child2.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(30f, root_child3.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child3.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root_child3.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child3.LayoutHeight);
|
|
|
|
|
2016-12-02 05:47:43 -08:00
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
2016-11-09 11:45:18 -08:00
|
|
|
root.CalculateLayout();
|
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root.LayoutX);
|
|
|
|
Assert.AreEqual(10f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
2016-11-09 11:45:18 -08:00
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(10f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutHeight);
|
2016-11-09 11:45:18 -08:00
|
|
|
|
2016-11-23 11:12:51 -08:00
|
|
|
Assert.AreEqual(40f, root_child1.LayoutX);
|
|
|
|
Assert.AreEqual(40f, root_child1.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root_child1.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child1.LayoutHeight);
|
2017-05-22 02:56:19 -07:00
|
|
|
|
|
|
|
Assert.AreEqual(20f, root_child2.LayoutX);
|
|
|
|
Assert.AreEqual(20f, root_child2.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root_child2.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child2.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(30f, root_child3.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child3.LayoutY);
|
|
|
|
Assert.AreEqual(50f, root_child3.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child3.LayoutHeight);
|
2016-11-09 11:45:18 -08:00
|
|
|
}
|
|
|
|
|
2017-01-26 13:36:35 -08:00
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_align_items_and_justify_content_center()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root.JustifyContent = YogaJustify.Center;
|
|
|
|
root.AlignItems = YogaAlign.Center;
|
|
|
|
root.FlexGrow = 1;
|
|
|
|
root.Width = 110;
|
|
|
|
root.Height = 100;
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Width = 60;
|
|
|
|
root_child0.Height = 40;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_align_items_and_justify_content_flex_end()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root.JustifyContent = YogaJustify.FlexEnd;
|
|
|
|
root.AlignItems = YogaAlign.FlexEnd;
|
|
|
|
root.FlexGrow = 1;
|
|
|
|
root.Width = 110;
|
|
|
|
root.Height = 100;
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Width = 60;
|
|
|
|
root_child0.Height = 40;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_justify_content_center()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root.JustifyContent = YogaJustify.Center;
|
|
|
|
root.FlexGrow = 1;
|
|
|
|
root.Width = 110;
|
|
|
|
root.Height = 100;
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Width = 60;
|
|
|
|
root_child0.Height = 40;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_align_items_center()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root.AlignItems = YogaAlign.Center;
|
|
|
|
root.FlexGrow = 1;
|
|
|
|
root.Width = 110;
|
|
|
|
root.Height = 100;
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Width = 60;
|
|
|
|
root_child0.Height = 40;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_align_items_center_on_child_only()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root.FlexGrow = 1;
|
|
|
|
root.Width = 110;
|
|
|
|
root.Height = 100;
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.AlignSelf = YogaAlign.Center;
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Width = 60;
|
|
|
|
root_child0.Height = 40;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_align_items_and_justify_content_center_and_top_position()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root.JustifyContent = YogaJustify.Center;
|
|
|
|
root.AlignItems = YogaAlign.Center;
|
|
|
|
root.FlexGrow = 1;
|
|
|
|
root.Width = 110;
|
|
|
|
root.Height = 100;
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-26 13:36:39 -08:00
|
|
|
root_child0.Top = 10;
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.Width = 60;
|
|
|
|
root_child0.Height = 40;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_align_items_and_justify_content_center_and_bottom_position()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root.JustifyContent = YogaJustify.Center;
|
|
|
|
root.AlignItems = YogaAlign.Center;
|
|
|
|
root.FlexGrow = 1;
|
|
|
|
root.Width = 110;
|
|
|
|
root.Height = 100;
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-26 13:36:39 -08:00
|
|
|
root_child0.Bottom = 10;
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.Width = 60;
|
|
|
|
root_child0.Height = 40;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(25f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_align_items_and_justify_content_center_and_left_position()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root.JustifyContent = YogaJustify.Center;
|
|
|
|
root.AlignItems = YogaAlign.Center;
|
|
|
|
root.FlexGrow = 1;
|
|
|
|
root.Width = 110;
|
|
|
|
root.Height = 100;
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-26 13:36:39 -08:00
|
|
|
root_child0.Left = 5;
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.Width = 60;
|
|
|
|
root_child0.Height = 40;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(5f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(5f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_align_items_and_justify_content_center_and_right_position()
|
|
|
|
{
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root.JustifyContent = YogaJustify.Center;
|
|
|
|
root.AlignItems = YogaAlign.Center;
|
|
|
|
root.FlexGrow = 1;
|
|
|
|
root.Width = 110;
|
|
|
|
root.Height = 100;
|
|
|
|
|
2017-03-01 09:19:55 -08:00
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
2017-01-26 13:36:39 -08:00
|
|
|
root_child0.Right = 5;
|
2017-01-26 13:36:35 -08:00
|
|
|
root_child0.Width = 60;
|
|
|
|
root_child0.Height = 40;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(45f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(110f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(45f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(60f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(40f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
2017-04-11 13:00:02 -07:00
|
|
|
[Test]
|
|
|
|
public void Test_position_root_with_rtl_should_position_withoutdirection()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.Left = 72;
|
|
|
|
root.Width = 52;
|
|
|
|
root.Height = 52;
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(72f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(52f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(52f, root.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(72f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(52f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(52f, root.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
2017-05-22 02:56:19 -07:00
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_percentage_bottom_based_on_parent_height()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 200;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Top = 50.Percent();
|
|
|
|
root_child0.Width = 10;
|
|
|
|
root_child0.Height = 10;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
|
|
|
|
YogaNode root_child1 = new YogaNode(config);
|
|
|
|
root_child1.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child1.Bottom = 50.Percent();
|
|
|
|
root_child1.Width = 10;
|
|
|
|
root_child1.Height = 10;
|
|
|
|
root.Insert(1, root_child1);
|
|
|
|
|
|
|
|
YogaNode root_child2 = new YogaNode(config);
|
|
|
|
root_child2.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child2.Top = 10.Percent();
|
|
|
|
root_child2.Bottom = 10.Percent();
|
|
|
|
root_child2.Width = 10;
|
|
|
|
root.Insert(2, root_child2);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(200f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(100f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child1.LayoutX);
|
|
|
|
Assert.AreEqual(90f, root_child1.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child1.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child1.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child2.LayoutX);
|
|
|
|
Assert.AreEqual(20f, root_child2.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child2.LayoutWidth);
|
|
|
|
Assert.AreEqual(160f, root_child2.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(200f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(90f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(100f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(90f, root_child1.LayoutX);
|
|
|
|
Assert.AreEqual(90f, root_child1.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child1.LayoutWidth);
|
|
|
|
Assert.AreEqual(10f, root_child1.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(90f, root_child2.LayoutX);
|
|
|
|
Assert.AreEqual(20f, root_child2.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child2.LayoutWidth);
|
|
|
|
Assert.AreEqual(160f, root_child2.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
2017-05-29 07:50:43 -07:00
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_in_wrap_reverse_column_container()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.Wrap = YogaWrap.WrapReverse;
|
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Width = 20;
|
|
|
|
root_child0.Height = 20;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(80f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_in_wrap_reverse_row_container()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.FlexDirection = YogaFlexDirection.Row;
|
|
|
|
root.Wrap = YogaWrap.WrapReverse;
|
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Width = 20;
|
|
|
|
root_child0.Height = 20;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(80f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(80f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(80f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
2017-06-01 05:30:17 -07:00
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_in_wrap_reverse_column_container_flex_end()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.Wrap = YogaWrap.WrapReverse;
|
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.AlignSelf = YogaAlign.FlexEnd;
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Width = 20;
|
|
|
|
root_child0.Height = 20;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(80f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_in_wrap_reverse_row_container_flex_end()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.FlexDirection = YogaFlexDirection.Row;
|
|
|
|
root.Wrap = YogaWrap.WrapReverse;
|
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 100;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.AlignSelf = YogaAlign.FlexEnd;
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Width = 20;
|
|
|
|
root_child0.Height = 20;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(80f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(20f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
2022-12-26 16:43:31 -08:00
|
|
|
[Test]
|
|
|
|
public void Test_absolute_layout_percentage_height()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.Width = 200;
|
|
|
|
root.Height = 100;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Top = 10;
|
|
|
|
root_child0.Width = 10;
|
|
|
|
root_child0.Height = 50.Percent();
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(200f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(200f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(100f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(190f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(10f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(50f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_child_with_cross_margin()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.FlexDirection = YogaFlexDirection.Row;
|
|
|
|
root.JustifyContent = YogaJustify.SpaceBetween;
|
|
|
|
root.MinWidth = 311;
|
|
|
|
root.MaxWidth = 311;
|
|
|
|
root.MaxHeight = 3.68935e+19;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.FlexDirection = YogaFlexDirection.Row;
|
|
|
|
root_child0.AlignContent = YogaAlign.Stretch;
|
|
|
|
root_child0.Width = 28;
|
|
|
|
root_child0.Height = 27;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
|
|
|
|
YogaNode root_child1 = new YogaNode(config);
|
|
|
|
root_child1.FlexDirection = YogaFlexDirection.Row;
|
|
|
|
root_child1.AlignContent = YogaAlign.Stretch;
|
|
|
|
root_child1.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child1.FlexShrink = 1;
|
|
|
|
root_child1.MarginTop = 4;
|
|
|
|
root_child1.Width = 100.Percent();
|
|
|
|
root_child1.Height = 15;
|
|
|
|
root.Insert(1, root_child1);
|
|
|
|
|
|
|
|
YogaNode root_child2 = new YogaNode(config);
|
|
|
|
root_child2.FlexDirection = YogaFlexDirection.Row;
|
|
|
|
root_child2.AlignContent = YogaAlign.Stretch;
|
|
|
|
root_child2.Width = 25;
|
|
|
|
root_child2.Height = 27;
|
|
|
|
root.Insert(2, root_child2);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(311f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(27f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(28f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(27f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child1.LayoutX);
|
|
|
|
Assert.AreEqual(4f, root_child1.LayoutY);
|
|
|
|
Assert.AreEqual(311f, root_child1.LayoutWidth);
|
|
|
|
Assert.AreEqual(15f, root_child1.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(286f, root_child2.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child2.LayoutY);
|
|
|
|
Assert.AreEqual(25f, root_child2.LayoutWidth);
|
|
|
|
Assert.AreEqual(27f, root_child2.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(311f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(27f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(283f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(28f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(27f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child1.LayoutX);
|
|
|
|
Assert.AreEqual(4f, root_child1.LayoutY);
|
|
|
|
Assert.AreEqual(311f, root_child1.LayoutWidth);
|
|
|
|
Assert.AreEqual(15f, root_child1.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child2.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child2.LayoutY);
|
|
|
|
Assert.AreEqual(25f, root_child2.LayoutWidth);
|
|
|
|
Assert.AreEqual(27f, root_child2.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_child_with_main_margin()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.FlexDirection = YogaFlexDirection.Row;
|
|
|
|
root.Width = 20;
|
|
|
|
root.Height = 37;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.MarginLeft = 7;
|
|
|
|
root_child0.Width = 9;
|
|
|
|
root_child0.Height = 9;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(37f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(7f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(9f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(9f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(20f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(37f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(11f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(9f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(9f, root_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Test_absolute_child_with_max_height()
|
|
|
|
{
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
|
|
|
|
|
|
YogaNode root = new YogaNode(config);
|
|
|
|
root.Width = 100;
|
|
|
|
root.Height = 200;
|
|
|
|
|
|
|
|
YogaNode root_child0 = new YogaNode(config);
|
|
|
|
root_child0.PositionType = YogaPositionType.Absolute;
|
|
|
|
root_child0.Bottom = 20;
|
|
|
|
root_child0.MaxHeight = 100;
|
|
|
|
root.Insert(0, root_child0);
|
|
|
|
|
|
|
|
YogaNode root_child0_child0 = new YogaNode(config);
|
|
|
|
root_child0_child0.Width = 100;
|
|
|
|
root_child0_child0.Height = 30;
|
|
|
|
root_child0.Insert(0, root_child0_child0);
|
|
|
|
root.StyleDirection = YogaDirection.LTR;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(200f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(150f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0_child0.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root_child0_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(30f, root_child0_child0.LayoutHeight);
|
|
|
|
|
|
|
|
root.StyleDirection = YogaDirection.RTL;
|
|
|
|
root.CalculateLayout();
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root.LayoutWidth);
|
|
|
|
Assert.AreEqual(200f, root.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0.LayoutX);
|
|
|
|
Assert.AreEqual(150f, root_child0.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(30f, root_child0.LayoutHeight);
|
|
|
|
|
|
|
|
Assert.AreEqual(0f, root_child0_child0.LayoutX);
|
|
|
|
Assert.AreEqual(0f, root_child0_child0.LayoutY);
|
|
|
|
Assert.AreEqual(100f, root_child0_child0.LayoutWidth);
|
|
|
|
Assert.AreEqual(30f, root_child0_child0.LayoutHeight);
|
|
|
|
}
|
|
|
|
|
2016-10-23 10:27:32 -07:00
|
|
|
}
|
|
|
|
}
|