1 /* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <gtest/gtest.h> 17 #include "define_multimodal.h" 18 #include "i_knuckle_drawing.h" 19 #include "knuckle_drawing.h" 20 21 using namespace testing::ext; 22 using namespace OHOS::MMI; 23 24 extern "C" IKnuckleDrawing *GetKnuckleDrawing(); 25 extern "C" void DestroyKnuckleDrawing(IKnuckleDrawing *inst); 26 27 namespace OHOS { 28 namespace MMI { 29 30 class KnuckleDrawingTest : public testing::Test { 31 public: SetUpTestCase(void)32 static void SetUpTestCase(void) {}; TearDownTestCase(void)33 static void TearDownTestCase(void) {}; SetUp(void)34 void SetUp(void) {} 35 }; 36 37 /** 38 * @tc.name: KnuckleDrawingTest_GetKnuckleDrawing 39 * @tc.desc: Test Overrides GetKnuckleDrawing and DestroyKnuckleDrawing function branches 40 * @tc.type: Function 41 * @tc.require: 42 */ 43 HWTEST_F(KnuckleDrawingTest, KnuckleDrawingTest_GetKnuckleDrawing, TestSize.Level1) 44 { 45 IKnuckleDrawing *knuckleDrawing = GetKnuckleDrawing(); 46 ASSERT_NE(knuckleDrawing, nullptr); 47 48 DestroyKnuckleDrawing(knuckleDrawing); 49 knuckleDrawing = nullptr; 50 51 DestroyKnuckleDrawing(knuckleDrawing); 52 } 53 54 /** 55 * @tc.name: KnuckleDrawingTest_Draw 56 * @tc.desc: Test Overrides Draw function branches 57 * @tc.type: Function 58 * @tc.require: 59 */ 60 HWTEST_F(KnuckleDrawingTest, KnuckleDrawingTest_Draw, TestSize.Level1) 61 { 62 std::shared_ptr<KnuckleDrawing> knuckleDrawing = std::make_shared<KnuckleDrawing>(); 63 ASSERT_NE(knuckleDrawing, nullptr); 64 ASSERT_NE(knuckleDrawing->knuckleDrawingMgr_, nullptr); 65 66 OLD::DisplayInfo info; 67 auto pointerEvent = PointerEvent::Create(); 68 knuckleDrawing->Draw(info, pointerEvent); 69 ASSERT_EQ(knuckleDrawing->knuckleDrawingMgr_->screenReadObserver_, nullptr); 70 71 knuckleDrawing->knuckleDrawingMgr_ = nullptr; 72 knuckleDrawing->Draw(info, pointerEvent); 73 } 74 75 /** 76 * @tc.name: KnuckleDrawingTest_SetMultiWindowScreenId 77 * @tc.desc: Test Overrides SetMultiWindowScreenId function branches 78 * @tc.type: Function 79 * @tc.require: 80 */ 81 HWTEST_F(KnuckleDrawingTest, KnuckleDrawingTest_SetMultiWindowScreenId, TestSize.Level1) 82 { 83 std::shared_ptr<KnuckleDrawing> knuckleDrawing = std::make_shared<KnuckleDrawing>(); 84 ASSERT_NE(knuckleDrawing, nullptr); 85 ASSERT_NE(knuckleDrawing->knuckleDrawingMgr_, nullptr); 86 87 uint64_t screenId = 0; 88 uint64_t displayNodeScreenId = 0; 89 knuckleDrawing->SetMultiWindowScreenId(screenId, displayNodeScreenId); 90 ASSERT_EQ(knuckleDrawing->knuckleDrawingMgr_->screenReadObserver_, nullptr); 91 92 knuckleDrawing->knuckleDrawingMgr_ = nullptr; 93 knuckleDrawing->SetMultiWindowScreenId(screenId, displayNodeScreenId); 94 } 95 96 /** 97 * @tc.name: KnuckleDrawingTest_RegisterAddTimer_001 98 * @tc.desc: Test Overrides RegisterAddTimer function branches 99 * @tc.type: Function 100 * @tc.require: 101 */ 102 HWTEST_F(KnuckleDrawingTest, KnuckleDrawingTest_RegisterAddTimer_001, TestSize.Level1) 103 { 104 std::shared_ptr<KnuckleDrawing> knuckleDrawing = std::make_shared<KnuckleDrawing>(); 105 ASSERT_NE(knuckleDrawing, nullptr); 106 ASSERT_NE(knuckleDrawing->knuckleDrawingMgr_, nullptr); 107 108 auto addTimerFunc = [] __anonba438c1f0102(int32_t intervalMs, int32_t repeatCount, std::function<void()> callback, const std::string &name) 109 (int32_t intervalMs, int32_t repeatCount, std::function<void()> callback, const std::string &name) -> int32_t { 110 (void)intervalMs; 111 (void)repeatCount; 112 (void)callback; 113 (void)name; 114 return RET_OK; 115 }; 116 knuckleDrawing->RegisterAddTimer(addTimerFunc); 117 ASSERT_TRUE(knuckleDrawing->knuckleDrawingMgr_->addTimerFunc_); 118 } 119 120 /** 121 * @tc.name: KnuckleDrawingTest_RegisterAddTimer_002 122 * @tc.desc: Test Overrides RegisterAddTimer function abnormal branches 123 * @tc.type: Function 124 * @tc.require: 125 */ 126 HWTEST_F(KnuckleDrawingTest, KnuckleDrawingTest_RegisterAddTimer_002, TestSize.Level1) 127 { 128 std::shared_ptr<KnuckleDrawing> knuckleDrawing = std::make_shared<KnuckleDrawing>(); 129 ASSERT_NE(knuckleDrawing, nullptr); 130 ASSERT_NE(knuckleDrawing->knuckleDrawingMgr_, nullptr); 131 std::shared_ptr<KnuckleDrawingManager> knuckleDrawingMgrTmp = knuckleDrawing->knuckleDrawingMgr_; 132 knuckleDrawing->knuckleDrawingMgr_ = nullptr; 133 134 auto addTimerFunc = [] __anonba438c1f0202(int32_t intervalMs, int32_t repeatCount, std::function<void()> callback, const std::string &name) 135 (int32_t intervalMs, int32_t repeatCount, std::function<void()> callback, const std::string &name) -> int32_t { 136 (void)intervalMs; 137 (void)repeatCount; 138 (void)callback; 139 (void)name; 140 return RET_OK; 141 }; 142 knuckleDrawing->RegisterAddTimer(addTimerFunc); 143 ASSERT_FALSE(knuckleDrawingMgrTmp->addTimerFunc_); 144 } 145 } // namespace MMI 146 } // namespace OHOS