Rebase of facebook flexbox to yoga
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-third-party / yoga / YGBaselineFuncTest.cpp
1 /**
2  * Copyright (c) 2014-present, Facebook, Inc.
3  *
4  * This source code is licensed under the MIT license found in the
5  * LICENSE file in the root directory of this source tree.
6  */
7
8 #include <gtest/gtest.h>
9 #include <yoga/YGNode.h>
10 #include <yoga/Yoga.h>
11
12 static float _baseline(YGNodeRef node, const float width, const float height) {
13   float* baseline = (float*)node->getContext();
14   return *baseline;
15 }
16
17 TEST(YogaTest, align_baseline_customer_func) {
18   const YGNodeRef root = YGNodeNew();
19   YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
20   YGNodeStyleSetAlignItems(root, YGAlignBaseline);
21   YGNodeStyleSetWidth(root, 100);
22   YGNodeStyleSetHeight(root, 100);
23
24   const YGNodeRef root_child0 = YGNodeNew();
25   YGNodeStyleSetWidth(root_child0, 50);
26   YGNodeStyleSetHeight(root_child0, 50);
27   YGNodeInsertChild(root, root_child0, 0);
28
29   const YGNodeRef root_child1 = YGNodeNew();
30   YGNodeStyleSetWidth(root_child1, 50);
31   YGNodeStyleSetHeight(root_child1, 20);
32   YGNodeInsertChild(root, root_child1, 1);
33
34   float baselineValue = 10;
35   const YGNodeRef root_child1_child0 = YGNodeNew();
36   root_child1_child0->setContext(&baselineValue);
37   YGNodeStyleSetWidth(root_child1_child0, 50);
38   root_child1_child0->setBaseLineFunc(_baseline);
39   YGNodeStyleSetHeight(root_child1_child0, 20);
40   YGNodeInsertChild(root_child1, root_child1_child0, 0);
41   YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
42
43   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
44   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
45   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
46   ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
47
48   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
49   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
50   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
51   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
52
53   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetLeft(root_child1));
54   ASSERT_FLOAT_EQ(40, YGNodeLayoutGetTop(root_child1));
55   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1));
56   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1));
57
58   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child1_child0));
59   ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1_child0));
60   ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child1_child0));
61   ASSERT_FLOAT_EQ(20, YGNodeLayoutGetHeight(root_child1_child0));
62 }