From 5d8d24ab30c70192775babb58ae7746307a00f48 Mon Sep 17 00:00:00 2001 From: l00517909 Date: Sat, 21 Jun 2025 20:21:06 +0800 Subject: [PATCH] fix picker accessbility and add UT Signed-off-by: l00517909 Change-Id: Iabffc67f3a489d37b13c0a8e2b4b58240bf2f54e --- .../pattern/picker/datepicker_pattern.cpp | 12 ++++ .../picker_utils/picker_column_pattern.cpp | 21 ++++--- .../picker_utils/picker_column_pattern.h | 1 + .../text_picker/textpicker_column_pattern.cpp | 21 ++++--- .../text_picker/textpicker_column_pattern.h | 1 + .../text_picker/textpicker_pattern.cpp | 5 ++ .../time_picker/timepicker_row_pattern.cpp | 18 ++++++ .../core/pattern/image/image_testthree_ng.cpp | 61 +++++++++++++++++++ .../patternlock/patternlock_test_ng.cpp | 35 +++++++++++ 9 files changed, 161 insertions(+), 14 deletions(-) diff --git a/frameworks/core/components_ng/pattern/picker/datepicker_pattern.cpp b/frameworks/core/components_ng/pattern/picker/datepicker_pattern.cpp index 38623aeca7a..f3a2bb6792a 100644 --- a/frameworks/core/components_ng/pattern/picker/datepicker_pattern.cpp +++ b/frameworks/core/components_ng/pattern/picker/datepicker_pattern.cpp @@ -2238,6 +2238,7 @@ void DatePickerPattern::LunarColumnsBuilding(const LunarDate& current) auto datePickerColumnPattern = yearColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[yearColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[yearColumn].emplace_back(PickerDateF::CreateYear(index)); } @@ -2254,6 +2255,7 @@ void DatePickerPattern::LunarColumnsBuilding(const LunarDate& current) auto datePickerColumnPattern = monthColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[monthColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[monthColumn].emplace_back(PickerDateF::CreateMonth(index, true, false)); @@ -2262,6 +2264,7 @@ void DatePickerPattern::LunarColumnsBuilding(const LunarDate& current) auto datePickerColumnPattern = monthColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[monthColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[monthColumn].emplace_back(PickerDateF::CreateMonth(index, true, true)); } @@ -2277,6 +2280,7 @@ void DatePickerPattern::LunarColumnsBuilding(const LunarDate& current) auto datePickerColumnPattern = dayColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[dayColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[dayColumn].emplace_back(PickerDateF::CreateDay(index, true)); } @@ -2359,6 +2363,7 @@ void DatePickerPattern::SolarColumnsBuilding(const PickerDate& current) auto datePickerColumnPattern = yearColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[yearColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[yearColumn].emplace_back(PickerDateF::CreateYear(year)); } @@ -2374,6 +2379,7 @@ void DatePickerPattern::SolarColumnsBuilding(const PickerDate& current) CHECK_NULL_VOID(datePickerColumnPattern); // back index = size - 1 datePickerColumnPattern->SetCurrentIndex(options_[monthColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[monthColumn].emplace_back(PickerDateF::CreateMonth(month, false, false)); @@ -2389,6 +2395,7 @@ void DatePickerPattern::SolarColumnsBuilding(const PickerDate& current) auto datePickerColumnPattern = dayColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[dayColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[dayColumn].emplace_back(PickerDateF::CreateDay(day, false)); } @@ -2451,6 +2458,7 @@ void DatePickerPattern::LunarMonthDaysColumnBuilding(const LunarDate& current) auto datePickerColumnPattern = yearColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[yearColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[yearColumn].emplace_back(PickerDateF::CreateYear(index)); } @@ -2508,6 +2516,7 @@ void DatePickerPattern::SolarMonthDaysColumnsBuilding(const PickerDate& current) auto datePickerColumnPattern = monthDaysColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[monthDaysColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[monthDaysColumn].emplace_back(PickerDateF::CreateMonthDay(index, dayIndex, false, false)); } @@ -2531,6 +2540,7 @@ void DatePickerPattern::FillSolarYearOptions(const PickerDate& current, RefPtrGetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[yearColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[yearColumn].emplace_back(PickerDateF::CreateYear(year)); } @@ -2553,6 +2563,7 @@ void DatePickerPattern::FillLunarMonthDaysOptions(const LunarDate& current, RefP auto datePickerColumnPattern = monthDaysColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[monthDaysColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[monthDaysColumn].emplace_back(PickerDateF::CreateMonthDay(index, dayIndex, true, false)); } @@ -2567,6 +2578,7 @@ void DatePickerPattern::FillLunarMonthDaysOptions(const LunarDate& current, RefP auto datePickerColumnPattern = monthDaysColumn->GetPattern(); CHECK_NULL_VOID(datePickerColumnPattern); datePickerColumnPattern->SetCurrentIndex(options_[monthDaysColumn].size()); + datePickerColumnPattern->HandleAccessibilityTextChange(); } options_[monthDaysColumn].emplace_back(PickerDateF::CreateMonthDay(index, dayIndex, true, true)); } diff --git a/frameworks/core/components_ng/pattern/picker_utils/picker_column_pattern.cpp b/frameworks/core/components_ng/pattern/picker_utils/picker_column_pattern.cpp index f51e0cad960..da0be69c7c6 100644 --- a/frameworks/core/components_ng/pattern/picker_utils/picker_column_pattern.cpp +++ b/frameworks/core/components_ng/pattern/picker_utils/picker_column_pattern.cpp @@ -352,6 +352,19 @@ Dimension PickerColumnPattern::LinearFontSize( } } +void PickerColumnPattern::HandleAccessibilityTextChange() +{ + auto host = GetHost(); + CHECK_NULL_VOID(host); + auto blendNode = DynamicCast(host->GetParent()); + CHECK_NULL_VOID(blendNode); + auto accessibilityProperty = blendNode->GetAccessibilityProperty(); + CHECK_NULL_VOID(accessibilityProperty); + accessibilityProperty->SetUserTextValue(GetCurrentOption()); + accessibilityProperty->SetAccessibilityText(GetCurrentOption()); + blendNode->OnAccessibilityEvent(AccessibilityEventType::TEXT_CHANGE); +} + bool PickerColumnPattern::InnerHandleScroll(bool isDown, bool isUpatePropertiesOnly, bool isUpdateAnimationProperties) { auto host = GetHost(); @@ -376,13 +389,7 @@ bool PickerColumnPattern::InnerHandleScroll(bool isDown, bool isUpatePropertiesO HandleChangeCallback(isDown, true); HandleEventCallback(true); - auto blendNode = DynamicCast(host->GetParent()); - CHECK_NULL_RETURN(blendNode, false); - auto accessibilityProperty = blendNode->GetAccessibilityProperty(); - CHECK_NULL_RETURN(accessibilityProperty, false); - accessibilityProperty->SetUserTextValue(GetCurrentOption()); - accessibilityProperty->SetAccessibilityText(GetCurrentOption()); - blendNode->OnAccessibilityEvent(AccessibilityEventType::TEXT_CHANGE); + HandleAccessibilityTextChange(); return true; } diff --git a/frameworks/core/components_ng/pattern/picker_utils/picker_column_pattern.h b/frameworks/core/components_ng/pattern/picker_utils/picker_column_pattern.h index b852488ffe6..35260ebbb8c 100644 --- a/frameworks/core/components_ng/pattern/picker_utils/picker_column_pattern.h +++ b/frameworks/core/components_ng/pattern/picker_utils/picker_column_pattern.h @@ -313,6 +313,7 @@ public: virtual float GetShiftDistance(uint32_t index, PickerScrollDirection dir); virtual void UpdateTextPropertiesLinear(bool isDown, double scale); virtual void UpdateToss(double offsetY); + virtual void HandleAccessibilityTextChange(); #ifdef SUPPORT_DIGITAL_CROWN virtual void HandleCrownBeginEvent(const CrownEvent& event); virtual void HandleCrownMoveEvent(const CrownEvent& event); diff --git a/frameworks/core/components_ng/pattern/text_picker/textpicker_column_pattern.cpp b/frameworks/core/components_ng/pattern/text_picker/textpicker_column_pattern.cpp index c6da0ea6fa9..9db0129819b 100644 --- a/frameworks/core/components_ng/pattern/text_picker/textpicker_column_pattern.cpp +++ b/frameworks/core/components_ng/pattern/text_picker/textpicker_column_pattern.cpp @@ -1932,6 +1932,19 @@ bool TextPickerColumnPattern::NotLoopOptions() const return !canLoop; } +void TextPickerColumnPattern::HandleAccessibilityTextChange() +{ + auto host = GetHost(); + CHECK_NULL_VOID(host); + auto blendNode = DynamicCast(host->GetParent()); + CHECK_NULL_VOID(blendNode); + auto accessibilityProperty = blendNode->GetAccessibilityProperty(); + CHECK_NULL_VOID(accessibilityProperty); + accessibilityProperty->SetUserTextValue(GetOption(GetCurrentIndex())); + accessibilityProperty->SetAccessibilityText(GetOption(GetCurrentIndex())); + blendNode->OnAccessibilityEvent(AccessibilityEventType::TEXT_CHANGE); +} + bool TextPickerColumnPattern::InnerHandleScroll( bool isDown, bool isUpdatePropertiesOnly, bool isUpdateAnimationProperties) { @@ -1963,13 +1976,7 @@ bool TextPickerColumnPattern::InnerHandleScroll( host->MarkDirtyNode(PROPERTY_UPDATE_MEASURE_SELF_AND_CHILD); - auto blendNode = DynamicCast(host->GetParent()); - CHECK_NULL_RETURN(blendNode, false); - auto accessibilityProperty = blendNode->GetAccessibilityProperty(); - CHECK_NULL_RETURN(accessibilityProperty, false); - accessibilityProperty->SetUserTextValue(GetOption(GetCurrentIndex())); - accessibilityProperty->SetAccessibilityText(GetOption(GetCurrentIndex())); - blendNode->OnAccessibilityEvent(AccessibilityEventType::TEXT_CHANGE); + HandleAccessibilityTextChange(); return true; } diff --git a/frameworks/core/components_ng/pattern/text_picker/textpicker_column_pattern.h b/frameworks/core/components_ng/pattern/text_picker/textpicker_column_pattern.h index bfd99364f06..1a410b60097 100644 --- a/frameworks/core/components_ng/pattern/text_picker/textpicker_column_pattern.h +++ b/frameworks/core/components_ng/pattern/text_picker/textpicker_column_pattern.h @@ -419,6 +419,7 @@ public: void SetSelectedMarkId(const int strColumnId); void UpdateUserSetSelectColor(void); void StopHaptic(); + void HandleAccessibilityTextChange(); #ifdef SUPPORT_DIGITAL_CROWN int32_t& GetSelectedColumnId(); bool IsCrownEventEnded(); diff --git a/frameworks/core/components_ng/pattern/text_picker/textpicker_pattern.cpp b/frameworks/core/components_ng/pattern/text_picker/textpicker_pattern.cpp index 6ed1fb6793f..258450c635c 100644 --- a/frameworks/core/components_ng/pattern/text_picker/textpicker_pattern.cpp +++ b/frameworks/core/components_ng/pattern/text_picker/textpicker_pattern.cpp @@ -917,6 +917,7 @@ void TextPickerPattern::OnColumnsBuildingCascade() isNeedUpdateSelectedIndex_ ? selectedIndex_ : textPickerColumnPattern->GetCurrentIndex()); textPickerColumnPattern->SetEnterIndex( isNeedUpdateSelectedIndex_ ? selectedIndex_ : textPickerColumnPattern->GetCurrentIndex()); + textPickerColumnPattern->HandleAccessibilityTextChange(); std::vector rangeContents; for (uint32_t i = 0; i < cascadeOptions_[index].rangeResult.size(); i++) { NG::RangeContent rangeContent; @@ -945,6 +946,7 @@ void TextPickerPattern::OnColumnsBuildingUnCascade() isNeedUpdateSelectedIndex_ ? selectedIndex_ : textPickerColumnPattern->GetCurrentIndex()); textPickerColumnPattern->SetEnterIndex( isNeedUpdateSelectedIndex_ ? selectedIndex_ : textPickerColumnPattern->GetCurrentIndex()); + textPickerColumnPattern->HandleAccessibilityTextChange(); std::vector rangeContents; for (uint32_t i = 0; i < cascadeOptions_[it.first].rangeResult.size(); i++) { NG::RangeContent rangeContent; @@ -965,6 +967,7 @@ void TextPickerPattern::OnColumnsBuildingUnCascade() isNeedUpdateSelectedIndex_ ? selectedIndex_ : textPickerColumnPattern->GetCurrentIndex()); textPickerColumnPattern->SetEnterIndex( isNeedUpdateSelectedIndex_ ? selectedIndex_ : textPickerColumnPattern->GetCurrentIndex()); + textPickerColumnPattern->HandleAccessibilityTextChange(); textPickerColumnPattern->SetOptions(options_); textPickerColumnPattern->SetColumnKind(columnsKind_); it.second->MarkDirtyNode(PROPERTY_UPDATE_MEASURE); @@ -1383,10 +1386,12 @@ void TextPickerPattern::HandleColumnChange(const RefPtr& tag, bool is SupplementOption(reOptions, rangeContents, patterIndex); textPickerColumnPattern->SetCurrentIndex(currentSelectedIndex); textPickerColumnPattern->SetOptions(rangeContents); + textPickerColumnPattern->HandleAccessibilityTextChange(); textPickerColumnPattern->FlushCurrentOptions(); } else { textPickerColumnPattern->ClearOptions(); textPickerColumnPattern->SetCurrentIndex(0); + textPickerColumnPattern->HandleAccessibilityTextChange(); textPickerColumnPattern->FlushCurrentOptions(false, false, true); } } diff --git a/frameworks/core/components_ng/pattern/time_picker/timepicker_row_pattern.cpp b/frameworks/core/components_ng/pattern/time_picker/timepicker_row_pattern.cpp index 093bdb325cb..efd7f52422d 100644 --- a/frameworks/core/components_ng/pattern/time_picker/timepicker_row_pattern.cpp +++ b/frameworks/core/components_ng/pattern/time_picker/timepicker_row_pattern.cpp @@ -864,6 +864,7 @@ void TimePickerRowPattern::UpdateHourAndMinuteTimeRange(const RefPtr& } hourColumnPattern->SetCurrentIndex(newIndex); hourColumnPattern->SetEnterIndex(newIndex); + hourColumnPattern->HandleAccessibilityTextChange(); } oldHourValue_ = GetOptionsCurrentValue(hourColumn); @@ -884,6 +885,7 @@ void TimePickerRowPattern::UpdateHourAndMinuteTimeRange(const RefPtr& } minuteColumnPattern->SetCurrentIndex(newIndex); minuteColumnPattern->SetEnterIndex(newIndex); + minuteColumnPattern->HandleAccessibilityTextChange(); } oldMinuteValue_ = GetOptionsCurrentValue(minuteColumn); } @@ -1337,6 +1339,7 @@ void TimePickerRowPattern::HandleHourColumnBuilding() if (hour == selectedTime_.GetHour()) { hourColumnPattern->SetCurrentIndex(hour); hourColumnPattern->SetEnterIndex(hour); + hourColumnPattern->HandleAccessibilityTextChange(); } optionsTotalCount_[hourColumn]++; } @@ -1356,9 +1359,11 @@ void TimePickerRowPattern::HandleHourColumnBuilding() if (IsAmHour(selectedTime_.GetHour())) { amPmColumnPattern->SetCurrentIndex(0); // AM's index amPmColumnPattern->SetEnterIndex(0); + amPmColumnPattern->HandleAccessibilityTextChange(); } else { amPmColumnPattern->SetCurrentIndex(1); // PM's index amPmColumnPattern->SetEnterIndex(1); + amPmColumnPattern->HandleAccessibilityTextChange(); } optionsTotalCount_[amPmColumn] = CHILD_WITHOUT_AMPM_SIZE; auto selectedHour = GetAmPmHour(selectedTime_.GetHour()); @@ -1366,6 +1371,7 @@ void TimePickerRowPattern::HandleHourColumnBuilding() if (hour == selectedHour) { hourColumnPattern->SetCurrentIndex(hour - 1); hourColumnPattern->SetEnterIndex(hour - 1); + hourColumnPattern->HandleAccessibilityTextChange(); } optionsTotalCount_[hourColumn]++; } @@ -1406,6 +1412,7 @@ void TimePickerRowPattern::MinOrSecColumnBuilding( if (time == selectedTime) { columnPattern->SetCurrentIndex(time); columnPattern->SetEnterIndex(time); + columnPattern->HandleAccessibilityTextChange(); } optionsTotalCount_[columnFrameNode]++; } @@ -1486,6 +1493,7 @@ void TimePickerRowPattern::HandleHourColumnBuildingRange(const PickerTime& value if (hour == value.GetHour()) { hourColumnPattern->SetCurrentIndex(hour - startHour); hourColumnPattern->SetEnterIndex(hour - startHour); + hourColumnPattern->HandleAccessibilityTextChange(); } optionsTotalCount_[hourColumn]++; } @@ -1515,9 +1523,11 @@ void TimePickerRowPattern::HandleAmPmColumnBuilding(const PickerTime& value) if (IsAmHour(value.GetHour())) { amPmColumnPattern->SetCurrentIndex(0); // AM's index amPmColumnPattern->SetEnterIndex(0); + amPmColumnPattern->HandleAccessibilityTextChange(); } else { amPmColumnPattern->SetCurrentIndex(1); // PM's index amPmColumnPattern->SetEnterIndex(1); + amPmColumnPattern->HandleAccessibilityTextChange(); } optionsTotalCount_[amPmColumn] = CHILD_WITHOUT_AMPM_SIZE; if (startTime_.ToMinutes() == START_DEFAULT_TIME.ToMinutes() && @@ -1527,6 +1537,7 @@ void TimePickerRowPattern::HandleAmPmColumnBuilding(const PickerTime& value) if (hour == selectedHour) { hourColumnPattern->SetCurrentIndex(hour - 1); hourColumnPattern->SetEnterIndex(hour - 1); + hourColumnPattern->HandleAccessibilityTextChange(); } optionsTotalCount_[hourColumn]++; } @@ -1582,6 +1593,7 @@ void TimePickerRowPattern::HandleAmToPmHourColumnBuilding(uint32_t selectedHour, if (hour == selectedParseHour) { hourColumnPattern->SetCurrentIndex(hour - startHour); hourColumnPattern->SetEnterIndex(hour - startHour); + hourColumnPattern->HandleAccessibilityTextChange(); } optionsTotalCount_[hourColumn]++; } @@ -1598,6 +1610,7 @@ void TimePickerRowPattern::HandleMinAndSecColumnBuildingRange() CHECK_NULL_VOID(secondColumnPattern); secondColumnPattern->SetCurrentIndex(selectedTime_.GetSecond()); secondColumnPattern->SetEnterIndex(selectedTime_.GetSecond()); + secondColumnPattern->HandleAccessibilityTextChange(); } void TimePickerRowPattern::HandleMinColumnChange(const PickerTime& value) @@ -1621,6 +1634,7 @@ void TimePickerRowPattern::HandleMinColumnChange(const PickerTime& value) if (minute == value.GetMinute()) { minuteColumnPattern->SetCurrentIndex(minute - startMinue); minuteColumnPattern->SetEnterIndex(minute - startMinue); + minuteColumnPattern->HandleAccessibilityTextChange(); } optionsTotalCount_[minuteColumn]++; } @@ -1826,21 +1840,25 @@ void TimePickerRowPattern::HandleHour12Change(bool isAdd, uint32_t index, std::v if (amPmPickerColumnPattern->GetCurrentIndex() == 0 && isAdd && index == 11) { // hour index start from 0 to 11 amPmPickerColumnPattern->SetCurrentIndex(1); // add to PM's index + amPmPickerColumnPattern->HandleAccessibilityTextChange(); resultTags.emplace_back(amPm); return; } if (amPmPickerColumnPattern->GetCurrentIndex() == 1 && !isAdd && index == 10) { // reduce to 11 hour (index is 10) amPmPickerColumnPattern->SetCurrentIndex(0); // change to AM whose index is 0 + amPmPickerColumnPattern->HandleAccessibilityTextChange(); resultTags.emplace_back(amPm); return; } if (amPmPickerColumnPattern->GetCurrentIndex() == 1 && isAdd && index == 11) { amPmPickerColumnPattern->SetCurrentIndex(0); // is PM (index is 1) and last hour (index is 11) + amPmPickerColumnPattern->HandleAccessibilityTextChange(); resultTags.emplace_back(amPm); // change to PM (index is 0) return; } if (amPmPickerColumnPattern->GetCurrentIndex() == 0 && !isAdd && index == 10) { // reduce to 11 hour(index is 10) amPmPickerColumnPattern->SetCurrentIndex(1); // change to PM + amPmPickerColumnPattern->HandleAccessibilityTextChange(); resultTags.emplace_back(amPm); return; } diff --git a/test/unittest/core/pattern/image/image_testthree_ng.cpp b/test/unittest/core/pattern/image/image_testthree_ng.cpp index e9813e85eb2..c23f3de1765 100644 --- a/test/unittest/core/pattern/image/image_testthree_ng.cpp +++ b/test/unittest/core/pattern/image/image_testthree_ng.cpp @@ -1407,6 +1407,67 @@ HWTEST_F(ImageTestThreeNg, ImagePatternGetImageColorFilterStr, TestSize.Level0) EXPECT_STREQ(str1.c_str(), str2.c_str()); } +/** + * @tc.name: ImagePatternGetSrcTypeToString001 + * @tc.desc: call GetSrcTypeToString. + * @tc.type: FUNC + */ +HWTEST_F(ImageTestThreeNg, ImagePatternGetSrcTypeToString001, TestSize.Level0) +{ + /** + * @tc.steps: step1. create Image frameNode and imagePattern. + */ + auto frameNode = ImageTestThreeNg::CreateImageNode(IMAGE_SRC_URL, ALT_SRC_URL); + ASSERT_NE(frameNode, nullptr); + auto imagePattern = frameNode->GetPattern(); + ASSERT_NE(imagePattern, nullptr); + + /** + * @tc.steps: step2. SrcType value should be we set. + */ + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::UNSUPPORTED).c_str(), "unsupported"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::FILE).c_str(), "file"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::ASSET).c_str(), "asset"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::NETWORK).c_str(), "network"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::MEMORY).c_str(), "memory"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::BASE64).c_str(), "base64"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::INTERNAL).c_str(), "internal"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::RESOURCE).c_str(), "resource"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::DATA_ABILITY).c_str(), "dataAbility"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::DATA_ABILITY_DECODED).c_str(), "dataAbilityDecoded"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::RESOURCE_ID).c_str(), "resourceId"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::PIXMAP).c_str(), "pixmap"); + EXPECT_STREQ(imagePattern->GetSrcTypeToString(SrcType::ASTC).c_str(), "astc"); +} + +/** + * @tc.name: ImagePatternGetSrcTypeToString002 + * @tc.desc: call GetSrcTypeToString with error type. + * @tc.type: FUNC + */ +HWTEST_F(ImageTestThreeNg, ImagePatternGetSrcTypeToString002, TestSize.Level0) +{ + /** + * @tc.steps: step1. create Image frameNode and imagePattern. + */ + auto frameNode = ImageTestThreeNg::CreateImageNode(IMAGE_SRC_URL, ALT_SRC_URL); + ASSERT_NE(frameNode, nullptr); + auto imagePattern = frameNode->GetPattern(); + ASSERT_NE(imagePattern, nullptr); + std::string retStr; + + /** + * @tc.steps: step2. call GetSrcTypeToString with error value. + */ + auto errType = static_cast(99); + retStr = imagePattern->GetSrcTypeToString(errType); + + /** + * @tc.steps: step3. SrcType value should be null string. + */ + EXPECT_STREQ(retStr.c_str(), ""); +} + /** * @tc.name: ImagePatternSetImageAnalyzerConfig * @tc.desc: call SetImageAnalyzerConfig. diff --git a/test/unittest/core/pattern/patternlock/patternlock_test_ng.cpp b/test/unittest/core/pattern/patternlock/patternlock_test_ng.cpp index 6f256c64d6a..738ba43fbbc 100644 --- a/test/unittest/core/pattern/patternlock/patternlock_test_ng.cpp +++ b/test/unittest/core/pattern/patternlock/patternlock_test_ng.cpp @@ -1662,4 +1662,39 @@ HWTEST_F(PatternLockTestNg, PatternLockTestCreateWithResourceObj001, TestSize.Le EXPECT_EQ(layoutProperty->GetRegularColor(), testColor); } + +/** + * @tc.name: PatternLockTestGetTouchOffsetToNode001 + * @tc.desc: Test GetTouchOffsetToNode + * @tc.type: FUNC + */ +HWTEST_F(PatternLockTestNg, PatternLockTestGetTouchOffsetToNode001, TestSize.Level1) +{ + /** + * @tc.steps: step1. create PatternLock ModelNG and Pattern. + */ + PatternLockModelNG model; + model.Create(); + auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode(); + ASSERT_NE(frameNode, nullptr); + auto pattern = frameNode->GetPattern(); + ASSERT_NE(pattern, nullptr); + + /** + * @tc.steps: step2. set offset location. + */ + float offsetX = 0.0f; + float offsetY = 0.0f; + Offset offset(offsetX, offsetY); + TouchLocationInfo locationInfo(0); + locationInfo.SetLocalLocation(offset); + + /** + * @tc.steps: step3. call GetTouchOffsetToNode. + * @tc.expected: (0,0). + */ + auto NodeOffset = pattern->GetTouchOffsetToNode(); + auto offsetZero = OffsetF(0.0f, 0.0f); + EXPECT_EQ(NodeOffset, offsetZero); +} } // namespace OHOS::Ace::NG -- Gitee