From 177e1473350864454afbd1262b7884ceb3e5fdd7 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Tue, 2 Feb 2021 14:15:51 -0800 Subject: [PATCH] Add tests for AttributedStringBox Summary: Changelog: [internal] Reviewed By: JoshuaGross Differential Revision: D26168698 fbshipit-source-id: 4416c01a3d4b3721964e2c73e145fb346f45a66a --- .../tests/AttributedStringBoxTest.cpp | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 ReactCommon/react/renderer/attributedstring/tests/AttributedStringBoxTest.cpp diff --git a/ReactCommon/react/renderer/attributedstring/tests/AttributedStringBoxTest.cpp b/ReactCommon/react/renderer/attributedstring/tests/AttributedStringBoxTest.cpp new file mode 100644 index 00000000000..493598b2c42 --- /dev/null +++ b/ReactCommon/react/renderer/attributedstring/tests/AttributedStringBoxTest.cpp @@ -0,0 +1,105 @@ +/* + * 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 + +#include +#include + +namespace facebook { +namespace react { + +TEST(AttributedStringBoxTest, testDefaultConstructor) { + auto attributedStringBox = AttributedStringBox{}; + + EXPECT_EQ(attributedStringBox.getMode(), AttributedStringBox::Mode::Value); + EXPECT_EQ(attributedStringBox.getValue(), AttributedString{}); +} + +TEST(AttributedStringBoxTest, testValueConstructor) { + auto attributedString = AttributedString{}; + auto fragment = AttributedString::Fragment{}; + fragment.string = "test string"; + attributedString.appendFragment(fragment); + auto attributedStringBox = AttributedStringBox{attributedString}; + + EXPECT_EQ(attributedStringBox.getMode(), AttributedStringBox::Mode::Value); + EXPECT_EQ(attributedStringBox.getValue(), attributedString); +} + +TEST(AttributedStringBoxTest, testOpaquePointerConstructor) { + auto string = std::make_shared("test string"); + auto attributedStringBox = AttributedStringBox{string}; + + EXPECT_EQ( + attributedStringBox.getMode(), AttributedStringBox::Mode::OpaquePointer); + EXPECT_EQ(attributedStringBox.getOpaquePointer(), string); + EXPECT_EQ(string.use_count(), 2); +} + +TEST(AttributedStringBoxTest, testMoveConstructor) { + { + auto string = std::make_shared("test string"); + auto movedFromAttributedStringBox = AttributedStringBox{string}; + + auto moveToAttributedStringBox = + AttributedStringBox{std::move(movedFromAttributedStringBox)}; + + EXPECT_EQ( + moveToAttributedStringBox.getMode(), + AttributedStringBox::Mode::OpaquePointer); + EXPECT_EQ(moveToAttributedStringBox.getOpaquePointer(), string); + EXPECT_EQ(string.use_count(), 2); + } + { + auto attributedString = AttributedString{}; + auto fragment = AttributedString::Fragment{}; + fragment.string = "test string"; + attributedString.appendFragment(fragment); + auto movedFromAttributedStringBox = AttributedStringBox{attributedString}; + + auto moveToAttributedStringBox = + AttributedStringBox{std::move(movedFromAttributedStringBox)}; + + EXPECT_EQ( + moveToAttributedStringBox.getMode(), AttributedStringBox::Mode::Value); + EXPECT_EQ(moveToAttributedStringBox.getValue(), attributedString); + } +} + +TEST(AttributedStringBoxTest, testMoveAssignment) { + { + auto string = std::make_shared("test string"); + auto movedFromAttributedStringBox = AttributedStringBox{string}; + + auto movedToAttributedStringBox = AttributedStringBox{}; + movedToAttributedStringBox = std::move(movedFromAttributedStringBox); + + EXPECT_EQ( + movedToAttributedStringBox.getMode(), + AttributedStringBox::Mode::OpaquePointer); + EXPECT_EQ(movedToAttributedStringBox.getOpaquePointer(), string); + EXPECT_EQ(string.use_count(), 2); + } + { + auto attributedString = AttributedString{}; + auto fragment = AttributedString::Fragment{}; + fragment.string = "test string"; + attributedString.appendFragment(fragment); + auto movedFromAttributedStringBox = AttributedStringBox{attributedString}; + + auto moveToAttributedStringBox = AttributedStringBox{}; + moveToAttributedStringBox = std::move(movedFromAttributedStringBox); + + EXPECT_EQ( + moveToAttributedStringBox.getMode(), AttributedStringBox::Mode::Value); + EXPECT_EQ(moveToAttributedStringBox.getValue(), attributedString); + } +} + +} // namespace react +} // namespace facebook