From 18cb6d0e35b568e06ebe14d24b975c090dd9cde2 Mon Sep 17 00:00:00 2001 From: zakalyukinalexander_ac40 Date: Tue, 12 Aug 2025 14:44:47 +0300 Subject: [PATCH] Added unit tests for Matrix4Transit Signed-off-by: zakalyukinalexander_ac40 --- test/unittest/capi/accessors/BUILD.gn | 1 + .../accessors/click_event_accessor_test.cpp | 41 ++ .../matrix4_transit_accessor_test.cpp | 427 ++++++++++++++++++ .../accessors/touch_event_accessor_test.cpp | 6 - .../calendar_picker_modifier_test.cpp | 52 +++ .../capi/modifiers/image_modifier_test2.cpp | 29 ++ .../capi/modifiers/list_modifier_test.cpp | 33 ++ 7 files changed, 583 insertions(+), 6 deletions(-) create mode 100644 test/unittest/capi/accessors/matrix4_transit_accessor_test.cpp diff --git a/test/unittest/capi/accessors/BUILD.gn b/test/unittest/capi/accessors/BUILD.gn index 8b3db42681b..ef030b81af8 100644 --- a/test/unittest/capi/accessors/BUILD.gn +++ b/test/unittest/capi/accessors/BUILD.gn @@ -94,6 +94,7 @@ ace_unittest("capi_all_accessors_test") { "long_press_gesture_interface_accessor_test.cpp", "long_press_recognizer_accessor_test.cpp", "matrix2d_accessor_test.cpp", + "matrix4_transit_accessor_test.cpp", "mouse_event_accessor_test.cpp", #"mutable_styled_string_accessor_test.cpp", "nav_destination_context_accessor_test.cpp", diff --git a/test/unittest/capi/accessors/click_event_accessor_test.cpp b/test/unittest/capi/accessors/click_event_accessor_test.cpp index 4b90e29cb06..28a00dfdb46 100644 --- a/test/unittest/capi/accessors/click_event_accessor_test.cpp +++ b/test/unittest/capi/accessors/click_event_accessor_test.cpp @@ -30,6 +30,10 @@ using namespace AccessorTestFixtures; namespace { const double EPSILON = 0.00001; + + const int32_t HAND_NONE = 0; + const int32_t HAND_LEFT = 1; + const int32_t HAND_RIGHT = 2; } // namespace class ClickEventAccessorTest : public AccessorTestBase(callback); } + +/** + * @tc.name: GetHandTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(ClickEventAccessorTest, GetHandTest, TestSize.Level1) +{ + Opt_InteractionHand optResult = accessor_->getHand(peer_); + auto result = Converter::OptConvert(optResult); + ASSERT_TRUE(result); + EXPECT_EQ(result.value(), ARK_INTERACTION_HAND_NONE); + + FingerInfo left1 = { .operatingHand_ = HAND_LEFT }; + FingerInfo left2 = { .operatingHand_ = HAND_LEFT }; + FingerInfo right1 = { .operatingHand_ = HAND_RIGHT }; + FingerInfo right2 = { .operatingHand_ = HAND_RIGHT }; + FingerInfo none = { .operatingHand_ = HAND_NONE }; + + auto check = [this](std::list fingerList, Ark_InteractionHand expected) { + GestureEvent* eventInfo = peer_->GetEventInfo(); + ASSERT_NE(eventInfo, nullptr); + eventInfo->SetFingerList(fingerList); + Opt_InteractionHand optResult = accessor_->getHand(peer_); + auto result = Converter::OptConvert(optResult); + ASSERT_TRUE(result); + EXPECT_EQ(result.value(), expected); + }; + + check({ left1 }, ARK_INTERACTION_HAND_LEFT); + check({ right1 }, ARK_INTERACTION_HAND_RIGHT); + check({}, ARK_INTERACTION_HAND_NONE); + check({ none }, ARK_INTERACTION_HAND_NONE); + check({ right1, left1, left2 }, ARK_INTERACTION_HAND_LEFT); + check({ right1, right2, left1, none }, ARK_INTERACTION_HAND_RIGHT); + check({ right1, left1 }, ARK_INTERACTION_HAND_NONE); +} } \ No newline at end of file diff --git a/test/unittest/capi/accessors/matrix4_transit_accessor_test.cpp b/test/unittest/capi/accessors/matrix4_transit_accessor_test.cpp new file mode 100644 index 00000000000..11dfedd3647 --- /dev/null +++ b/test/unittest/capi/accessors/matrix4_transit_accessor_test.cpp @@ -0,0 +1,427 @@ +/* + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "gmock/gmock.h" + +#include "accessor_test_base.h" +#include "core/interfaces/native/implementation/matrix4_transit_peer.h" + +namespace OHOS::Ace::NG { + +using namespace testing; +using namespace testing::ext; + +class Matrix4TransitAccessorTest : public AccessorTestBase< + GENERATED_ArkUIMatrix4TransitAccessor, + &GENERATED_ArkUIAccessors::getMatrix4TransitAccessor, + Matrix4TransitPeer> { +public: + void SetUp() override + { + AccessorTestBase::SetUp(); + } + + void TearDown() override + { + AccessorTestBase::TearDown(); + } +}; + +/** + * @tc.name: copyTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, copyTest, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateTranslate(7.0, 8.0, 0.0); + + Matrix4TransitPeer* result = accessor_->copy(peer_); + EXPECT_NE(result, peer_); // check that new object is created + + EXPECT_EQ(result->matrix, peer_->matrix); +} + +/** + * @tc.name: invertTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, invertTest, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateScale(4.0, 5.0, 1.0); + + Matrix4TransitPeer* result = accessor_->invert(peer_); + EXPECT_EQ(result, peer_); + + auto expected = Matrix4::CreateScale(0.25, 0.2, 1.0); + EXPECT_EQ(result->matrix, expected); +} + +/** + * @tc.name: combineTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, combineTest, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateScale(3.0, 2.0, 1.0); + Matrix4TransitPeer* other = PeerUtils::CreatePeer(); + other->matrix = Matrix4::CreateTranslate(7.0, 8.0, 0.0); + + Matrix4TransitPeer* result = accessor_->combine(peer_, other); + EXPECT_EQ(result, peer_); + + Matrix4 expected( + 3.0, 0.0, 0.0, 7.0, + 0.0, 2.0, 0.0, 8.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0 + ); + EXPECT_EQ(result->matrix, expected); +} + +/** + * @tc.name: translateTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, translateTest, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateIdentity(); + + Ark_TranslateOption options = { + .x = Converter::ArkValue(5.0f), + .y = Converter::ArkValue(7.0f) + }; + + Matrix4TransitPeer* result = accessor_->translate(peer_, &options); + EXPECT_EQ(result, peer_); + + Point point = result->matrix * Point(0.0, 0.0); + EXPECT_FLOAT_EQ(point.GetX(), 5.0f); + EXPECT_FLOAT_EQ(point.GetY(), 7.0f); + + point = result->matrix * Point(-2.0, 4.0); + EXPECT_FLOAT_EQ(point.GetX(), 3.0f); + EXPECT_FLOAT_EQ(point.GetY(), 11.0f); +} + +/** + * @tc.name: translateTestExistingMatrixIsUsed + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, translateTestExistingMatrixIsUsed, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateScale(3.0, 2.0, 1.0); + + Ark_TranslateOption options = { + .x = Converter::ArkValue(5.0f), + .y = Converter::ArkValue(7.0f) + }; + + Matrix4TransitPeer* result = accessor_->translate(peer_, &options); + EXPECT_EQ(result, peer_); + + Matrix4 expected( + 3.0, 0.0, 0.0, 5.0, + 0.0, 2.0, 0.0, 7.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0 + ); + EXPECT_EQ(result->matrix, expected); +} + +/** + * @tc.name: scaleTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, scaleTest, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateIdentity(); + + Ark_ScaleOption options = { + .x = Converter::ArkValue(2.0f), + .y = Converter::ArkValue(5.0f), + .z = Converter::ArkValue(), + .centerX = Converter::ArkValue(), + .centerY = Converter::ArkValue(), + }; + + Matrix4TransitPeer* result = accessor_->scale(peer_, &options); + EXPECT_EQ(result, peer_); + + Point point = result->matrix * Point(3.0, 2.0); + EXPECT_FLOAT_EQ(point.GetX(), 6.0f); + EXPECT_FLOAT_EQ(point.GetY(), 10.0f); +} + +/** + * @tc.name: scaleTestExistingMatrixIsUsed + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, scaleTestExistingMatrixIsUsed, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateScale(3.0, 2.0, 1.0); + + Ark_ScaleOption options = { + .x = Converter::ArkValue(2.0f), + .y = Converter::ArkValue(5.0f), + .z = Converter::ArkValue(), + .centerX = Converter::ArkValue(), + .centerY = Converter::ArkValue(), + }; + + Matrix4TransitPeer* result = accessor_->scale(peer_, &options); + EXPECT_EQ(result, peer_); + + Matrix4 expected( + 6.0, 0.0, 0.0, 0.0, + 0.0, 10.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0 + ); + EXPECT_EQ(result->matrix, expected); +} + +/** + * @tc.name: scaleTestCenterSpecified + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, scaleTestCenterSpecified, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateIdentity(); + + Ark_ScaleOption options = { + .x = Converter::ArkValue(2.0f), + .y = Converter::ArkValue(0.5f), + .z = Converter::ArkValue(), + .centerX = Converter::ArkValue(1.0f), + .centerY = Converter::ArkValue(2.0f), + }; + + Matrix4TransitPeer* result = accessor_->scale(peer_, &options); + EXPECT_EQ(result, peer_); + + Point point = result->matrix * Point(3.0, 1.0); + EXPECT_FLOAT_EQ(point.GetX(), 5.0f); + EXPECT_FLOAT_EQ(point.GetY(), 1.5f); +} + +/** + * @tc.name: skewTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, skewTest, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateIdentity(); + + auto factorX = Converter::ArkValue(2.0f); + auto factorY = Converter::ArkValue(3.0f); + + Matrix4TransitPeer* result = accessor_->skew(peer_, &factorX, &factorY); + EXPECT_EQ(result, peer_); + + Point point = result->matrix * Point(5.0, 7.0); + EXPECT_FLOAT_EQ(point.GetX(), 19.0f); // new_x == old_x + factorX * old_y + EXPECT_FLOAT_EQ(point.GetY(), 22.0f); // new_y == old_y + factorY * old_x +} + +/** + * @tc.name: skewTestExistingMatrixIsUsed + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, skewTestExistingMatrixIsUsed, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateScale(3.0, 2.0, 1.0); + + auto factorX = Converter::ArkValue(4.0f); + auto factorY = Converter::ArkValue(5.0f); + + Matrix4TransitPeer* result = accessor_->skew(peer_, &factorX, &factorY); + EXPECT_EQ(result, peer_); + + Matrix4 expected( + 3.0, 8.0, 0.0, 0.0, + 15.0, 2.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0 + ); + EXPECT_EQ(result->matrix, expected); +} + +/** + * @tc.name: rotateTestAxisX + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, rotateTestAxisX, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateIdentity(); + + // Rotate by 30 degrees around X-axis + Ark_RotateOption options = { + .x = Converter::ArkValue(1.0f), + .y = Converter::ArkValue(), + .z = Converter::ArkValue(), + .centerX = Converter::ArkValue(), + .centerY = Converter::ArkValue(), + .angle = Converter::ArkValue(30.0f) + }; + + Matrix4TransitPeer* result = accessor_->rotate(peer_, &options); + EXPECT_EQ(result, peer_); + + Point point = result->matrix * Point(2.0, 1.0); + EXPECT_FLOAT_EQ(point.GetX(), 2.0); + EXPECT_FLOAT_EQ(point.GetY(), std::sqrt(3) / 2); +} + +/** + * @tc.name: rotateTestAxisY + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, rotateTestAxisY, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateIdentity(); + + // Rotate by 30 degrees around Y-axis + Ark_RotateOption options = { + .x = Converter::ArkValue(), + .y = Converter::ArkValue(1.0f), + .z = Converter::ArkValue(), + .centerX = Converter::ArkValue(), + .centerY = Converter::ArkValue(), + .angle = Converter::ArkValue(30.0f) + }; + + Matrix4TransitPeer* result = accessor_->rotate(peer_, &options); + EXPECT_EQ(result, peer_); + + Point point = result->matrix * Point(2.0, 1.0); + EXPECT_FLOAT_EQ(point.GetX(), std::sqrt(3)); + EXPECT_FLOAT_EQ(point.GetY(), 1.0); +} + +/** + * @tc.name: rotateTestAxisZ + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, rotateTestAxisZ, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateIdentity(); + + // Rotate by 45 degrees around Z-axis + Ark_RotateOption options = { + .x = Converter::ArkValue(), + .y = Converter::ArkValue(), + .z = Converter::ArkValue(1.0f), + .centerX = Converter::ArkValue(), + .centerY = Converter::ArkValue(), + .angle = Converter::ArkValue(45.0f) + }; + + Matrix4TransitPeer* result = accessor_->rotate(peer_, &options); + EXPECT_EQ(result, peer_); + + Point point = result->matrix * Point(1.0, 0.0); + EXPECT_FLOAT_EQ(point.GetX(), 1 / std::sqrt(2)); + EXPECT_FLOAT_EQ(point.GetY(), 1 / std::sqrt(2)); +} + +/** + * @tc.name: rotateTestExistingMatrixIsUsed + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, rotateTestExistingMatrixIsUsed, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateTranslate(7.0, 8.0, 0.0); + + // Rotate by 180 degrees around Z-axis + Ark_RotateOption options = { + .x = Converter::ArkValue(), + .y = Converter::ArkValue(), + .z = Converter::ArkValue(1.0f), + .centerX = Converter::ArkValue(), + .centerY = Converter::ArkValue(), + .angle = Converter::ArkValue(180.0f) + }; + + Matrix4TransitPeer* result = accessor_->rotate(peer_, &options); + EXPECT_EQ(result, peer_); + + Matrix4 expected( + -1.0, 0.0, 0.0, -7.0, + 0.0, -1.0, 0.0, -8.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0 + ); + EXPECT_EQ(result->matrix, expected); +} + +/** + * @tc.name: rotateTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, rotateTestCenterSpecified, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateIdentity(); + + // Rotate by 45 degrees around Z-axis + Ark_RotateOption options = { + .x = Converter::ArkValue(), + .y = Converter::ArkValue(), + .z = Converter::ArkValue(1.0f), + .centerX = Converter::ArkValue(2.0f), + .centerY = Converter::ArkValue(1.0f), + .angle = Converter::ArkValue(45.0f) + }; + + Matrix4TransitPeer* result = accessor_->rotate(peer_, &options); + EXPECT_EQ(result, peer_); + + Point point = result->matrix * Point(3.0, 1.0); + EXPECT_FLOAT_EQ(point.GetX(), 2 + 1 / std::sqrt(2)); + EXPECT_FLOAT_EQ(point.GetY(), 1 + 1 / std::sqrt(2)); +} + +/** + * @tc.name: transformPointTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(Matrix4TransitAccessorTest, transformPointTest, TestSize.Level1) +{ + peer_->matrix = Matrix4::CreateTranslate(10.0, 20.0, 0.0); + + auto options = Converter::ArkValue(Point(3.0, 5.0)); + + Ark_Tuple_Number_Number result = accessor_->transformPoint(peer_, &options); + auto point = Converter::Convert(result); + EXPECT_FLOAT_EQ(point.GetX(), 13.0f); + EXPECT_FLOAT_EQ(point.GetY(), 25.0f); +} + +} // namespace OHOS::Ace::NG \ No newline at end of file diff --git a/test/unittest/capi/accessors/touch_event_accessor_test.cpp b/test/unittest/capi/accessors/touch_event_accessor_test.cpp index c2073d7f1fa..b3062b90646 100644 --- a/test/unittest/capi/accessors/touch_event_accessor_test.cpp +++ b/test/unittest/capi/accessors/touch_event_accessor_test.cpp @@ -156,8 +156,6 @@ HWTEST_F(TouchEventAccessorTest, DISABLED_GetHistoricalPointsTest, TestSize.Leve ASSERT_NE(history.array, nullptr); EXPECT_EQ(Converter::Convert(history.array->touchObject.displayX), expectedDisplayX); EXPECT_EQ(Converter::Convert(history.array->touchObject.displayY), expectedDisplayY); - EXPECT_EQ(Converter::Convert(history.array->touchObject.screenX), expectedWindowX); - EXPECT_EQ(Converter::Convert(history.array->touchObject.screenY), expectedWindowY); EXPECT_EQ(Converter::Convert(history.array->touchObject.windowX), expectedWindowX); EXPECT_EQ(Converter::Convert(history.array->touchObject.windowY), expectedWindowY); EXPECT_EQ(Converter::Convert(history.array->touchObject.x), expectedX); @@ -204,8 +202,6 @@ HWTEST_F(TouchEventAccessorTest, DISABLED_GetTouchesTest, TestSize.Level1) ASSERT_NE(touches.array, nullptr); EXPECT_EQ(Converter::Convert(touches.array->displayX), expectedDisplayX); EXPECT_EQ(Converter::Convert(touches.array->displayY), expectedDisplayY); - EXPECT_EQ(Converter::Convert(touches.array->screenX), expectedWindowX); - EXPECT_EQ(Converter::Convert(touches.array->screenY), expectedWindowY); EXPECT_EQ(Converter::Convert(touches.array->windowX), expectedWindowX); EXPECT_EQ(Converter::Convert(touches.array->windowY), expectedWindowY); EXPECT_EQ(Converter::Convert(touches.array->x), expectedX); @@ -249,8 +245,6 @@ HWTEST_F(TouchEventAccessorTest, DISABLED_GetChangedTouchesTest, TestSize.Level1 ASSERT_NE(touches.array, nullptr); EXPECT_EQ(Converter::Convert(touches.array->displayX), expectedDisplayX); EXPECT_EQ(Converter::Convert(touches.array->displayY), expectedDisplayY); - EXPECT_EQ(Converter::Convert(touches.array->screenX), expectedWindowX); - EXPECT_EQ(Converter::Convert(touches.array->screenY), expectedWindowY); EXPECT_EQ(Converter::Convert(touches.array->windowX), expectedWindowX); EXPECT_EQ(Converter::Convert(touches.array->windowY), expectedWindowY); EXPECT_EQ(Converter::Convert(touches.array->x), expectedX); diff --git a/test/unittest/capi/modifiers/calendar_picker_modifier_test.cpp b/test/unittest/capi/modifiers/calendar_picker_modifier_test.cpp index 072496700e7..983d686c478 100644 --- a/test/unittest/capi/modifiers/calendar_picker_modifier_test.cpp +++ b/test/unittest/capi/modifiers/calendar_picker_modifier_test.cpp @@ -42,6 +42,8 @@ const auto ATTRIBUTE_FONT_SIZE_NAME = "size"; const auto ATTRIBUTE_FONT_WEIGHT_NAME = "weight"; const auto ATTRIBUTE_HINT_RADIUS_NAME = "hintRadius"; const auto ATTRIBUTE_SELECTED_NAME = "selected"; +const auto ATTRIBUTE_MARK_TODAY_NAME = "markToday"; +const auto ATTRIBUTE_MARK_TODAY_DEFAULT_VALUE = "false"; const auto RES_COLOR_ID = IntResourceId{102001, Converter::ResourceType::COLOR}; const auto RES_COLOR_ID_VALUE = Color(0xFF654321); @@ -364,4 +366,54 @@ HWTEST_F(CalendarPickerModifierTest, setOnChangeTest, TestSize.Level1) }; } +/* + * @tc.name: setMarkTodayTestDefaultValues + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(CalendarPickerModifierTest, setMarkTodayTestDefaultValues, TestSize.Level1) +{ + std::unique_ptr jsonValue = GetJsonValue(node_); + std::string resultStr; + + resultStr = GetAttrValue(jsonValue, ATTRIBUTE_MARK_TODAY_NAME); + EXPECT_EQ(resultStr, ATTRIBUTE_MARK_TODAY_DEFAULT_VALUE) << "Default value for attribute 'markToday'"; +} + +std::vector> testFixtureBooleanValidValues = { + { "true", Converter::ArkValue(true), "true" }, + { "false", Converter::ArkValue(false), "false" }, + { "true", Converter::ArkValue(true), "true" }, + { "Ark_Empty", Converter::ArkValue(Ark_Empty()), "false" }, +}; + +/* + * @tc.name: setMarkTodayTestMarkTodayValidValues + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(CalendarPickerModifierTest, setMarkTodayTestMarkTodayValidValues, TestSize.Level1) +{ + Opt_Boolean initValueMarkToday; + + // Initial setup + initValueMarkToday = std::get<1>(testFixtureBooleanValidValues[0]); + + auto checkValue = [this, &initValueMarkToday]( + const std::string& input, const std::string& expectedStr, const Opt_Boolean& value) { + Opt_Boolean inputValueMarkToday = initValueMarkToday; + + inputValueMarkToday = value; + modifier_->setMarkToday(node_, &inputValueMarkToday); + auto jsonValue = GetJsonValue(node_); + auto resultStr = GetAttrValue(jsonValue, ATTRIBUTE_MARK_TODAY_NAME); + EXPECT_EQ(resultStr, expectedStr) << + "Input value is: " << input << ", method: setMarkToday, attribute: markToday"; + }; + + for (auto& [input, value, expected] : testFixtureBooleanValidValues) { + checkValue(input, expected, value); + } +} + } // namespace OHOS::Ace::NG diff --git a/test/unittest/capi/modifiers/image_modifier_test2.cpp b/test/unittest/capi/modifiers/image_modifier_test2.cpp index df6a1c0d2bf..83375e13039 100644 --- a/test/unittest/capi/modifiers/image_modifier_test2.cpp +++ b/test/unittest/capi/modifiers/image_modifier_test2.cpp @@ -18,6 +18,7 @@ #include "modifier_test_base.h" #include "modifiers_test_utils.h" #include "core/components_ng/pattern/image/image_event_hub.h" +#include "core/interfaces/native/implementation/matrix4_transit_peer.h" #include "generated/test_fixtures.h" #include "point_light_test.h" #include "generated/type_helpers.h" @@ -153,4 +154,32 @@ HWTEST_F(ImageModifierTest2, setAlt_PixelMapUnion_Test, TestSize.Level1) EXPECT_EQ(resultPixelMap, expectedPixelMapRefPtr); } +/** + * @tc.name: setImageMatrixTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(ImageModifierTest2, setImageMatrixTest, TestSize.Level1) +{ + Matrix4TransitPeer* matrix4transit = PeerUtils::CreatePeer(); + matrix4transit->matrix = Matrix4::CreateScale(11.0, 7.0, 1.0); + auto optValue = Converter::ArkValue(matrix4transit); + + modifier_->setImageMatrix(node_, &optValue); + + auto frameNode = reinterpret_cast(node_); + ASSERT_NE(frameNode, nullptr); + auto property = frameNode->GetPaintProperty(); + ASSERT_NE(property, nullptr); + auto result = property->GetImageMatrix(); + ASSERT_TRUE(result); + Matrix4 expected( + 11.0, 0.0, 0.0, 0.0, + 0.0, 7.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0 + ); + EXPECT_EQ(result.value(), expected); +} + } // namespace OHOS::Ace::NG diff --git a/test/unittest/capi/modifiers/list_modifier_test.cpp b/test/unittest/capi/modifiers/list_modifier_test.cpp index 8618b180440..6408e2df206 100644 --- a/test/unittest/capi/modifiers/list_modifier_test.cpp +++ b/test/unittest/capi/modifiers/list_modifier_test.cpp @@ -19,6 +19,7 @@ #include "base/geometry/dimension.h" #include "core/components/common/layout/constants.h" #include "core/components_ng/pattern/list/list_event_hub.h" +#include "core/components_ng/pattern/list/list_layout_property.h" #include "core/components_ng/pattern/scrollable/scrollable_theme.h" #include "core/components_v2/list/list_properties.h" @@ -1515,4 +1516,36 @@ HWTEST_F(ListModifierTest, setOnScrollVisibleContentChangeTest, TestSize.Level1) EXPECT_EQ(checkEvent->end.area, ListItemGroupArea::IN_FOOTER_AREA); EXPECT_EQ(checkEvent->end.indexInGroup, 99); } + +/* + * @tc.name: setStackFromEndTest + * @tc.desc: + * @tc.type: FUNC + */ +HWTEST_F(ListModifierTest, setStackFromEndTest, TestSize.Level1) +{ + auto frameNode = reinterpret_cast(node_); + ASSERT_NE(frameNode, nullptr); + auto property = frameNode->GetLayoutProperty(); + ASSERT_NE(property, nullptr); + + std::optional result; + auto value = Converter::ArkValue(Ark_Empty()); + + modifier_->setStackFromEnd(node_, &value); + result = property->GetStackFromEnd(); + ASSERT_FALSE(result); + + value = Converter::ArkValue(true); + modifier_->setStackFromEnd(node_, &value); + result = property->GetStackFromEnd(); + ASSERT_TRUE(result); + EXPECT_EQ(result.value(), true); + + value = Converter::ArkValue(false); + modifier_->setStackFromEnd(node_, &value); + result = property->GetStackFromEnd(); + ASSERT_TRUE(result); + EXPECT_EQ(result.value(), false); +} } // namespace OHOS::Ace::NG -- Gitee