diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutAbsolutePositionTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutAbsolutePositionTest.cs new file mode 100644 index 00000000..c9ae2bb6 --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutAbsolutePositionTest.cs @@ -0,0 +1,266 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutAbsolutePositionTest + { + [Test] + public void Test_absolute_layout_width_height_start_top() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.PositionType = CSSPositionType.Absolute; + root_child0.SetPosition(CSSEdge.Start, 10); + root_child0.SetPosition(CSSEdge.Top, 10); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(80, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_absolute_layout_width_height_end_bottom() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.PositionType = CSSPositionType.Absolute; + root_child0.SetPosition(CSSEdge.End, 10); + root_child0.SetPosition(CSSEdge.Bottom, 10); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(80, root_child0.LayoutX); + Assert.AreEqual(80, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(80, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_absolute_layout_start_top_end_bottom() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.PositionType = CSSPositionType.Absolute; + root_child0.SetPosition(CSSEdge.Start, 10); + root_child0.SetPosition(CSSEdge.Top, 10); + root_child0.SetPosition(CSSEdge.End, 10); + root_child0.SetPosition(CSSEdge.Bottom, 10); + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(80, root_child0.LayoutWidth); + Assert.AreEqual(80, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(80, root_child0.LayoutWidth); + Assert.AreEqual(80, root_child0.LayoutHeight); + } + + [Test] + public void Test_absolute_layout_width_height_start_top_end_bottom() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.PositionType = CSSPositionType.Absolute; + root_child0.SetPosition(CSSEdge.Start, 10); + root_child0.SetPosition(CSSEdge.Top, 10); + root_child0.SetPosition(CSSEdge.End, 10); + root_child0.SetPosition(CSSEdge.Bottom, 10); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(80, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_do_not_clamp_height_of_absolute_node_to_height_of_its_overflow_hidden_parent() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.Overflow = CSSOverflow.Hidden; + root.StyleWidth = 50; + root.StyleHeight = 50; + + CSSNode root_child0 = new CSSNode(); + root_child0.PositionType = CSSPositionType.Absolute; + root.Insert(0, root_child0); + + CSSNode root_child0_child0 = new CSSNode(); + root_child0_child0.StyleWidth = 100; + root_child0_child0.StyleHeight = 100; + root_child0.Insert(0, root_child0_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(50, root.LayoutWidth); + Assert.AreEqual(50, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child0_child0.LayoutX); + Assert.AreEqual(0, root_child0_child0.LayoutY); + Assert.AreEqual(100, root_child0_child0.LayoutWidth); + Assert.AreEqual(100, root_child0_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(50, root.LayoutWidth); + Assert.AreEqual(50, root.LayoutHeight); + + Assert.AreEqual(-50, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child0_child0.LayoutX); + Assert.AreEqual(0, root_child0_child0.LayoutY); + Assert.AreEqual(100, root_child0_child0.LayoutWidth); + Assert.AreEqual(100, root_child0_child0.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutAlignContentTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutAlignContentTest.cs new file mode 100644 index 00000000..4ceef498 --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutAlignContentTest.cs @@ -0,0 +1,450 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutAlignContentTest + { + [Test] + public void Test_align_content_flex_start() + { + CSSNode root = new CSSNode(); + root.Wrap = CSSWrap.Wrap; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 50; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 50; + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 50; + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + + CSSNode root_child3 = new CSSNode(); + root_child3.StyleWidth = 50; + root_child3.StyleHeight = 10; + root.Insert(3, root_child3); + + CSSNode root_child4 = new CSSNode(); + root_child4.StyleWidth = 50; + root_child4.StyleHeight = 10; + root.Insert(4, root_child4); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + Assert.AreEqual(0, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(50, root_child3.LayoutWidth); + Assert.AreEqual(10, root_child3.LayoutHeight); + + Assert.AreEqual(0, root_child4.LayoutX); + Assert.AreEqual(40, root_child4.LayoutY); + Assert.AreEqual(50, root_child4.LayoutWidth); + Assert.AreEqual(10, root_child4.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(50, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(50, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(50, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + Assert.AreEqual(50, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(50, root_child3.LayoutWidth); + Assert.AreEqual(10, root_child3.LayoutHeight); + + Assert.AreEqual(50, root_child4.LayoutX); + Assert.AreEqual(40, root_child4.LayoutY); + Assert.AreEqual(50, root_child4.LayoutWidth); + Assert.AreEqual(10, root_child4.LayoutHeight); + } + + [Test] + public void Test_align_content_flex_end() + { + CSSNode root = new CSSNode(); + root.AlignContent = CSSAlign.FlexEnd; + root.Wrap = CSSWrap.Wrap; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 50; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 50; + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 50; + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + + CSSNode root_child3 = new CSSNode(); + root_child3.StyleWidth = 50; + root_child3.StyleHeight = 10; + root.Insert(3, root_child3); + + CSSNode root_child4 = new CSSNode(); + root_child4.StyleWidth = 50; + root_child4.StyleHeight = 10; + root.Insert(4, root_child4); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + Assert.AreEqual(0, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(50, root_child3.LayoutWidth); + Assert.AreEqual(10, root_child3.LayoutHeight); + + Assert.AreEqual(0, root_child4.LayoutX); + Assert.AreEqual(40, root_child4.LayoutY); + Assert.AreEqual(50, root_child4.LayoutWidth); + Assert.AreEqual(10, root_child4.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(50, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(50, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(50, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + Assert.AreEqual(50, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(50, root_child3.LayoutWidth); + Assert.AreEqual(10, root_child3.LayoutHeight); + + Assert.AreEqual(50, root_child4.LayoutX); + Assert.AreEqual(40, root_child4.LayoutY); + Assert.AreEqual(50, root_child4.LayoutWidth); + Assert.AreEqual(10, root_child4.LayoutHeight); + } + + [Test] + public void Test_align_content_center() + { + CSSNode root = new CSSNode(); + root.AlignContent = CSSAlign.Center; + root.Wrap = CSSWrap.Wrap; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 50; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 50; + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 50; + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + + CSSNode root_child3 = new CSSNode(); + root_child3.StyleWidth = 50; + root_child3.StyleHeight = 10; + root.Insert(3, root_child3); + + CSSNode root_child4 = new CSSNode(); + root_child4.StyleWidth = 50; + root_child4.StyleHeight = 10; + root.Insert(4, root_child4); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + Assert.AreEqual(0, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(50, root_child3.LayoutWidth); + Assert.AreEqual(10, root_child3.LayoutHeight); + + Assert.AreEqual(0, root_child4.LayoutX); + Assert.AreEqual(40, root_child4.LayoutY); + Assert.AreEqual(50, root_child4.LayoutWidth); + Assert.AreEqual(10, root_child4.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(50, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(50, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(50, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + Assert.AreEqual(50, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(50, root_child3.LayoutWidth); + Assert.AreEqual(10, root_child3.LayoutHeight); + + Assert.AreEqual(50, root_child4.LayoutX); + Assert.AreEqual(40, root_child4.LayoutY); + Assert.AreEqual(50, root_child4.LayoutWidth); + Assert.AreEqual(10, root_child4.LayoutHeight); + } + + [Test] + public void Test_align_content_stretch() + { + CSSNode root = new CSSNode(); + root.AlignContent = CSSAlign.Stretch; + root.Wrap = CSSWrap.Wrap; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 50; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 50; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 50; + root.Insert(2, root_child2); + + CSSNode root_child3 = new CSSNode(); + root_child3.StyleWidth = 50; + root.Insert(3, root_child3); + + CSSNode root_child4 = new CSSNode(); + root_child4.StyleWidth = 50; + root.Insert(4, root_child4); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(0, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(0, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(0, root_child2.LayoutHeight); + + Assert.AreEqual(0, root_child3.LayoutX); + Assert.AreEqual(0, root_child3.LayoutY); + Assert.AreEqual(50, root_child3.LayoutWidth); + Assert.AreEqual(0, root_child3.LayoutHeight); + + Assert.AreEqual(0, root_child4.LayoutX); + Assert.AreEqual(0, root_child4.LayoutY); + Assert.AreEqual(50, root_child4.LayoutWidth); + Assert.AreEqual(0, root_child4.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(50, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(0, root_child0.LayoutHeight); + + Assert.AreEqual(50, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(0, root_child1.LayoutHeight); + + Assert.AreEqual(50, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(0, root_child2.LayoutHeight); + + Assert.AreEqual(50, root_child3.LayoutX); + Assert.AreEqual(0, root_child3.LayoutY); + Assert.AreEqual(50, root_child3.LayoutWidth); + Assert.AreEqual(0, root_child3.LayoutHeight); + + Assert.AreEqual(50, root_child4.LayoutX); + Assert.AreEqual(0, root_child4.LayoutY); + Assert.AreEqual(50, root_child4.LayoutWidth); + Assert.AreEqual(0, root_child4.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutAlignItemsTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutAlignItemsTest.cs new file mode 100644 index 00000000..17bc2355 --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutAlignItemsTest.cs @@ -0,0 +1,194 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutAlignItemsTest + { + [Test] + public void Test_align_items_stretch() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_align_items_center() + { + CSSNode root = new CSSNode(); + root.AlignItems = CSSAlign.Center; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(45, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(45, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_align_items_flex_start() + { + CSSNode root = new CSSNode(); + root.AlignItems = CSSAlign.FlexStart; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(90, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_align_items_flex_end() + { + CSSNode root = new CSSNode(); + root.AlignItems = CSSAlign.FlexEnd; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(90, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutAlignSelfTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutAlignSelfTest.cs new file mode 100644 index 00000000..ba34aaa8 --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutAlignSelfTest.cs @@ -0,0 +1,197 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutAlignSelfTest + { + [Test] + public void Test_align_self_center() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.AlignSelf = CSSAlign.Center; + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(45, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(45, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_align_self_flex_end() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.AlignSelf = CSSAlign.FlexEnd; + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(90, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_align_self_flex_start() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.AlignSelf = CSSAlign.FlexStart; + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(90, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_align_self_flex_end_override_flex_start() + { + CSSNode root = new CSSNode(); + root.AlignItems = CSSAlign.FlexStart; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.AlignSelf = CSSAlign.FlexEnd; + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(90, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutBorderTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutBorderTest.cs new file mode 100644 index 00000000..2fb8edea --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutBorderTest.cs @@ -0,0 +1,234 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutBorderTest + { + [Test] + public void Test_border_no_size() + { + CSSNode root = new CSSNode(); + root.SetBorder(CSSEdge.Left, 10); + root.SetBorder(CSSEdge.Top, 10); + root.SetBorder(CSSEdge.Right, 10); + root.SetBorder(CSSEdge.Bottom, 10); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(20, root.LayoutWidth); + Assert.AreEqual(20, root.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(20, root.LayoutWidth); + Assert.AreEqual(20, root.LayoutHeight); + } + + [Test] + public void Test_border_container_match_child() + { + CSSNode root = new CSSNode(); + root.SetBorder(CSSEdge.Left, 10); + root.SetBorder(CSSEdge.Top, 10); + root.SetBorder(CSSEdge.Right, 10); + root.SetBorder(CSSEdge.Bottom, 10); + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(30, root.LayoutWidth); + Assert.AreEqual(30, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(30, root.LayoutWidth); + Assert.AreEqual(30, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_border_flex_child() + { + CSSNode root = new CSSNode(); + root.SetBorder(CSSEdge.Left, 10); + root.SetBorder(CSSEdge.Top, 10); + root.SetBorder(CSSEdge.Right, 10); + root.SetBorder(CSSEdge.Bottom, 10); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(80, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(80, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(80, root_child0.LayoutHeight); + } + + [Test] + public void Test_border_stretch_child() + { + CSSNode root = new CSSNode(); + root.SetBorder(CSSEdge.Left, 10); + root.SetBorder(CSSEdge.Top, 10); + root.SetBorder(CSSEdge.Right, 10); + root.SetBorder(CSSEdge.Bottom, 10); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(80, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(80, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_border_center_child() + { + CSSNode root = new CSSNode(); + root.JustifyContent = CSSJustify.Center; + root.AlignItems = CSSAlign.Center; + root.SetBorder(CSSEdge.Start, 10); + root.SetBorder(CSSEdge.End, 20); + root.SetBorder(CSSEdge.Bottom, 20); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(40, root_child0.LayoutX); + Assert.AreEqual(35, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(50, root_child0.LayoutX); + Assert.AreEqual(35, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutFlexDirectionTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutFlexDirectionTest.cs new file mode 100644 index 00000000..6b4a4dc1 --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutFlexDirectionTest.cs @@ -0,0 +1,452 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutFlexDirectionTest + { + [Test] + public void Test_flex_direction_column_no_height() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(30, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(100, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(30, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(100, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + } + + [Test] + public void Test_flex_direction_row_no_width() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(30, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(10, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + Assert.AreEqual(20, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(100, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(30, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(20, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(10, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(100, root_child2.LayoutHeight); + } + + [Test] + public void Test_flex_direction_column() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(100, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(20, root_child2.LayoutY); + Assert.AreEqual(100, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + } + + [Test] + public void Test_flex_direction_row() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(10, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + Assert.AreEqual(20, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(100, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(90, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(80, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + Assert.AreEqual(70, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(100, root_child2.LayoutHeight); + } + + [Test] + public void Test_flex_direction_column_reverse() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.ColumnReverse; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(90, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(80, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(70, root_child2.LayoutY); + Assert.AreEqual(100, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(90, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(80, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(70, root_child2.LayoutY); + Assert.AreEqual(100, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + } + + [Test] + public void Test_flex_direction_row_reverse() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.RowReverse; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(90, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(80, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + Assert.AreEqual(70, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(100, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(10, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + Assert.AreEqual(20, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(100, root_child2.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutFlexTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutFlexTest.cs new file mode 100644 index 00000000..90c99330 --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutFlexTest.cs @@ -0,0 +1,403 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutFlexTest + { + [Test] + public void Test_flex_basis_flex_grow_column() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.FlexBasis = 50; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexGrow = 1; + root.Insert(1, root_child1); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(75, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(75, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(25, root_child1.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(75, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(75, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(25, root_child1.LayoutHeight); + } + + [Test] + public void Test_flex_basis_flex_grow_row() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.FlexBasis = 50; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexGrow = 1; + root.Insert(1, root_child1); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(75, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(75, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(25, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(25, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(75, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(25, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + } + + [Test] + public void Test_flex_basis_flex_shrink_column() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexShrink = 1; + root_child0.FlexBasis = 100; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexBasis = 50; + root.Insert(1, root_child1); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(50, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(50, root_child1.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(50, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(50, root_child1.LayoutHeight); + } + + [Test] + public void Test_flex_basis_flex_shrink_row() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexShrink = 1; + root_child0.FlexBasis = 100; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexBasis = 50; + root.Insert(1, root_child1); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(50, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(50, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + } + + [Test] + public void Test_flex_shrink_to_zero() + { + CSSNode root = new CSSNode(); + root.StyleHeight = 75; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 50; + root_child0.StyleHeight = 50; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexShrink = 1; + root_child1.StyleWidth = 50; + root_child1.StyleHeight = 50; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 50; + root_child2.StyleHeight = 50; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(50, root.LayoutWidth); + Assert.AreEqual(75, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(50, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(0, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(50, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(50, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(50, root.LayoutWidth); + Assert.AreEqual(75, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(50, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(0, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(50, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(50, root_child2.LayoutHeight); + } + + [Test] + public void Test_flex_basis_overrides_main_size() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.FlexBasis = 50; + root_child0.StyleHeight = 20; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexGrow = 1; + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.FlexGrow = 1; + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(60, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(60, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(20, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(80, root_child2.LayoutY); + Assert.AreEqual(100, root_child2.LayoutWidth); + Assert.AreEqual(20, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(60, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(60, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(20, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(80, root_child2.LayoutY); + Assert.AreEqual(100, root_child2.LayoutWidth); + Assert.AreEqual(20, root_child2.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutFlexWrapTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutFlexWrapTest.cs new file mode 100644 index 00000000..2a0b3f8c --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutFlexWrapTest.cs @@ -0,0 +1,389 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutFlexWrapTest + { + [Test] + public void Test_wrap_column() + { + CSSNode root = new CSSNode(); + root.Wrap = CSSWrap.Wrap; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 30; + root_child0.StyleHeight = 30; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 30; + root_child1.StyleHeight = 30; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 30; + root_child2.StyleHeight = 30; + root.Insert(2, root_child2); + + CSSNode root_child3 = new CSSNode(); + root_child3.StyleWidth = 30; + root_child3.StyleHeight = 30; + root.Insert(3, root_child3); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(60, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(30, root_child0.LayoutWidth); + Assert.AreEqual(30, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(30, root_child1.LayoutY); + Assert.AreEqual(30, root_child1.LayoutWidth); + Assert.AreEqual(30, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(60, root_child2.LayoutY); + Assert.AreEqual(30, root_child2.LayoutWidth); + Assert.AreEqual(30, root_child2.LayoutHeight); + + Assert.AreEqual(30, root_child3.LayoutX); + Assert.AreEqual(0, root_child3.LayoutY); + Assert.AreEqual(30, root_child3.LayoutWidth); + Assert.AreEqual(30, root_child3.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(60, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(30, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(30, root_child0.LayoutWidth); + Assert.AreEqual(30, root_child0.LayoutHeight); + + Assert.AreEqual(30, root_child1.LayoutX); + Assert.AreEqual(30, root_child1.LayoutY); + Assert.AreEqual(30, root_child1.LayoutWidth); + Assert.AreEqual(30, root_child1.LayoutHeight); + + Assert.AreEqual(30, root_child2.LayoutX); + Assert.AreEqual(60, root_child2.LayoutY); + Assert.AreEqual(30, root_child2.LayoutWidth); + Assert.AreEqual(30, root_child2.LayoutHeight); + + Assert.AreEqual(0, root_child3.LayoutX); + Assert.AreEqual(0, root_child3.LayoutY); + Assert.AreEqual(30, root_child3.LayoutWidth); + Assert.AreEqual(30, root_child3.LayoutHeight); + } + + [Test] + public void Test_wrap_row() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.Wrap = CSSWrap.Wrap; + root.StyleWidth = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 30; + root_child0.StyleHeight = 30; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 30; + root_child1.StyleHeight = 30; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 30; + root_child2.StyleHeight = 30; + root.Insert(2, root_child2); + + CSSNode root_child3 = new CSSNode(); + root_child3.StyleWidth = 30; + root_child3.StyleHeight = 30; + root.Insert(3, root_child3); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(60, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(30, root_child0.LayoutWidth); + Assert.AreEqual(30, root_child0.LayoutHeight); + + Assert.AreEqual(30, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(30, root_child1.LayoutWidth); + Assert.AreEqual(30, root_child1.LayoutHeight); + + Assert.AreEqual(60, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(30, root_child2.LayoutWidth); + Assert.AreEqual(30, root_child2.LayoutHeight); + + Assert.AreEqual(0, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(30, root_child3.LayoutWidth); + Assert.AreEqual(30, root_child3.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(60, root.LayoutHeight); + + Assert.AreEqual(70, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(30, root_child0.LayoutWidth); + Assert.AreEqual(30, root_child0.LayoutHeight); + + Assert.AreEqual(40, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(30, root_child1.LayoutWidth); + Assert.AreEqual(30, root_child1.LayoutHeight); + + Assert.AreEqual(10, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(30, root_child2.LayoutWidth); + Assert.AreEqual(30, root_child2.LayoutHeight); + + Assert.AreEqual(70, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(30, root_child3.LayoutWidth); + Assert.AreEqual(30, root_child3.LayoutHeight); + } + + [Test] + public void Test_wrap_row_align_items_flex_end() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.AlignItems = CSSAlign.FlexEnd; + root.Wrap = CSSWrap.Wrap; + root.StyleWidth = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 30; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 30; + root_child1.StyleHeight = 20; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 30; + root_child2.StyleHeight = 30; + root.Insert(2, root_child2); + + CSSNode root_child3 = new CSSNode(); + root_child3.StyleWidth = 30; + root_child3.StyleHeight = 30; + root.Insert(3, root_child3); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(60, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(20, root_child0.LayoutY); + Assert.AreEqual(30, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(30, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(30, root_child1.LayoutWidth); + Assert.AreEqual(20, root_child1.LayoutHeight); + + Assert.AreEqual(60, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(30, root_child2.LayoutWidth); + Assert.AreEqual(30, root_child2.LayoutHeight); + + Assert.AreEqual(0, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(30, root_child3.LayoutWidth); + Assert.AreEqual(30, root_child3.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(60, root.LayoutHeight); + + Assert.AreEqual(70, root_child0.LayoutX); + Assert.AreEqual(20, root_child0.LayoutY); + Assert.AreEqual(30, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(40, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(30, root_child1.LayoutWidth); + Assert.AreEqual(20, root_child1.LayoutHeight); + + Assert.AreEqual(10, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(30, root_child2.LayoutWidth); + Assert.AreEqual(30, root_child2.LayoutHeight); + + Assert.AreEqual(70, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(30, root_child3.LayoutWidth); + Assert.AreEqual(30, root_child3.LayoutHeight); + } + + [Test] + public void Test_wrap_row_align_items_center() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.AlignItems = CSSAlign.Center; + root.Wrap = CSSWrap.Wrap; + root.StyleWidth = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 30; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 30; + root_child1.StyleHeight = 20; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 30; + root_child2.StyleHeight = 30; + root.Insert(2, root_child2); + + CSSNode root_child3 = new CSSNode(); + root_child3.StyleWidth = 30; + root_child3.StyleHeight = 30; + root.Insert(3, root_child3); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(60, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(30, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(30, root_child1.LayoutX); + Assert.AreEqual(5, root_child1.LayoutY); + Assert.AreEqual(30, root_child1.LayoutWidth); + Assert.AreEqual(20, root_child1.LayoutHeight); + + Assert.AreEqual(60, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(30, root_child2.LayoutWidth); + Assert.AreEqual(30, root_child2.LayoutHeight); + + Assert.AreEqual(0, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(30, root_child3.LayoutWidth); + Assert.AreEqual(30, root_child3.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(60, root.LayoutHeight); + + Assert.AreEqual(70, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(30, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(40, root_child1.LayoutX); + Assert.AreEqual(5, root_child1.LayoutY); + Assert.AreEqual(30, root_child1.LayoutWidth); + Assert.AreEqual(20, root_child1.LayoutHeight); + + Assert.AreEqual(10, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(30, root_child2.LayoutWidth); + Assert.AreEqual(30, root_child2.LayoutHeight); + + Assert.AreEqual(70, root_child3.LayoutX); + Assert.AreEqual(30, root_child3.LayoutY); + Assert.AreEqual(30, root_child3.LayoutWidth); + Assert.AreEqual(30, root_child3.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutJustifyContentTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutJustifyContentTest.cs new file mode 100644 index 00000000..b1368e8e --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutJustifyContentTest.cs @@ -0,0 +1,746 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutJustifyContentTest + { + [Test] + public void Test_justify_content_row_flex_start() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(10, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(20, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(92, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(82, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(72, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + } + + [Test] + public void Test_justify_content_row_flex_end() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.JustifyContent = CSSJustify.FlexEnd; + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(72, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(82, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(92, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(20, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(10, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + } + + [Test] + public void Test_justify_content_row_center() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.JustifyContent = CSSJustify.Center; + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(36, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(46, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(56, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(56, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(46, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(36, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + } + + [Test] + public void Test_justify_content_row_space_between() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.JustifyContent = CSSJustify.SpaceBetween; + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(46, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(92, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(92, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(46, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + } + + [Test] + public void Test_justify_content_row_space_around() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.JustifyContent = CSSJustify.SpaceAround; + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(12, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(46, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(80, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(80, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(102, root_child0.LayoutHeight); + + Assert.AreEqual(46, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(10, root_child1.LayoutWidth); + Assert.AreEqual(102, root_child1.LayoutHeight); + + Assert.AreEqual(12, root_child2.LayoutX); + Assert.AreEqual(0, root_child2.LayoutY); + Assert.AreEqual(10, root_child2.LayoutWidth); + Assert.AreEqual(102, root_child2.LayoutHeight); + } + + [Test] + public void Test_justify_content_column_flex_start() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(0, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(10, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(10, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(0, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(10, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + } + + [Test] + public void Test_justify_content_column_flex_end() + { + CSSNode root = new CSSNode(); + root.JustifyContent = CSSJustify.FlexEnd; + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(72, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(82, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(92, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(72, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(82, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(92, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + } + + [Test] + public void Test_justify_content_column_center() + { + CSSNode root = new CSSNode(); + root.JustifyContent = CSSJustify.Center; + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(36, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(46, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(56, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(36, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(46, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(56, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + } + + [Test] + public void Test_justify_content_column_space_between() + { + CSSNode root = new CSSNode(); + root.JustifyContent = CSSJustify.SpaceBetween; + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(46, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(92, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(46, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(92, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + } + + [Test] + public void Test_justify_content_column_space_around() + { + CSSNode root = new CSSNode(); + root.JustifyContent = CSSJustify.SpaceAround; + root.StyleWidth = 102; + root.StyleHeight = 102; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleHeight = 10; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleHeight = 10; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(12, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(46, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(80, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(102, root.LayoutWidth); + Assert.AreEqual(102, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(12, root_child0.LayoutY); + Assert.AreEqual(102, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(46, root_child1.LayoutY); + Assert.AreEqual(102, root_child1.LayoutWidth); + Assert.AreEqual(10, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(80, root_child2.LayoutY); + Assert.AreEqual(102, root_child2.LayoutWidth); + Assert.AreEqual(10, root_child2.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutMarginTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutMarginTest.cs new file mode 100644 index 00000000..7e7955ea --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutMarginTest.cs @@ -0,0 +1,479 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutMarginTest + { + [Test] + public void Test_margin_start() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.SetMargin(CSSEdge.Start, 10); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(80, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + } + + [Test] + public void Test_margin_top() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.SetMargin(CSSEdge.Top, 10); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_margin_end() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.JustifyContent = CSSJustify.FlexEnd; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.SetMargin(CSSEdge.End, 10); + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(80, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + } + + [Test] + public void Test_margin_bottom() + { + CSSNode root = new CSSNode(); + root.JustifyContent = CSSJustify.FlexEnd; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.SetMargin(CSSEdge.Bottom, 10); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(80, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(80, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_margin_and_flex_row() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.SetMargin(CSSEdge.Start, 10); + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(90, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(90, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + } + + [Test] + public void Test_margin_and_flex_column() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.SetMargin(CSSEdge.Top, 10); + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(90, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(90, root_child0.LayoutHeight); + } + + [Test] + public void Test_margin_and_stretch_row() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.SetMargin(CSSEdge.Top, 10); + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(90, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(90, root_child0.LayoutHeight); + } + + [Test] + public void Test_margin_and_stretch_column() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.SetMargin(CSSEdge.Start, 10); + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(90, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(90, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + } + + [Test] + public void Test_margin_with_sibling_row() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexGrow = 1; + root.Insert(1, root_child1); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(50, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(50, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + } + + [Test] + public void Test_margin_with_sibling_column() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexGrow = 1; + root.Insert(1, root_child1); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(50, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(50, root_child1.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(50, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(50, root_child1.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutMinMaxDimensionTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutMinMaxDimensionTest.cs new file mode 100644 index 00000000..73a2a84f --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutMinMaxDimensionTest.cs @@ -0,0 +1,387 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutMinMaxDimensionTest + { + [Test] + public void Test_max_width() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleMaxWidth = 50; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(50, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_max_height() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root_child0.StyleMaxHeight = 50; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(90, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + } + + [Test] + public void Test_min_height() + { + CSSNode root = new CSSNode(); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.StyleMinHeight = 60; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexGrow = 1; + root.Insert(1, root_child1); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(80, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(80, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(20, root_child1.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(100, root_child0.LayoutWidth); + Assert.AreEqual(80, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(80, root_child1.LayoutY); + Assert.AreEqual(100, root_child1.LayoutWidth); + Assert.AreEqual(20, root_child1.LayoutHeight); + } + + [Test] + public void Test_min_width() + { + CSSNode root = new CSSNode(); + root.FlexDirection = CSSFlexDirection.Row; + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.StyleMinWidth = 60; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.FlexGrow = 1; + root.Insert(1, root_child1); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(80, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(80, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(20, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(20, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(80, root_child0.LayoutWidth); + Assert.AreEqual(100, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(0, root_child1.LayoutY); + Assert.AreEqual(20, root_child1.LayoutWidth); + Assert.AreEqual(100, root_child1.LayoutHeight); + } + + [Test] + public void Test_justify_content_min_max() + { + CSSNode root = new CSSNode(); + root.JustifyContent = CSSJustify.Center; + root.StyleWidth = 100; + root.StyleMinHeight = 100; + root.StyleMaxHeight = 200; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 60; + root_child0.StyleHeight = 60; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(20, root_child0.LayoutY); + Assert.AreEqual(60, root_child0.LayoutWidth); + Assert.AreEqual(60, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(40, root_child0.LayoutX); + Assert.AreEqual(20, root_child0.LayoutY); + Assert.AreEqual(60, root_child0.LayoutWidth); + Assert.AreEqual(60, root_child0.LayoutHeight); + } + + [Test] + public void Test_align_items_min_max() + { + CSSNode root = new CSSNode(); + root.AlignItems = CSSAlign.Center; + root.StyleMinWidth = 100; + root.StyleMaxWidth = 200; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 60; + root_child0.StyleHeight = 60; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(20, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(60, root_child0.LayoutWidth); + Assert.AreEqual(60, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(20, root_child0.LayoutX); + Assert.AreEqual(0, root_child0.LayoutY); + Assert.AreEqual(60, root_child0.LayoutWidth); + Assert.AreEqual(60, root_child0.LayoutHeight); + } + + [Test] + public void Test_justify_content_overflow_min_max() + { + CSSNode root = new CSSNode(); + root.JustifyContent = CSSJustify.Center; + root.StyleMinHeight = 100; + root.StyleMaxHeight = 110; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 50; + root_child0.StyleHeight = 50; + root.Insert(0, root_child0); + + CSSNode root_child1 = new CSSNode(); + root_child1.StyleWidth = 50; + root_child1.StyleHeight = 50; + root.Insert(1, root_child1); + + CSSNode root_child2 = new CSSNode(); + root_child2.StyleWidth = 50; + root_child2.StyleHeight = 50; + root.Insert(2, root_child2); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(50, root.LayoutWidth); + Assert.AreEqual(110, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(-20, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(30, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(50, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(80, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(50, root_child2.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(50, root.LayoutWidth); + Assert.AreEqual(110, root.LayoutHeight); + + Assert.AreEqual(0, root_child0.LayoutX); + Assert.AreEqual(-20, root_child0.LayoutY); + Assert.AreEqual(50, root_child0.LayoutWidth); + Assert.AreEqual(50, root_child0.LayoutHeight); + + Assert.AreEqual(0, root_child1.LayoutX); + Assert.AreEqual(30, root_child1.LayoutY); + Assert.AreEqual(50, root_child1.LayoutWidth); + Assert.AreEqual(50, root_child1.LayoutHeight); + + Assert.AreEqual(0, root_child2.LayoutX); + Assert.AreEqual(80, root_child2.LayoutY); + Assert.AreEqual(50, root_child2.LayoutWidth); + Assert.AreEqual(50, root_child2.LayoutHeight); + } + + } +} diff --git a/csharp/tests/Facebook.CSSLayout/CSSLayoutPaddingTest.cs b/csharp/tests/Facebook.CSSLayout/CSSLayoutPaddingTest.cs new file mode 100644 index 00000000..8ede76d2 --- /dev/null +++ b/csharp/tests/Facebook.CSSLayout/CSSLayoutPaddingTest.cs @@ -0,0 +1,234 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ * + */ + +using System; +using NUnit.Framework; + +namespace Facebook.CSSLayout +{ + [TestFixture] + public class CSSLayoutPaddingTest + { + [Test] + public void Test_padding_no_size() + { + CSSNode root = new CSSNode(); + root.SetPadding(CSSEdge.Left, 10); + root.SetPadding(CSSEdge.Top, 10); + root.SetPadding(CSSEdge.Right, 10); + root.SetPadding(CSSEdge.Bottom, 10); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(20, root.LayoutWidth); + Assert.AreEqual(20, root.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(20, root.LayoutWidth); + Assert.AreEqual(20, root.LayoutHeight); + } + + [Test] + public void Test_padding_container_match_child() + { + CSSNode root = new CSSNode(); + root.SetPadding(CSSEdge.Left, 10); + root.SetPadding(CSSEdge.Top, 10); + root.SetPadding(CSSEdge.Right, 10); + root.SetPadding(CSSEdge.Bottom, 10); + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(30, root.LayoutWidth); + Assert.AreEqual(30, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(30, root.LayoutWidth); + Assert.AreEqual(30, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_padding_flex_child() + { + CSSNode root = new CSSNode(); + root.SetPadding(CSSEdge.Left, 10); + root.SetPadding(CSSEdge.Top, 10); + root.SetPadding(CSSEdge.Right, 10); + root.SetPadding(CSSEdge.Bottom, 10); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.FlexGrow = 1; + root_child0.StyleWidth = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(80, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(80, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(80, root_child0.LayoutHeight); + } + + [Test] + public void Test_padding_stretch_child() + { + CSSNode root = new CSSNode(); + root.SetPadding(CSSEdge.Left, 10); + root.SetPadding(CSSEdge.Top, 10); + root.SetPadding(CSSEdge.Right, 10); + root.SetPadding(CSSEdge.Bottom, 10); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(80, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(10, root_child0.LayoutX); + Assert.AreEqual(10, root_child0.LayoutY); + Assert.AreEqual(80, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + [Test] + public void Test_padding_center_child() + { + CSSNode root = new CSSNode(); + root.JustifyContent = CSSJustify.Center; + root.AlignItems = CSSAlign.Center; + root.SetPadding(CSSEdge.Start, 10); + root.SetPadding(CSSEdge.End, 20); + root.SetPadding(CSSEdge.Bottom, 20); + root.StyleWidth = 100; + root.StyleHeight = 100; + + CSSNode root_child0 = new CSSNode(); + root_child0.StyleWidth = 10; + root_child0.StyleHeight = 10; + root.Insert(0, root_child0); + root.StyleDirection = CSSDirection.LeftToRight; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(40, root_child0.LayoutX); + Assert.AreEqual(35, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + + root.StyleDirection = CSSDirection.RightToLeft; + root.CalculateLayout(); + + Assert.AreEqual(0, root.LayoutX); + Assert.AreEqual(0, root.LayoutY); + Assert.AreEqual(100, root.LayoutWidth); + Assert.AreEqual(100, root.LayoutHeight); + + Assert.AreEqual(50, root_child0.LayoutX); + Assert.AreEqual(35, root_child0.LayoutY); + Assert.AreEqual(10, root_child0.LayoutWidth); + Assert.AreEqual(10, root_child0.LayoutHeight); + } + + } +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutAbsolutePositionTest.java b/java/tests/com/facebook/csslayout/CSSLayoutAbsolutePositionTest.java new file mode 100644 index 00000000..c64be24e --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutAbsolutePositionTest.java @@ -0,0 +1,259 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutAbsolutePositionTest { + @Test + public void test_absolute_layout_width_height_start_top() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setPositionType(CSSPositionType.ABSOLUTE); + root_child0.setPosition(Spacing.START, 10); + root_child0.setPosition(Spacing.TOP, 10); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_absolute_layout_width_height_end_bottom() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setPositionType(CSSPositionType.ABSOLUTE); + root_child0.setPosition(Spacing.END, 10); + root_child0.setPosition(Spacing.BOTTOM, 10); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child0.getLayoutX(), 0.0f); + assertEquals(80, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(80, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_absolute_layout_start_top_end_bottom() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setPositionType(CSSPositionType.ABSOLUTE); + root_child0.setPosition(Spacing.START, 10); + root_child0.setPosition(Spacing.TOP, 10); + root_child0.setPosition(Spacing.END, 10); + root_child0.setPosition(Spacing.BOTTOM, 10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(80, root_child0.getLayoutWidth(), 0.0f); + assertEquals(80, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(80, root_child0.getLayoutWidth(), 0.0f); + assertEquals(80, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_absolute_layout_width_height_start_top_end_bottom() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setPositionType(CSSPositionType.ABSOLUTE); + root_child0.setPosition(Spacing.START, 10); + root_child0.setPosition(Spacing.TOP, 10); + root_child0.setPosition(Spacing.END, 10); + root_child0.setPosition(Spacing.BOTTOM, 10); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_do_not_clamp_height_of_absolute_node_to_height_of_its_overflow_hidden_parent() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setOverflow(CSSOverflow.HIDDEN); + root.setStyleWidth(50); + root.setStyleHeight(50); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setPositionType(CSSPositionType.ABSOLUTE); + root.addChildAt(root_child0, 0); + + final CSSNode root_child0_child0 = new CSSNode(); + root_child0_child0.setStyleWidth(100); + root_child0_child0.setStyleHeight(100); + root_child0.addChildAt(root_child0_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(50, root.getLayoutWidth(), 0.0f); + assertEquals(50, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(50, root.getLayoutWidth(), 0.0f); + assertEquals(50, root.getLayoutHeight(), 0.0f); + + assertEquals(-50, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0_child0.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutAlignContentTest.java b/java/tests/com/facebook/csslayout/CSSLayoutAlignContentTest.java new file mode 100644 index 00000000..c8ae2f98 --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutAlignContentTest.java @@ -0,0 +1,444 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutAlignContentTest { + @Test + public void test_align_content_flex_start() { + final CSSNode root = new CSSNode(); + root.setWrap(CSSWrap.WRAP); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(50); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(50); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(50); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + + final CSSNode root_child3 = new CSSNode(); + root_child3.setStyleWidth(50); + root_child3.setStyleHeight(10); + root.addChildAt(root_child3, 3); + + final CSSNode root_child4 = new CSSNode(); + root_child4.setStyleWidth(50); + root_child4.setStyleHeight(10); + root.addChildAt(root_child4, 4); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(50, root_child3.getLayoutWidth(), 0.0f); + assertEquals(10, root_child3.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child4.getLayoutX(), 0.0f); + assertEquals(40, root_child4.getLayoutY(), 0.0f); + assertEquals(50, root_child4.getLayoutWidth(), 0.0f); + assertEquals(10, root_child4.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(50, root_child3.getLayoutWidth(), 0.0f); + assertEquals(10, root_child3.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child4.getLayoutX(), 0.0f); + assertEquals(40, root_child4.getLayoutY(), 0.0f); + assertEquals(50, root_child4.getLayoutWidth(), 0.0f); + assertEquals(10, root_child4.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_content_flex_end() { + final CSSNode root = new CSSNode(); + root.setAlignContent(CSSAlign.FLEX_END); + root.setWrap(CSSWrap.WRAP); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(50); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(50); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(50); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + + final CSSNode root_child3 = new CSSNode(); + root_child3.setStyleWidth(50); + root_child3.setStyleHeight(10); + root.addChildAt(root_child3, 3); + + final CSSNode root_child4 = new CSSNode(); + root_child4.setStyleWidth(50); + root_child4.setStyleHeight(10); + root.addChildAt(root_child4, 4); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(50, root_child3.getLayoutWidth(), 0.0f); + assertEquals(10, root_child3.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child4.getLayoutX(), 0.0f); + assertEquals(40, root_child4.getLayoutY(), 0.0f); + assertEquals(50, root_child4.getLayoutWidth(), 0.0f); + assertEquals(10, root_child4.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(50, root_child3.getLayoutWidth(), 0.0f); + assertEquals(10, root_child3.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child4.getLayoutX(), 0.0f); + assertEquals(40, root_child4.getLayoutY(), 0.0f); + assertEquals(50, root_child4.getLayoutWidth(), 0.0f); + assertEquals(10, root_child4.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_content_center() { + final CSSNode root = new CSSNode(); + root.setAlignContent(CSSAlign.CENTER); + root.setWrap(CSSWrap.WRAP); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(50); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(50); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(50); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + + final CSSNode root_child3 = new CSSNode(); + root_child3.setStyleWidth(50); + root_child3.setStyleHeight(10); + root.addChildAt(root_child3, 3); + + final CSSNode root_child4 = new CSSNode(); + root_child4.setStyleWidth(50); + root_child4.setStyleHeight(10); + root.addChildAt(root_child4, 4); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(50, root_child3.getLayoutWidth(), 0.0f); + assertEquals(10, root_child3.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child4.getLayoutX(), 0.0f); + assertEquals(40, root_child4.getLayoutY(), 0.0f); + assertEquals(50, root_child4.getLayoutWidth(), 0.0f); + assertEquals(10, root_child4.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(50, root_child3.getLayoutWidth(), 0.0f); + assertEquals(10, root_child3.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child4.getLayoutX(), 0.0f); + assertEquals(40, root_child4.getLayoutY(), 0.0f); + assertEquals(50, root_child4.getLayoutWidth(), 0.0f); + assertEquals(10, root_child4.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_content_stretch() { + final CSSNode root = new CSSNode(); + root.setAlignContent(CSSAlign.STRETCH); + root.setWrap(CSSWrap.WRAP); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(50); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(50); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(50); + root.addChildAt(root_child2, 2); + + final CSSNode root_child3 = new CSSNode(); + root_child3.setStyleWidth(50); + root.addChildAt(root_child3, 3); + + final CSSNode root_child4 = new CSSNode(); + root_child4.setStyleWidth(50); + root.addChildAt(root_child4, 4); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(0, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(0, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(0, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child3.getLayoutX(), 0.0f); + assertEquals(0, root_child3.getLayoutY(), 0.0f); + assertEquals(50, root_child3.getLayoutWidth(), 0.0f); + assertEquals(0, root_child3.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child4.getLayoutX(), 0.0f); + assertEquals(0, root_child4.getLayoutY(), 0.0f); + assertEquals(50, root_child4.getLayoutWidth(), 0.0f); + assertEquals(0, root_child4.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(0, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(0, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(0, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child3.getLayoutX(), 0.0f); + assertEquals(0, root_child3.getLayoutY(), 0.0f); + assertEquals(50, root_child3.getLayoutWidth(), 0.0f); + assertEquals(0, root_child3.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child4.getLayoutX(), 0.0f); + assertEquals(0, root_child4.getLayoutY(), 0.0f); + assertEquals(50, root_child4.getLayoutWidth(), 0.0f); + assertEquals(0, root_child4.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutAlignItemsTest.java b/java/tests/com/facebook/csslayout/CSSLayoutAlignItemsTest.java new file mode 100644 index 00000000..49689901 --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutAlignItemsTest.java @@ -0,0 +1,188 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutAlignItemsTest { + @Test + public void test_align_items_stretch() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_items_center() { + final CSSNode root = new CSSNode(); + root.setAlignItems(CSSAlign.CENTER); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(45, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(45, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_items_flex_start() { + final CSSNode root = new CSSNode(); + root.setAlignItems(CSSAlign.FLEX_START); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(90, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_items_flex_end() { + final CSSNode root = new CSSNode(); + root.setAlignItems(CSSAlign.FLEX_END); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(90, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutAlignSelfTest.java b/java/tests/com/facebook/csslayout/CSSLayoutAlignSelfTest.java new file mode 100644 index 00000000..999972de --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutAlignSelfTest.java @@ -0,0 +1,191 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutAlignSelfTest { + @Test + public void test_align_self_center() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setAlignSelf(CSSAlign.CENTER); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(45, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(45, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_self_flex_end() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setAlignSelf(CSSAlign.FLEX_END); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(90, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_self_flex_start() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setAlignSelf(CSSAlign.FLEX_START); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(90, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_self_flex_end_override_flex_start() { + final CSSNode root = new CSSNode(); + root.setAlignItems(CSSAlign.FLEX_START); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setAlignSelf(CSSAlign.FLEX_END); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(90, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutBorderTest.java b/java/tests/com/facebook/csslayout/CSSLayoutBorderTest.java new file mode 100644 index 00000000..ee7505e4 --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutBorderTest.java @@ -0,0 +1,227 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutBorderTest { + @Test + public void test_border_no_size() { + final CSSNode root = new CSSNode(); + root.setBorder(Spacing.LEFT, 10); + root.setBorder(Spacing.TOP, 10); + root.setBorder(Spacing.RIGHT, 10); + root.setBorder(Spacing.BOTTOM, 10); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(20, root.getLayoutWidth(), 0.0f); + assertEquals(20, root.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(20, root.getLayoutWidth(), 0.0f); + assertEquals(20, root.getLayoutHeight(), 0.0f); + } + + @Test + public void test_border_container_match_child() { + final CSSNode root = new CSSNode(); + root.setBorder(Spacing.LEFT, 10); + root.setBorder(Spacing.TOP, 10); + root.setBorder(Spacing.RIGHT, 10); + root.setBorder(Spacing.BOTTOM, 10); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(30, root.getLayoutWidth(), 0.0f); + assertEquals(30, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(30, root.getLayoutWidth(), 0.0f); + assertEquals(30, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_border_flex_child() { + final CSSNode root = new CSSNode(); + root.setBorder(Spacing.LEFT, 10); + root.setBorder(Spacing.TOP, 10); + root.setBorder(Spacing.RIGHT, 10); + root.setBorder(Spacing.BOTTOM, 10); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(80, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(80, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_border_stretch_child() { + final CSSNode root = new CSSNode(); + root.setBorder(Spacing.LEFT, 10); + root.setBorder(Spacing.TOP, 10); + root.setBorder(Spacing.RIGHT, 10); + root.setBorder(Spacing.BOTTOM, 10); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(80, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(80, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_border_center_child() { + final CSSNode root = new CSSNode(); + root.setJustifyContent(CSSJustify.CENTER); + root.setAlignItems(CSSAlign.CENTER); + root.setBorder(Spacing.START, 10); + root.setBorder(Spacing.END, 20); + root.setBorder(Spacing.BOTTOM, 20); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(40, root_child0.getLayoutX(), 0.0f); + assertEquals(35, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child0.getLayoutX(), 0.0f); + assertEquals(35, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutFlexDirectionTest.java b/java/tests/com/facebook/csslayout/CSSLayoutFlexDirectionTest.java new file mode 100644 index 00000000..7d741b7c --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutFlexDirectionTest.java @@ -0,0 +1,444 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutFlexDirectionTest { + @Test + public void test_flex_direction_column_no_height() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(30, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(100, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(30, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(100, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_direction_row_no_width() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(30, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(20, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(100, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(30, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(20, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(100, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_direction_column() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(100, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(20, root_child2.getLayoutY(), 0.0f); + assertEquals(100, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_direction_row() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(20, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(100, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(90, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(70, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(100, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_direction_column_reverse() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.COLUMN_REVERSE); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(90, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(80, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(70, root_child2.getLayoutY(), 0.0f); + assertEquals(100, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(90, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(80, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(70, root_child2.getLayoutY(), 0.0f); + assertEquals(100, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_direction_row_reverse() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW_REVERSE); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(90, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(70, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(100, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(20, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(100, root_child2.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutFlexTest.java b/java/tests/com/facebook/csslayout/CSSLayoutFlexTest.java new file mode 100644 index 00000000..5056e307 --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutFlexTest.java @@ -0,0 +1,395 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutFlexTest { + @Test + public void test_flex_basis_flex_grow_column() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setFlexBasis(50); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexGrow(1); + root.addChildAt(root_child1, 1); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(75, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(75, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(25, root_child1.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(75, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(75, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(25, root_child1.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_basis_flex_grow_row() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setFlexBasis(50); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexGrow(1); + root.addChildAt(root_child1, 1); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(75, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(75, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(25, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(25, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(75, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(25, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_basis_flex_shrink_column() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexShrink(1); + root_child0.setFlexBasis(100); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexBasis(50); + root.addChildAt(root_child1, 1); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(50, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(50, root_child1.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(50, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(50, root_child1.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_basis_flex_shrink_row() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexShrink(1); + root_child0.setFlexBasis(100); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexBasis(50); + root.addChildAt(root_child1, 1); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_shrink_to_zero() { + final CSSNode root = new CSSNode(); + root.setStyleHeight(75); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(50); + root_child0.setStyleHeight(50); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexShrink(1); + root_child1.setStyleWidth(50); + root_child1.setStyleHeight(50); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(50); + root_child2.setStyleHeight(50); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(50, root.getLayoutWidth(), 0.0f); + assertEquals(75, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(50, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(0, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(50, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(50, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(50, root.getLayoutWidth(), 0.0f); + assertEquals(75, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(50, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(0, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(50, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(50, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_flex_basis_overrides_main_size() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setFlexBasis(50); + root_child0.setStyleHeight(20); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexGrow(1); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setFlexGrow(1); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(60, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(60, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(20, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(80, root_child2.getLayoutY(), 0.0f); + assertEquals(100, root_child2.getLayoutWidth(), 0.0f); + assertEquals(20, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(60, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(60, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(20, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(80, root_child2.getLayoutY(), 0.0f); + assertEquals(100, root_child2.getLayoutWidth(), 0.0f); + assertEquals(20, root_child2.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutFlexWrapTest.java b/java/tests/com/facebook/csslayout/CSSLayoutFlexWrapTest.java new file mode 100644 index 00000000..bd4b506d --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutFlexWrapTest.java @@ -0,0 +1,383 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutFlexWrapTest { + @Test + public void test_wrap_column() { + final CSSNode root = new CSSNode(); + root.setWrap(CSSWrap.WRAP); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(30); + root_child0.setStyleHeight(30); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(30); + root_child1.setStyleHeight(30); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(30); + root_child2.setStyleHeight(30); + root.addChildAt(root_child2, 2); + + final CSSNode root_child3 = new CSSNode(); + root_child3.setStyleWidth(30); + root_child3.setStyleHeight(30); + root.addChildAt(root_child3, 3); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(60, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(30, root_child0.getLayoutWidth(), 0.0f); + assertEquals(30, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(30, root_child1.getLayoutY(), 0.0f); + assertEquals(30, root_child1.getLayoutWidth(), 0.0f); + assertEquals(30, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(60, root_child2.getLayoutY(), 0.0f); + assertEquals(30, root_child2.getLayoutWidth(), 0.0f); + assertEquals(30, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(30, root_child3.getLayoutX(), 0.0f); + assertEquals(0, root_child3.getLayoutY(), 0.0f); + assertEquals(30, root_child3.getLayoutWidth(), 0.0f); + assertEquals(30, root_child3.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(60, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(30, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(30, root_child0.getLayoutWidth(), 0.0f); + assertEquals(30, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(30, root_child1.getLayoutX(), 0.0f); + assertEquals(30, root_child1.getLayoutY(), 0.0f); + assertEquals(30, root_child1.getLayoutWidth(), 0.0f); + assertEquals(30, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(30, root_child2.getLayoutX(), 0.0f); + assertEquals(60, root_child2.getLayoutY(), 0.0f); + assertEquals(30, root_child2.getLayoutWidth(), 0.0f); + assertEquals(30, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child3.getLayoutX(), 0.0f); + assertEquals(0, root_child3.getLayoutY(), 0.0f); + assertEquals(30, root_child3.getLayoutWidth(), 0.0f); + assertEquals(30, root_child3.getLayoutHeight(), 0.0f); + } + + @Test + public void test_wrap_row() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setWrap(CSSWrap.WRAP); + root.setStyleWidth(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(30); + root_child0.setStyleHeight(30); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(30); + root_child1.setStyleHeight(30); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(30); + root_child2.setStyleHeight(30); + root.addChildAt(root_child2, 2); + + final CSSNode root_child3 = new CSSNode(); + root_child3.setStyleWidth(30); + root_child3.setStyleHeight(30); + root.addChildAt(root_child3, 3); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(60, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(30, root_child0.getLayoutWidth(), 0.0f); + assertEquals(30, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(30, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(30, root_child1.getLayoutWidth(), 0.0f); + assertEquals(30, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(60, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(30, root_child2.getLayoutWidth(), 0.0f); + assertEquals(30, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(30, root_child3.getLayoutWidth(), 0.0f); + assertEquals(30, root_child3.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(60, root.getLayoutHeight(), 0.0f); + + assertEquals(70, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(30, root_child0.getLayoutWidth(), 0.0f); + assertEquals(30, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(40, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(30, root_child1.getLayoutWidth(), 0.0f); + assertEquals(30, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(30, root_child2.getLayoutWidth(), 0.0f); + assertEquals(30, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(70, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(30, root_child3.getLayoutWidth(), 0.0f); + assertEquals(30, root_child3.getLayoutHeight(), 0.0f); + } + + @Test + public void test_wrap_row_align_items_flex_end() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setAlignItems(CSSAlign.FLEX_END); + root.setWrap(CSSWrap.WRAP); + root.setStyleWidth(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(30); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(30); + root_child1.setStyleHeight(20); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(30); + root_child2.setStyleHeight(30); + root.addChildAt(root_child2, 2); + + final CSSNode root_child3 = new CSSNode(); + root_child3.setStyleWidth(30); + root_child3.setStyleHeight(30); + root.addChildAt(root_child3, 3); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(60, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(20, root_child0.getLayoutY(), 0.0f); + assertEquals(30, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(30, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(30, root_child1.getLayoutWidth(), 0.0f); + assertEquals(20, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(60, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(30, root_child2.getLayoutWidth(), 0.0f); + assertEquals(30, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(30, root_child3.getLayoutWidth(), 0.0f); + assertEquals(30, root_child3.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(60, root.getLayoutHeight(), 0.0f); + + assertEquals(70, root_child0.getLayoutX(), 0.0f); + assertEquals(20, root_child0.getLayoutY(), 0.0f); + assertEquals(30, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(40, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(30, root_child1.getLayoutWidth(), 0.0f); + assertEquals(20, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(30, root_child2.getLayoutWidth(), 0.0f); + assertEquals(30, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(70, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(30, root_child3.getLayoutWidth(), 0.0f); + assertEquals(30, root_child3.getLayoutHeight(), 0.0f); + } + + @Test + public void test_wrap_row_align_items_center() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setAlignItems(CSSAlign.CENTER); + root.setWrap(CSSWrap.WRAP); + root.setStyleWidth(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(30); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(30); + root_child1.setStyleHeight(20); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(30); + root_child2.setStyleHeight(30); + root.addChildAt(root_child2, 2); + + final CSSNode root_child3 = new CSSNode(); + root_child3.setStyleWidth(30); + root_child3.setStyleHeight(30); + root.addChildAt(root_child3, 3); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(60, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(30, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(30, root_child1.getLayoutX(), 0.0f); + assertEquals(5, root_child1.getLayoutY(), 0.0f); + assertEquals(30, root_child1.getLayoutWidth(), 0.0f); + assertEquals(20, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(60, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(30, root_child2.getLayoutWidth(), 0.0f); + assertEquals(30, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(30, root_child3.getLayoutWidth(), 0.0f); + assertEquals(30, root_child3.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(60, root.getLayoutHeight(), 0.0f); + + assertEquals(70, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(30, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(40, root_child1.getLayoutX(), 0.0f); + assertEquals(5, root_child1.getLayoutY(), 0.0f); + assertEquals(30, root_child1.getLayoutWidth(), 0.0f); + assertEquals(20, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(30, root_child2.getLayoutWidth(), 0.0f); + assertEquals(30, root_child2.getLayoutHeight(), 0.0f); + + assertEquals(70, root_child3.getLayoutX(), 0.0f); + assertEquals(30, root_child3.getLayoutY(), 0.0f); + assertEquals(30, root_child3.getLayoutWidth(), 0.0f); + assertEquals(30, root_child3.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutJustifyContentTest.java b/java/tests/com/facebook/csslayout/CSSLayoutJustifyContentTest.java new file mode 100644 index 00000000..cef3690a --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutJustifyContentTest.java @@ -0,0 +1,734 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutJustifyContentTest { + @Test + public void test_justify_content_row_flex_start() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(20, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(92, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(82, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(72, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_row_flex_end() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setJustifyContent(CSSJustify.FLEX_END); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(72, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(82, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(92, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(20, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_row_center() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setJustifyContent(CSSJustify.CENTER); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(36, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(46, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(56, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(56, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(46, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(36, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_row_space_between() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setJustifyContent(CSSJustify.SPACE_BETWEEN); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(46, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(92, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(92, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(46, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_row_space_around() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setJustifyContent(CSSJustify.SPACE_AROUND); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(12, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(46, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(102, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(46, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(10, root_child1.getLayoutWidth(), 0.0f); + assertEquals(102, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(12, root_child2.getLayoutX(), 0.0f); + assertEquals(0, root_child2.getLayoutY(), 0.0f); + assertEquals(10, root_child2.getLayoutWidth(), 0.0f); + assertEquals(102, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_column_flex_start() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(0, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(10, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(10, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(0, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(10, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_column_flex_end() { + final CSSNode root = new CSSNode(); + root.setJustifyContent(CSSJustify.FLEX_END); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(72, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(82, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(92, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(72, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(82, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(92, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_column_center() { + final CSSNode root = new CSSNode(); + root.setJustifyContent(CSSJustify.CENTER); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(36, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(46, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(56, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(36, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(46, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(56, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_column_space_between() { + final CSSNode root = new CSSNode(); + root.setJustifyContent(CSSJustify.SPACE_BETWEEN); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(46, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(92, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(46, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(92, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_column_space_around() { + final CSSNode root = new CSSNode(); + root.setJustifyContent(CSSJustify.SPACE_AROUND); + root.setStyleWidth(102); + root.setStyleHeight(102); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleHeight(10); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleHeight(10); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(12, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(46, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(80, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(102, root.getLayoutWidth(), 0.0f); + assertEquals(102, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(12, root_child0.getLayoutY(), 0.0f); + assertEquals(102, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(46, root_child1.getLayoutY(), 0.0f); + assertEquals(102, root_child1.getLayoutWidth(), 0.0f); + assertEquals(10, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(80, root_child2.getLayoutY(), 0.0f); + assertEquals(102, root_child2.getLayoutWidth(), 0.0f); + assertEquals(10, root_child2.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutMarginTest.java b/java/tests/com/facebook/csslayout/CSSLayoutMarginTest.java new file mode 100644 index 00000000..f85ce54d --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutMarginTest.java @@ -0,0 +1,467 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutMarginTest { + @Test + public void test_margin_start() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setMargin(Spacing.START, 10); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_margin_top() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setMargin(Spacing.TOP, 10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_margin_end() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setJustifyContent(CSSJustify.FLEX_END); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setMargin(Spacing.END, 10); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_margin_bottom() { + final CSSNode root = new CSSNode(); + root.setJustifyContent(CSSJustify.FLEX_END); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setMargin(Spacing.BOTTOM, 10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(80, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(80, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_margin_and_flex_row() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setMargin(Spacing.START, 10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(90, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(90, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_margin_and_flex_column() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setMargin(Spacing.TOP, 10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(90, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(90, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_margin_and_stretch_row() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setMargin(Spacing.TOP, 10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(90, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(90, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_margin_and_stretch_column() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setMargin(Spacing.START, 10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(90, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(90, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_margin_with_sibling_row() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexGrow(1); + root.addChildAt(root_child1, 1); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + } + + @Test + public void test_margin_with_sibling_column() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexGrow(1); + root.addChildAt(root_child1, 1); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(50, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(50, root_child1.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(50, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(50, root_child1.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutMinMaxDimensionTest.java b/java/tests/com/facebook/csslayout/CSSLayoutMinMaxDimensionTest.java new file mode 100644 index 00000000..2607d23e --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutMinMaxDimensionTest.java @@ -0,0 +1,378 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutMinMaxDimensionTest { + @Test + public void test_max_width() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleMaxWidth(50); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_max_height() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root_child0.setStyleMaxHeight(50); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(90, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_min_height() { + final CSSNode root = new CSSNode(); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setStyleMinHeight(60); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexGrow(1); + root.addChildAt(root_child1, 1); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(80, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(80, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(20, root_child1.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(100, root_child0.getLayoutWidth(), 0.0f); + assertEquals(80, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(80, root_child1.getLayoutY(), 0.0f); + assertEquals(100, root_child1.getLayoutWidth(), 0.0f); + assertEquals(20, root_child1.getLayoutHeight(), 0.0f); + } + + @Test + public void test_min_width() { + final CSSNode root = new CSSNode(); + root.setFlexDirection(CSSFlexDirection.ROW); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setStyleMinWidth(60); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setFlexGrow(1); + root.addChildAt(root_child1, 1); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(80, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(20, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(20, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(80, root_child0.getLayoutWidth(), 0.0f); + assertEquals(100, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(0, root_child1.getLayoutY(), 0.0f); + assertEquals(20, root_child1.getLayoutWidth(), 0.0f); + assertEquals(100, root_child1.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_min_max() { + final CSSNode root = new CSSNode(); + root.setJustifyContent(CSSJustify.CENTER); + root.setStyleWidth(100); + root.setStyleMinHeight(100); + root.setStyleMaxHeight(200); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(60); + root_child0.setStyleHeight(60); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(20, root_child0.getLayoutY(), 0.0f); + assertEquals(60, root_child0.getLayoutWidth(), 0.0f); + assertEquals(60, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(40, root_child0.getLayoutX(), 0.0f); + assertEquals(20, root_child0.getLayoutY(), 0.0f); + assertEquals(60, root_child0.getLayoutWidth(), 0.0f); + assertEquals(60, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_align_items_min_max() { + final CSSNode root = new CSSNode(); + root.setAlignItems(CSSAlign.CENTER); + root.setStyleMinWidth(100); + root.setStyleMaxWidth(200); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(60); + root_child0.setStyleHeight(60); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(20, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(60, root_child0.getLayoutWidth(), 0.0f); + assertEquals(60, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(20, root_child0.getLayoutX(), 0.0f); + assertEquals(0, root_child0.getLayoutY(), 0.0f); + assertEquals(60, root_child0.getLayoutWidth(), 0.0f); + assertEquals(60, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_justify_content_overflow_min_max() { + final CSSNode root = new CSSNode(); + root.setJustifyContent(CSSJustify.CENTER); + root.setStyleMinHeight(100); + root.setStyleMaxHeight(110); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(50); + root_child0.setStyleHeight(50); + root.addChildAt(root_child0, 0); + + final CSSNode root_child1 = new CSSNode(); + root_child1.setStyleWidth(50); + root_child1.setStyleHeight(50); + root.addChildAt(root_child1, 1); + + final CSSNode root_child2 = new CSSNode(); + root_child2.setStyleWidth(50); + root_child2.setStyleHeight(50); + root.addChildAt(root_child2, 2); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(50, root.getLayoutWidth(), 0.0f); + assertEquals(110, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(-20, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(30, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(50, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(80, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(50, root_child2.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(50, root.getLayoutWidth(), 0.0f); + assertEquals(110, root.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child0.getLayoutX(), 0.0f); + assertEquals(-20, root_child0.getLayoutY(), 0.0f); + assertEquals(50, root_child0.getLayoutWidth(), 0.0f); + assertEquals(50, root_child0.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child1.getLayoutX(), 0.0f); + assertEquals(30, root_child1.getLayoutY(), 0.0f); + assertEquals(50, root_child1.getLayoutWidth(), 0.0f); + assertEquals(50, root_child1.getLayoutHeight(), 0.0f); + + assertEquals(0, root_child2.getLayoutX(), 0.0f); + assertEquals(80, root_child2.getLayoutY(), 0.0f); + assertEquals(50, root_child2.getLayoutWidth(), 0.0f); + assertEquals(50, root_child2.getLayoutHeight(), 0.0f); + } + +} diff --git a/java/tests/com/facebook/csslayout/CSSLayoutPaddingTest.java b/java/tests/com/facebook/csslayout/CSSLayoutPaddingTest.java new file mode 100644 index 00000000..e8bd8671 --- /dev/null +++ b/java/tests/com/facebook/csslayout/CSSLayoutPaddingTest.java @@ -0,0 +1,227 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +/** + * @Generated by gentest/gentest.sh with the following input + * +
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ * + */ + +package com.facebook.csslayout; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CSSLayoutPaddingTest { + @Test + public void test_padding_no_size() { + final CSSNode root = new CSSNode(); + root.setPadding(Spacing.LEFT, 10); + root.setPadding(Spacing.TOP, 10); + root.setPadding(Spacing.RIGHT, 10); + root.setPadding(Spacing.BOTTOM, 10); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(20, root.getLayoutWidth(), 0.0f); + assertEquals(20, root.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(20, root.getLayoutWidth(), 0.0f); + assertEquals(20, root.getLayoutHeight(), 0.0f); + } + + @Test + public void test_padding_container_match_child() { + final CSSNode root = new CSSNode(); + root.setPadding(Spacing.LEFT, 10); + root.setPadding(Spacing.TOP, 10); + root.setPadding(Spacing.RIGHT, 10); + root.setPadding(Spacing.BOTTOM, 10); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(30, root.getLayoutWidth(), 0.0f); + assertEquals(30, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(30, root.getLayoutWidth(), 0.0f); + assertEquals(30, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_padding_flex_child() { + final CSSNode root = new CSSNode(); + root.setPadding(Spacing.LEFT, 10); + root.setPadding(Spacing.TOP, 10); + root.setPadding(Spacing.RIGHT, 10); + root.setPadding(Spacing.BOTTOM, 10); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setFlexGrow(1); + root_child0.setStyleWidth(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(80, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(80, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(80, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_padding_stretch_child() { + final CSSNode root = new CSSNode(); + root.setPadding(Spacing.LEFT, 10); + root.setPadding(Spacing.TOP, 10); + root.setPadding(Spacing.RIGHT, 10); + root.setPadding(Spacing.BOTTOM, 10); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(80, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(10, root_child0.getLayoutX(), 0.0f); + assertEquals(10, root_child0.getLayoutY(), 0.0f); + assertEquals(80, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + + @Test + public void test_padding_center_child() { + final CSSNode root = new CSSNode(); + root.setJustifyContent(CSSJustify.CENTER); + root.setAlignItems(CSSAlign.CENTER); + root.setPadding(Spacing.START, 10); + root.setPadding(Spacing.END, 20); + root.setPadding(Spacing.BOTTOM, 20); + root.setStyleWidth(100); + root.setStyleHeight(100); + + final CSSNode root_child0 = new CSSNode(); + root_child0.setStyleWidth(10); + root_child0.setStyleHeight(10); + root.addChildAt(root_child0, 0); + root.setDirection(CSSDirection.LTR); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(40, root_child0.getLayoutX(), 0.0f); + assertEquals(35, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + + root.setDirection(CSSDirection.RTL); + root.calculateLayout(null); + + assertEquals(0, root.getLayoutX(), 0.0f); + assertEquals(0, root.getLayoutY(), 0.0f); + assertEquals(100, root.getLayoutWidth(), 0.0f); + assertEquals(100, root.getLayoutHeight(), 0.0f); + + assertEquals(50, root_child0.getLayoutX(), 0.0f); + assertEquals(35, root_child0.getLayoutY(), 0.0f); + assertEquals(10, root_child0.getLayoutWidth(), 0.0f); + assertEquals(10, root_child0.getLayoutHeight(), 0.0f); + } + +}