mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
f303266d69
Summary: Changelog: [internal] shergin found that folly's merge_patch implementation doesn't propagate `null` correctly (details in D26435620 (https://github.com/facebook/react-native/commit/1e9f63fe277c42d812ef007ced7eff1688602b62)). This is a requirement and needs to be adjusted in props forwarding on Android. As far as we know this isn't causing any bugs but it is an error that should be fixed. Reviewed By: shergin Differential Revision: D26545821 fbshipit-source-id: 9edd24aecfcde17f5d9c1197f65db0e0f3f9e364
67 lines
1.9 KiB
C++
67 lines
1.9 KiB
C++
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#include <gtest/gtest.h>
|
|
#include <react/renderer/core/DynamicPropsUtilities.h>
|
|
|
|
using namespace folly;
|
|
using namespace facebook::react;
|
|
|
|
/*
|
|
Tests that verify expected behaviour from `folly::dynamic::merge_patch`.
|
|
`merge_patch` is used for props forwarding on Android to enable Background
|
|
Executor and will be removed once JNI layer is reimplmeneted.
|
|
*/
|
|
TEST(DynamicPropsUtilitiesTest, handleNestedObjects) {
|
|
dynamic map1 = dynamic::object;
|
|
map1["style"] = dynamic::object("backgroundColor", "red");
|
|
|
|
dynamic map2 = dynamic::object;
|
|
map2["style"] = dynamic::object("backgroundColor", "blue")("color", "black");
|
|
map2["height"] = 100;
|
|
|
|
auto result = mergeDynamicProps(map1, map2);
|
|
|
|
EXPECT_TRUE(result["style"].isObject());
|
|
EXPECT_TRUE(result["style"]["backgroundColor"].isString());
|
|
EXPECT_TRUE(result["style"]["color"].isString());
|
|
EXPECT_TRUE(result["height"].isInt());
|
|
|
|
EXPECT_EQ(result["style"]["backgroundColor"].asString(), "blue");
|
|
EXPECT_EQ(result["style"]["color"], "black");
|
|
EXPECT_EQ(result["height"], 100);
|
|
}
|
|
|
|
TEST(DynamicPropsUtilitiesTest, handleEmptyObject) {
|
|
dynamic map1 = dynamic::object;
|
|
|
|
dynamic map2 = dynamic::object;
|
|
map2["height"] = 100;
|
|
|
|
auto result = mergeDynamicProps(map1, map2);
|
|
|
|
EXPECT_TRUE(result["height"].isInt());
|
|
EXPECT_EQ(result["height"], 100);
|
|
|
|
result = mergeDynamicProps(map1, map2);
|
|
|
|
EXPECT_TRUE(result["height"].isInt());
|
|
EXPECT_EQ(result["height"], 100);
|
|
}
|
|
|
|
TEST(DynamicPropsUtilitiesTest, handleNull) {
|
|
dynamic map1 = dynamic::object;
|
|
map1["height"] = 100;
|
|
|
|
dynamic map2 = dynamic::object;
|
|
map2["height"] = nullptr;
|
|
|
|
auto result = mergeDynamicProps(map1, map2);
|
|
|
|
EXPECT_TRUE(result["height"].isNull());
|
|
}
|