mirror of
https://github.com/status-im/react-native.git
synced 2025-01-14 11:34:23 +00:00
Add assertion to ensure copied shadow nodes are of the same type as the original
Reviewed By: mdvacca Differential Revision: D7664638 fbshipit-source-id: e1b7acbafd8a8fd9d6301d8afbb3e5959dc15b7a
This commit is contained in:
parent
3145b1e62a
commit
1be2541ce2
@ -166,6 +166,9 @@ public class ReactShadowNodeImpl implements ReactShadowNode<ReactShadowNodeImpl>
|
||||
@Override
|
||||
public ReactShadowNodeImpl mutableCopy() {
|
||||
ReactShadowNodeImpl copy = copy();
|
||||
Assertions.assertCondition(
|
||||
getClass() == copy.getClass(),
|
||||
"Copied shadow node must use the same class");
|
||||
if (mYogaNode != null) {
|
||||
copy.mYogaNode = mYogaNode.clone();
|
||||
copy.mYogaNode.setData(copy);
|
||||
@ -182,6 +185,9 @@ public class ReactShadowNodeImpl implements ReactShadowNode<ReactShadowNodeImpl>
|
||||
@Override
|
||||
public ReactShadowNodeImpl mutableCopyWithNewChildren() {
|
||||
ReactShadowNodeImpl copy = copy();
|
||||
Assertions.assertCondition(
|
||||
getClass() == copy.getClass(),
|
||||
"Copied shadow node must use the same class");
|
||||
if (mYogaNode != null) {
|
||||
copy.mYogaNode = mYogaNode.cloneWithNewChildren();
|
||||
copy.mYogaNode.setData(copy);
|
||||
|
@ -0,0 +1,20 @@
|
||||
// Copyright 2004-present Facebook. All Rights Reserved.
|
||||
package com.facebook.react.fabric;
|
||||
|
||||
import com.facebook.react.uimanager.ReactShadowNodeImpl;
|
||||
import com.facebook.testing.robolectric.v3.WithTestDefaultsRunner;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
/** Tests {@link ReactShadowNode} */
|
||||
@RunWith(WithTestDefaultsRunner.class)
|
||||
public class ReactShadowNodeTest {
|
||||
|
||||
@Test(expected = AssertionError.class)
|
||||
public void testClonedInstance() {
|
||||
TestReactShadowNode node = new TestReactShadowNode();
|
||||
node.mutableCopy();
|
||||
}
|
||||
|
||||
private static class TestReactShadowNode extends ReactShadowNodeImpl {}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user