• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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