1 /*
2 * Copyright (c) 2022 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 <memory>
17
18 #include "gtest/gtest.h"
19
20 #define private public
21 #include "distributed_database_callback.h"
22
23 using namespace testing::ext;
24 namespace OHOS {
25 namespace Notification {
26 class DistributedDatabaseCallbackTest : public testing::Test {
27 public:
28 void SetUp() override;
29 void TearDown() override;
30
31 public:
32 virtual void OnInsert(const std::string &deviceId, const std::string &key, const std::string &value);
33 virtual void OnUpdate(const std::string &deviceId, const std::string &key, const std::string &value);
34 virtual void OnDelete(const std::string &deviceId, const std::string &key, const std::string &value);
35 };
36
SetUp()37 void DistributedDatabaseCallbackTest::SetUp()
38 {}
39
TearDown()40 void DistributedDatabaseCallbackTest::TearDown()
41 {}
42
OnInsert(const std::string & deviceId,const std::string & key,const std::string & value)43 void DistributedDatabaseCallbackTest::OnInsert(
44 const std::string &deviceId, const std::string &key, const std::string &value) {}
45
OnUpdate(const std::string & deviceId,const std::string & key,const std::string & value)46 void DistributedDatabaseCallbackTest::OnUpdate(
47 const std::string &deviceId, const std::string &key, const std::string &value) {}
48
OnDelete(const std::string & deviceId,const std::string & key,const std::string & value)49 void DistributedDatabaseCallbackTest::OnDelete(
50 const std::string &deviceId, const std::string &key, const std::string &value) {}
51
52 /**
53 * @tc.name : DistributedDatabaseCallback_00100
54 * @tc.number : DistributedDatabaseCallback_00100
55 * @tc.desc : test OnChange function and callback_.OnInsert is nullptr .
56 */
57 HWTEST_F(DistributedDatabaseCallbackTest, DistributedDatabaseCallback_00100, Function | SmallTest | Level1)
58 {
59 DistributedDatabaseCallback::IDatabaseChange databaseCallback = {
60 .OnInsert = std::bind(&DistributedDatabaseCallbackTest::OnInsert,
61 this,
62 std::placeholders::_1,
63 std::placeholders::_2,
64 std::placeholders::_3),
65 .OnUpdate = std::bind(&DistributedDatabaseCallbackTest::OnUpdate,
66 this,
67 std::placeholders::_1,
68 std::placeholders::_2,
69 std::placeholders::_3),
70 .OnDelete = std::bind(&DistributedDatabaseCallbackTest::OnDelete,
71 this,
72 std::placeholders::_1,
73 std::placeholders::_2,
74 std::placeholders::_3),
75 };
76 std::shared_ptr<DistributedDatabaseCallback> databaseCallback_ =
77 std::make_shared<DistributedDatabaseCallback>(databaseCallback);
78 ASSERT_NE(nullptr, databaseCallback_);
79 databaseCallback_->callback_.OnInsert = nullptr;
80 std::vector<DistributedKv::Entry> insertEntries;
81 std::vector<DistributedKv::Entry> updateEntries;
82 std::vector<DistributedKv::Entry> deleteEntries;
83 DistributedKv::ChangeNotification changeNotification(
84 std::move(insertEntries), std::move(updateEntries), std::move(deleteEntries), "<remoteDeviceId>", false);
85 databaseCallback_->OnChange(changeNotification);
86 }
87
88 /**
89 * @tc.name : DistributedDatabaseCallback_00200
90 * @tc.number : DistributedDatabaseCallback_00200
91 * @tc.desc : test OnChange function and callback_.OnUpdate is nullptr .
92 */
93 HWTEST_F(DistributedDatabaseCallbackTest, DistributedDatabaseCallback_00200, Function | SmallTest | Level1)
94 {
95 DistributedDatabaseCallback::IDatabaseChange databaseCallback = {
96 .OnInsert = std::bind(&DistributedDatabaseCallbackTest::OnInsert,
97 this,
98 std::placeholders::_1,
99 std::placeholders::_2,
100 std::placeholders::_3),
101 .OnUpdate = std::bind(&DistributedDatabaseCallbackTest::OnUpdate,
102 this,
103 std::placeholders::_1,
104 std::placeholders::_2,
105 std::placeholders::_3),
106 .OnDelete = std::bind(&DistributedDatabaseCallbackTest::OnDelete,
107 this,
108 std::placeholders::_1,
109 std::placeholders::_2,
110 std::placeholders::_3),
111 };
112 std::shared_ptr<DistributedDatabaseCallback> databaseCallback_ =
113 std::make_shared<DistributedDatabaseCallback>(databaseCallback);
114 ASSERT_NE(nullptr, databaseCallback_);
115 databaseCallback_->callback_.OnUpdate = nullptr;
116 std::vector<DistributedKv::Entry> insertEntries;
117 std::vector<DistributedKv::Entry> updateEntries;
118 std::vector<DistributedKv::Entry> deleteEntries;
119 DistributedKv::ChangeNotification changeNotification(
120 std::move(insertEntries), std::move(updateEntries), std::move(deleteEntries), "<remoteDeviceId>", false);
121 databaseCallback_->OnChange(changeNotification);
122 }
123
124 /**
125 * @tc.name : DistributedDatabaseCallback_00300
126 * @tc.number : DistributedDatabaseCallback_00300
127 * @tc.desc : test OnChange function and callback_.OnDelete is nullptr .
128 */
129 HWTEST_F(DistributedDatabaseCallbackTest, DistributedDatabaseCallback_00300, Function | SmallTest | Level1)
130 {
131 DistributedDatabaseCallback::IDatabaseChange databaseCallback = {
132 .OnInsert = std::bind(&DistributedDatabaseCallbackTest::OnInsert,
133 this,
134 std::placeholders::_1,
135 std::placeholders::_2,
136 std::placeholders::_3),
137 .OnUpdate = std::bind(&DistributedDatabaseCallbackTest::OnUpdate,
138 this,
139 std::placeholders::_1,
140 std::placeholders::_2,
141 std::placeholders::_3),
142 .OnDelete = std::bind(&DistributedDatabaseCallbackTest::OnDelete,
143 this,
144 std::placeholders::_1,
145 std::placeholders::_2,
146 std::placeholders::_3),
147 };
148 std::shared_ptr<DistributedDatabaseCallback> databaseCallback_ =
149 std::make_shared<DistributedDatabaseCallback>(databaseCallback);
150 ASSERT_NE(nullptr, databaseCallback_);
151 databaseCallback_->callback_.OnDelete = nullptr;
152 std::vector<DistributedKv::Entry> insertEntries;
153 std::vector<DistributedKv::Entry> updateEntries;
154 std::vector<DistributedKv::Entry> deleteEntries;
155 DistributedKv::ChangeNotification changeNotification(
156 std::move(insertEntries), std::move(updateEntries), std::move(deleteEntries), "<remoteDeviceId>", false);
157 databaseCallback_->OnChange(changeNotification);
158 }
159 } // namespace Notification
160 } // namespace OHOS