1 /*
2 * Copyright (c) 2021 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 "event_bus_test.h"
17
18 using namespace testing::ext;
19
20 namespace OHOS {
21 namespace DistributedHardware {
22 namespace {
23 FakeObject *g_obj = nullptr;
24 FakeSender *g_sender = nullptr;
25 FakeListener *g_listener = nullptr;
26 std::shared_ptr<OHOS::DistributedHardware::EventRegistration> g_regHandler = nullptr;
27 EventBus* g_eventBus = nullptr;
28 }
29
SetUpTestCase(void)30 void EventbusTest::SetUpTestCase(void)
31 {
32 }
33
TearDownTestCase(void)34 void EventbusTest::TearDownTestCase(void)
35 {
36 }
37
SetUp()38 void EventbusTest::SetUp()
39 {
40 g_obj = new FakeObject("Player");
41 g_listener = new FakeListener();
42 g_sender = new FakeSender();
43 g_regHandler = nullptr;
44 g_eventBus = new EventBus();
45 }
46
TearDown()47 void EventbusTest::TearDown()
48 {
49 if (g_obj != nullptr) {
50 delete g_obj;
51 g_obj = nullptr;
52 }
53 if (g_listener != nullptr) {
54 delete g_listener;
55 g_listener = nullptr;
56 }
57 if (g_sender != nullptr) {
58 delete g_sender;
59 g_sender = nullptr;
60 }
61 g_regHandler = nullptr;
62
63 if (g_eventBus != nullptr) {
64 delete g_eventBus;
65 g_eventBus = nullptr;
66 }
67 }
68
69 /**
70 * @tc.name: event_bus_test_001
71 * @tc.desc: Verify the EventBus AddHandler function.
72 * @tc.type: FUNC
73 * @tc.require: AR000GHSK9
74 */
75 HWTEST_F(EventbusTest, event_bus_test_001, TestSize.Level0)
76 {
77 EXPECT_EQ(g_regHandler, nullptr);
78
79 FakeEvent e(*g_sender, *g_obj);
80 g_regHandler = g_eventBus->AddHandler<FakeEvent>(e.GetType(), *g_listener);
81
82 EXPECT_NE(g_regHandler, nullptr);
83 EXPECT_EQ(g_regHandler->GetSender(), nullptr);
84 EXPECT_EQ(g_regHandler->GetHandler(), (void *)g_listener);
85 }
86
87 /**
88 * @tc.name: event_bus_test_002
89 * @tc.desc: Verify the EventBus AddHandler function.
90 * @tc.type: FUNC
91 * @tc.require: AR000GHSK9
92 */
93 HWTEST_F(EventbusTest, event_bus_test_002, TestSize.Level0)
94 {
95 EXPECT_EQ(g_regHandler, nullptr);
96
97 FakeEvent e(*g_sender, *g_obj);
98 g_regHandler = g_eventBus->AddHandler<FakeEvent>(e.GetType(), *g_listener);
99 std::shared_ptr<EventRegistration> secondHandler = g_eventBus->AddHandler<FakeEvent>(e.GetType(), *g_listener);
100
101 EXPECT_NE(secondHandler, nullptr);
102 EXPECT_EQ(g_regHandler, secondHandler);
103 }
104
105 /**
106 * @tc.name: event_bus_test_003
107 * @tc.desc: Verify the EventBus AddHandler with sender function.
108 * @tc.type: FUNC
109 * @tc.require: AR000GHSK9
110 */
111 HWTEST_F(EventbusTest, event_bus_test_003, TestSize.Level0)
112 {
113 EXPECT_EQ(g_regHandler, nullptr);
114
115 FakeEvent e(*g_sender, *g_obj);
116 g_regHandler = g_eventBus->AddHandler<FakeEvent>(e.GetType(), *g_listener);
117 std::shared_ptr<EventRegistration> secondHandler =
118 g_eventBus->AddHandler<FakeEvent>(e.GetType(), *g_listener, *g_sender);
119
120 EXPECT_NE(g_regHandler, nullptr);
121 EXPECT_NE(secondHandler, nullptr);
122 EXPECT_NE(g_regHandler, secondHandler);
123 EXPECT_EQ(secondHandler->GetSender(), g_sender);
124 EXPECT_EQ(secondHandler->GetHandler(), (void *)g_listener);
125 }
126
127 /**
128 * @tc.name: event_bus_test_004
129 * @tc.desc: Verify the EventBus AddHandler and RemoveHandler function.
130 * @tc.type: FUNC
131 * @tc.require: AR000GHSK9
132 */
133 HWTEST_F(EventbusTest, event_bus_test_004, TestSize.Level0)
134 {
135 EXPECT_EQ(g_regHandler, nullptr);
136 FakeEvent e(*g_sender, *g_obj);
137 EXPECT_EQ(false, g_eventBus->RemoveHandler<FakeEvent>(e.GetType(), g_regHandler));
138
139 g_regHandler = g_eventBus->AddHandler<FakeEvent>(e.GetType(), *g_listener);
140 EXPECT_EQ(true, g_eventBus->RemoveHandler<FakeEvent>(e.GetType(), g_regHandler));
141 }
142
143 /**
144 * @tc.name: event_bus_test_005
145 * @tc.desc: Verify the EventBus PostEvent function.
146 * @tc.type: FUNC
147 * @tc.require: AR000GHSK9
148 */
149 HWTEST_F(EventbusTest, event_bus_test_005, TestSize.Level0)
150 {
151 EXPECT_EQ(0, g_obj->GetAge());
152
153 FakeEvent e(*g_sender, *g_obj, 10);
154 g_regHandler = g_eventBus->AddHandler<FakeEvent>(e.GetType(), *g_listener);
155 g_eventBus->PostEvent<FakeEvent>(e, POSTMODE::POST_SYNC);
156 EXPECT_EQ(10, g_obj->GetAge());
157 }
158 }
159 }