From 39e512f691f2e0c0e5972a4121afc97ea9b3dd2e Mon Sep 17 00:00:00 2001 From: Sidharth Guglani Date: Wed, 10 Jul 2019 08:43:41 -0700 Subject: [PATCH] Add tests for measure and baseline events Summary: Add tests for measure and baseline events , same as we had in InstrumentationTests for marker based approach Reviewed By: davidaurelio Differential Revision: D16074402 fbshipit-source-id: 8b11cd6468420428701fd5be5c57700cbd913d23 --- tests/EventsTest.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/EventsTest.cpp b/tests/EventsTest.cpp index fd8acf86..bb86fe71 100644 --- a/tests/EventsTest.cpp +++ b/tests/EventsTest.cpp @@ -248,6 +248,40 @@ TEST_F(EventTest, layout_events_has_max_measure_cache) { ASSERT_EQ(layoutData.maxMeasureCache, 7); } +TEST_F(EventTest, measure_functions_get_wrapped) { + auto root = YGNodeNew(); + YGNodeSetMeasureFunc( + root, [](YGNodeRef, float, YGMeasureMode, float, YGMeasureMode) { + return YGSize{}; + }); + + YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); + + ASSERT_EQ(events[2].node, root); + ASSERT_EQ(events[2].type, Event::MeasureCallbackStart); + + ASSERT_EQ(events[events.size() - 1].node, root); + ASSERT_EQ(events[events.size() - 1].type, Event::LayoutPassEnd); +} + +TEST_F(EventTest, baseline_functions_get_wrapped) { + auto root = YGNodeNew(); + auto child = YGNodeNew(); + YGNodeInsertChild(root, child, 0); + + YGNodeSetBaselineFunc(child, [](YGNodeRef, float, float) { return 0.0f; }); + YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow); + YGNodeStyleSetAlignItems(root, YGAlignBaseline); + + YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR); + + ASSERT_EQ(events[5].node, child); + ASSERT_EQ(events[5].type, Event::NodeBaselineStart); + + ASSERT_EQ(events[events.size() - 1].node, root); + ASSERT_EQ(events[events.size() - 1].type, Event::LayoutPassEnd); +} + namespace { template @@ -298,10 +332,16 @@ void EventTest::listen(const YGNode& node, Event::Type type, Event::Data data) { } case Event::MeasureCallbackStart: + events.push_back(createArgs(node, data)); + break; case Event::MeasureCallbackEnd: + events.push_back(createArgs(node, data)); break; case Event::NodeBaselineStart: + events.push_back(createArgs(node, data)); + break; case Event::NodeBaselineEnd: + events.push_back(createArgs(node, data)); break; } }