Layout marker metadata
Summary: @public Adds marker meta data to `YGMarkerLayout`: the number of measures, and the numbers of layouts for all nodes in the tree. Reviewed By: SidharthGuglani Differential Revision: D13838975 fbshipit-source-id: d575c26a3d5a4f0b66834eb6bedecadc3f3ca265
This commit is contained in:
committed by
Facebook Github Bot
parent
b4b009c2d8
commit
cbea5d44b8
@@ -32,6 +32,9 @@ struct MarkerTest : public ::testing::Test {
|
||||
struct EndData {
|
||||
Data data;
|
||||
void* cookie;
|
||||
union {
|
||||
YGMarkerLayoutData layout;
|
||||
} markerData;
|
||||
};
|
||||
|
||||
static struct {
|
||||
@@ -43,6 +46,7 @@ struct MarkerTest : public ::testing::Test {
|
||||
static void endMarker(YGMarker, YGNodeRef, YGMarkerData, void*);
|
||||
static uniquePtr<YGConfig> makeConfig();
|
||||
static uniquePtr<YGNode> makeNode(uniquePtr<YGConfig>&);
|
||||
static uniquePtr<YGNode> makeNode(uniquePtr<YGConfig>&, uniquePtr<YGNode>&);
|
||||
|
||||
void SetUp() override;
|
||||
};
|
||||
@@ -95,6 +99,28 @@ TEST_F(MarkerTest, layout_marker) {
|
||||
ASSERT_EQ(markerCookie.start.node, root.get());
|
||||
}
|
||||
|
||||
TEST_F(MarkerTest, layout_marker_counts_single_node_layout) {
|
||||
auto config = makeConfig();
|
||||
auto root = makeNode(config);
|
||||
|
||||
YGNodeCalculateLayout(root.get(), YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_EQ(markerCookie.end.markerData.layout.layouts, 1);
|
||||
ASSERT_EQ(markerCookie.end.markerData.layout.measures, 0);
|
||||
}
|
||||
|
||||
TEST_F(MarkerTest, layout_marker_counts_multi_node_layout) {
|
||||
auto config = makeConfig();
|
||||
auto root = makeNode(config);
|
||||
auto childA = makeNode(config, root);
|
||||
auto childB = makeNode(config, root);
|
||||
|
||||
YGNodeCalculateLayout(root.get(), YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_EQ(markerCookie.end.markerData.layout.layouts, 3);
|
||||
ASSERT_EQ(markerCookie.end.markerData.layout.measures, 4);
|
||||
}
|
||||
|
||||
void* MarkerTest::startMarker(
|
||||
YGMarker marker,
|
||||
YGNodeRef node,
|
||||
@@ -108,7 +134,12 @@ void MarkerTest::endMarker(
|
||||
YGNodeRef node,
|
||||
YGMarkerData data,
|
||||
void* id) {
|
||||
markerCookie.end = {{marker, node, data}, id};
|
||||
markerCookie.end = {{marker, node, data}, id, {}};
|
||||
switch (marker) {
|
||||
case YGMarkerLayout:
|
||||
markerCookie.end.markerData.layout = *marker::data<YGMarkerLayout>(data);
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
uniquePtr<YGConfig> MarkerTest::makeConfig() {
|
||||
@@ -122,6 +153,14 @@ uniquePtr<YGNode> MarkerTest::makeNode(uniquePtr<YGConfig>& config) {
|
||||
return n;
|
||||
}
|
||||
|
||||
uniquePtr<YGNode> MarkerTest::makeNode(
|
||||
uniquePtr<YGConfig>& config,
|
||||
uniquePtr<YGNode>& owner) {
|
||||
auto n = makeNode(config);
|
||||
YGNodeInsertChild(owner.get(), n.get(), YGNodeGetChildCount(owner.get()));
|
||||
return n;
|
||||
}
|
||||
|
||||
void MarkerTest::SetUp() {
|
||||
markerCookie = {};
|
||||
}
|
||||
|
Reference in New Issue
Block a user