mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
cc07baa87e
Summary: This is a debug-only feature that simply should be an assert. When it triggers in debugger and bubbles to some random exception catch block which makes it impossible to understand was exactly it happens. Making it an assert will stop debugger exactly where it happens. Changelog: [Internal] Fabric-specific internal change. Reviewed By: mdvacca Differential Revision: D21028571 fbshipit-source-id: 3df4ec0da922026bb9df61081cb71113577e06e9
47 lines
1.0 KiB
C++
47 lines
1.0 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 <exception>
|
|
|
|
#include <gtest/gtest.h>
|
|
#include <react/core/Sealable.h>
|
|
|
|
using namespace facebook::react;
|
|
|
|
TEST(SealableTest, sealObjectCorrectly) {
|
|
Sealable obj;
|
|
EXPECT_FALSE(obj.getSealed());
|
|
|
|
obj.seal();
|
|
EXPECT_TRUE(obj.getSealed());
|
|
}
|
|
|
|
TEST(SealableTest, handleAssignmentsCorrectly) {
|
|
Sealable obj;
|
|
Sealable other;
|
|
|
|
// Should work fine.
|
|
obj = other;
|
|
|
|
// Assignment after getting sealed is not allowed.
|
|
obj.seal();
|
|
Sealable other2;
|
|
|
|
EXPECT_DEATH_IF_SUPPORTED(
|
|
{ obj = other2; }, "Attempt to mutate a sealed object.");
|
|
|
|
// It doesn't matter if the other object is also sealed, it's still not
|
|
// allowed.
|
|
other2.seal();
|
|
EXPECT_DEATH_IF_SUPPORTED(
|
|
{ obj = other2; }, "Attempt to mutate a sealed object.");
|
|
|
|
// Fresh creation off other Sealable is still unsealed.
|
|
Sealable other3(obj);
|
|
EXPECT_FALSE(other3.getSealed());
|
|
}
|