Files
react-native/ReactCommon/fabric/core/tests/PrimitivesTest.cpp
T
Valentin Shergin cc07baa87e Fabric: "Attempt to mutate a sealed object." is now an assert (not exception)
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
2020-04-17 21:20:04 -07:00

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());
}