1 /*
2 * Copyright (c) 2024-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 #ifdef NOTIFICATION_SMART_REMINDER_SUPPORTED
16 #include "gtest/gtest.h"
17 #define private public
18 #include "reminder_swing_decision_center.h"
19 #include "notification_preferences.h"
20 #include "smart_reminder_center.h"
21 #include "reminder_affected.h"
22 #undef private
23 #include "mock_swing_callback_stub.h"
24
25 using namespace testing::ext;
26 namespace OHOS {
27 namespace Notification {
28
29 class ReminderSwingDecisionCenterTest : public testing::Test {
30 public:
ReminderSwingDecisionCenterTest()31 ReminderSwingDecisionCenterTest()
32 {}
~ReminderSwingDecisionCenterTest()33 ~ReminderSwingDecisionCenterTest()
34 {}
SetUpTestCas(void)35 static void SetUpTestCas(void) {};
TearDownTestCase(void)36 static void TearDownTestCase(void) {};
37 void SetUp();
TearDown()38 void TearDown() {};
39 public:
40 ReminderSwingDecisionCenter reminderSwingDecisionCenter_;
41 };
42
SetUp(void)43 void ReminderSwingDecisionCenterTest::SetUp(void)
44 {
45 reminderSwingDecisionCenter_ = ReminderSwingDecisionCenter::GetInstance();
46 }
47
48 /**
49 * @tc.name: RegisterSwingCallback_00001
50 * @tc.desc: Test RegisterSwingCallback
51 * @tc.type: FUNC
52 */
53 HWTEST_F(ReminderSwingDecisionCenterTest, RegisterSwingCallback_00001, Function | SmallTest | Level1)
54 {
55 sptr<IRemoteObject> swingCallback = nullptr;
56 auto ret = reminderSwingDecisionCenter_.RegisterSwingCallback(swingCallback);
57 ASSERT_EQ(ret, (int)ERR_INVALID_VALUE);
58 }
59
60 /**
61 * @tc.name: RegisterSwingCallback_00002
62 * @tc.desc: Test RegisterSwingCallback
63 * @tc.type: FUNC
64 */
65 HWTEST_F(ReminderSwingDecisionCenterTest, RegisterSwingCallback_00002, Function | SmallTest | Level1)
66 {
67 auto swingCallbackProxy = new (std::nothrow)MockSwingCallBackStub();
68 EXPECT_NE(swingCallbackProxy, nullptr);
69 sptr<IRemoteObject> swingCallback = swingCallbackProxy->AsObject();
70 int ret = reminderSwingDecisionCenter_.RegisterSwingCallback(swingCallback);
71 ASSERT_EQ(ret, (int)ERR_OK);
72 }
73
74 HWTEST_F(ReminderSwingDecisionCenterTest, NormalResetSwingCallbackProxyTest, Function | SmallTest | Level1)
75 {
76 // Arrange
77 reminderSwingDecisionCenter_.swingCallback_ = new (std::nothrow)MockSwingCallBackStub();
78 reminderSwingDecisionCenter_.swingRecipient_ = new (std::nothrow)SwingCallbackRecipient();
79
80 // Act
81 reminderSwingDecisionCenter_.ResetSwingCallbackProxy();
82
83 // Assert
84 EXPECT_EQ(reminderSwingDecisionCenter_.swingCallback_, nullptr);
85 EXPECT_NE(reminderSwingDecisionCenter_.swingRecipient_, nullptr);
86 }
87
88 // 测试ResetSwingCallbackProxy方法 - swingCallback_为nullptr
89 HWTEST_F(ReminderSwingDecisionCenterTest, NullSwingCallbackResetSwingCallbackProxyTest, Function | SmallTest | Level1)
90 {
91 // Arrange
92 reminderSwingDecisionCenter_.swingCallback_ = nullptr;
93 reminderSwingDecisionCenter_.swingRecipient_ = new (std::nothrow)SwingCallbackRecipient();
94
95 // Act
96 reminderSwingDecisionCenter_.ResetSwingCallbackProxy();
97
98 // Assert
99 EXPECT_EQ(reminderSwingDecisionCenter_.swingCallback_, nullptr);
100 EXPECT_NE(reminderSwingDecisionCenter_.swingRecipient_, nullptr);
101 }
102
103 // 测试ResetSwingCallbackProxy方法 - swingRecipient_为nullptr
104 HWTEST_F(ReminderSwingDecisionCenterTest, NullSwingRecipientResetSwingCallbackProxyTest, Function | SmallTest | Level1)
105 {
106 // Arrange
107 reminderSwingDecisionCenter_.swingCallback_ = new (std::nothrow)MockSwingCallBackStub();
108 reminderSwingDecisionCenter_.swingRecipient_ = nullptr;
109
110 // Act
111 reminderSwingDecisionCenter_.ResetSwingCallbackProxy();
112
113 // Assert
114 EXPECT_EQ(reminderSwingDecisionCenter_.swingCallback_, nullptr);
115 EXPECT_EQ(reminderSwingDecisionCenter_.swingRecipient_, nullptr);
116 }
117
118 // 测试ResetSwingCallbackProxy方法 - 所有指针都为nullptr
119 HWTEST_F(ReminderSwingDecisionCenterTest, AllNullResetSwingCallbackProxyTest, Function | SmallTest | Level1)
120 {
121 // Arrange
122 reminderSwingDecisionCenter_.swingCallback_ = nullptr;
123 reminderSwingDecisionCenter_.swingRecipient_ = nullptr;
124
125 // Act
126 reminderSwingDecisionCenter_.ResetSwingCallbackProxy();
127
128 // Assert
129 EXPECT_EQ(reminderSwingDecisionCenter_.swingCallback_, nullptr);
130 EXPECT_EQ(reminderSwingDecisionCenter_.swingRecipient_, nullptr);
131 }
132 } //namespace Notification
133 } //namespace OHOS
134 #endif