1 /*
2 * Copyright (c) 2022-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 "publisher_item_test.h"
17
18 #include "publisher.h"
19
20 using namespace testing::ext;
21 using namespace std;
22 namespace OHOS {
23 namespace DistributedHardware {
24 namespace {
25 constexpr uint32_t MESSAGE_LEN = 40 * 1024 * 1024 + 10;
26 }
27
SetUpTestCase(void)28 void PublisherItemTest::SetUpTestCase(void) {}
29
TearDownTestCase(void)30 void PublisherItemTest::TearDownTestCase(void) {}
31
SetUp()32 void PublisherItemTest::SetUp() {}
33
TearDown()34 void PublisherItemTest::TearDown() {}
35
36 /**
37 * @tc.name: AddListener_001
38 * @tc.desc: Verify the AddListener ToJson function.
39 * @tc.type: FUNC
40 * @tc.require: AR000GHSCV
41 */
42 HWTEST_F(PublisherItemTest, AddListener_001, TestSize.Level1)
43 {
44 PublisherItem item(DHTopic::TOPIC_MIN);
45 sptr<IPublisherListener> listener = nullptr;
46 item.AddListener(listener);
47 EXPECT_EQ(true, item.listeners_.empty());
48 }
49
50 /**
51 * @tc.name: AddListener_002
52 * @tc.desc: Verify the AddListener ToJson function.
53 * @tc.type: FUNC
54 * @tc.require: AR000GHSCV
55 */
56 HWTEST_F(PublisherItemTest, AddListener_002, TestSize.Level1)
57 {
58 PublisherItem item(DHTopic::TOPIC_MIN);
59 sptr<IPublisherListener> listener(new (std::nothrow) MockIPublisherListener());
60 ASSERT_TRUE(listener != nullptr);
61 item.AddListener(listener);
62 EXPECT_EQ(false, item.listeners_.empty());
63 }
64
65 /**
66 * @tc.name: RemoveListener_001
67 * @tc.desc: Verify the RemoveListener ToJson function.
68 * @tc.type: FUNC
69 * @tc.require: AR000GHSCV
70 */
71 HWTEST_F(PublisherItemTest, RemoveListener_001, TestSize.Level1)
72 {
73 PublisherItem item(DHTopic::TOPIC_MIN);
74 sptr<IPublisherListener> listener = nullptr;
75 item.RemoveListener(listener);
76 EXPECT_EQ(true, item.listeners_.empty());
77
78 sptr<IPublisherListener> listener1(new (std::nothrow) MockIPublisherListener());
79 ASSERT_TRUE(listener1 != nullptr);
80 item.AddListener(listener1);
81 item.RemoveListener(listener1);
82 EXPECT_EQ(true, item.listeners_.empty());
83 }
84
85 /**
86 * @tc.name: PublishMessage_001
87 * @tc.desc: Verify the PublishMessage ToJson function.
88 * @tc.type: FUNC
89 * @tc.require: AR000GHSCV
90 */
91 HWTEST_F(PublisherItemTest, PublishMessage_001, TestSize.Level1)
92 {
93 PublisherItem item(DHTopic::TOPIC_MIN);
94 std::string message = "";
95 item.PublishMessage(message);
96 EXPECT_EQ(true, item.listeners_.empty());
97
98 std::string msg(MESSAGE_LEN, 'a');
99 item.PublishMessage(msg);
100 EXPECT_EQ(true, item.listeners_.empty());
101 }
102
103 /**
104 * @tc.name: PublishMessage_002
105 * @tc.desc: Verify the PublishMessage ToJson function.
106 * @tc.type: FUNC
107 * @tc.require: AR000GHSCV
108 */
109 HWTEST_F(PublisherItemTest, PublishMessage_002, TestSize.Level1)
110 {
111 PublisherItem item(DHTopic::TOPIC_MIN);
112 std::string message = "message";
113 sptr<IPublisherListener> listener(new (std::nothrow) MockIPublisherListener());
114 ASSERT_TRUE(listener != nullptr);
115 item.AddListener(listener);
116 item.PublishMessage(message);
117 EXPECT_EQ(false, item.listeners_.empty());
118 }
119
120 HWTEST_F(PublisherItemTest, RegisterListener_001, TestSize.Level1)
121 {
122 DHTopic topic = DHTopic::TOPIC_MIN;
123 sptr<IPublisherListener> listener(new (std::nothrow) MockIPublisherListener());
124 ASSERT_TRUE(listener != nullptr);
125 EXPECT_NO_FATAL_FAILURE(Publisher::GetInstance().RegisterListener(topic, listener));
126 }
127
128 HWTEST_F(PublisherItemTest, RegisterListener_002, TestSize.Level1)
129 {
130 DHTopic topic = DHTopic::TOPIC_LOW_LATENCY;
131 sptr<IPublisherListener> listener(new (std::nothrow) MockIPublisherListener());
132 ASSERT_TRUE(listener != nullptr);
133 EXPECT_NO_FATAL_FAILURE(Publisher::GetInstance().RegisterListener(topic, listener));
134 }
135
136 HWTEST_F(PublisherItemTest, UnregisterListener_001, TestSize.Level1)
137 {
138 DHTopic topic = DHTopic::TOPIC_MIN;
139 sptr<IPublisherListener> listener(new (std::nothrow) MockIPublisherListener());
140 ASSERT_TRUE(listener != nullptr);
141 EXPECT_NO_FATAL_FAILURE(Publisher::GetInstance().UnregisterListener(topic, listener));
142 }
143
144 HWTEST_F(PublisherItemTest, UnregisterListener_002, TestSize.Level1)
145 {
146 DHTopic topic = DHTopic::TOPIC_LOW_LATENCY;
147 sptr<IPublisherListener> listener(new (std::nothrow) MockIPublisherListener());
148 ASSERT_TRUE(listener != nullptr);
149 EXPECT_NO_FATAL_FAILURE(Publisher::GetInstance().UnregisterListener(topic, listener));
150 }
151
152 HWTEST_F(PublisherItemTest, Publisher_PublishMessage_001, TestSize.Level1)
153 {
154 DHTopic topic = DHTopic::TOPIC_MIN;
155 std::string message = "message_test";
156 EXPECT_NO_FATAL_FAILURE(Publisher::GetInstance().PublishMessage(topic, message));
157 }
158
159 HWTEST_F(PublisherItemTest, Publisher_PublishMessage_002, TestSize.Level1)
160 {
161 DHTopic topic = DHTopic::TOPIC_LOW_LATENCY;
162 std::string message = "message_test";
163 EXPECT_NO_FATAL_FAILURE(Publisher::GetInstance().PublishMessage(topic, message));
164 }
165 } // namespace DistributedHardware
166 } // namespace OHOS
167