1 /*
2 * Copyright (c) 2023 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 "mock_remote_on_listener_stub.h"
18
19 using namespace testing::ext;
20 using namespace testing;
21
22 namespace OHOS {
23 namespace AAFwk {
24 class RemoteOnListenerStubTest : public testing::Test {
25 public:
26 static void SetUpTestCase(void);
27 static void TearDownTestCase(void);
28 void SetUp();
29 void TearDown();
30 void WriteInterfaceToken(MessageParcel& data);
31 sptr<MockRemoteOnListenerStub> stub_{ nullptr };
32 };
33
SetUpTestCase(void)34 void RemoteOnListenerStubTest::SetUpTestCase(void)
35 {}
TearDownTestCase(void)36 void RemoteOnListenerStubTest::TearDownTestCase(void)
37 {}
SetUp()38 void RemoteOnListenerStubTest::SetUp()
39 {
40 stub_ = new MockRemoteOnListenerStub();
41 }
TearDown()42 void RemoteOnListenerStubTest::TearDown()
43 {}
44
WriteInterfaceToken(MessageParcel & data)45 void RemoteOnListenerStubTest::WriteInterfaceToken(MessageParcel& data)
46 {
47 data.WriteInterfaceToken(MockRemoteOnListenerStub::GetDescriptor());
48 }
49
50 /*
51 * Feature: RemoteOnListenerStub
52 * Function: OnRemoteRequest
53 * SubFunction: NA
54 * FunctionPoints: RemoteOnListenerStub OnRemoteRequest
55 * EnvConditions: The code which not exist
56 * CaseDescription: Verify that on remote request is abnormal
57 */
58 HWTEST_F(RemoteOnListenerStubTest, RemoteOnListenerStubTest_OnRemoteRequest_001, TestSize.Level1)
59 {
60 MessageParcel data;
61 MessageParcel reply;
62 MessageOption option;
63 WriteInterfaceToken(data);
64 int res = stub_->OnRemoteRequest(10000, data, reply, option);
65 EXPECT_EQ(res, IPC_STUB_UNKNOW_TRANS_ERR);
66 }
67
68 /*
69 * Feature: RemoteOnListenerStub
70 * Function: OnRemoteRequest
71 * SubFunction: NA
72 * FunctionPoints: RemoteOnListenerStub OnRemoteRequest
73 * EnvConditions: Description abnormal
74 * CaseDescription: Verify that on remote request is abnormal
75 */
76 HWTEST_F(RemoteOnListenerStubTest, RemoteOnListenerStubTest_OnRemoteRequest_002, TestSize.Level1)
77 {
78 MessageParcel data;
79 MessageParcel reply;
80 MessageOption option;
81 int res = stub_->OnRemoteRequest(IRemoteOnListener::ON_CALLBACK, data, reply, option);
82 EXPECT_EQ(res, ERR_INVALID_STATE);
83 }
84
85 /*
86 * Feature: RemoteOnListenerStub
87 * Function: OnRemoteRequest
88 * SubFunction: NA
89 * FunctionPoints: RemoteOnListenerStub OnRemoteRequest
90 * EnvConditions: Code is NOTIFY_On_CHANGED
91 * CaseDescription: Verify that on remote request is normal
92 */
93 HWTEST_F(RemoteOnListenerStubTest, RemoteOnListenerStubTest_OnRemoteRequest_003, TestSize.Level1)
94 {
95 MessageParcel data;
96 MessageParcel reply;
97 MessageOption option;
98 WriteInterfaceToken(data);
99 EXPECT_CALL(*stub_, OnCallback(_, _, _, _, _)).Times(1).WillOnce(Return());
100 int res = stub_->OnRemoteRequest(IRemoteOnListener::ON_CALLBACK, data, reply, option);
101 EXPECT_EQ(res, NO_ERROR);
102 }
103
104 /*
105 * Feature: RemoteOnListenerStub
106 * Function: OnCallbackInner
107 * SubFunction: NA
108 * FunctionPoints: RemoteOnListenerStub OnCallbackInner
109 * EnvConditions: Description normal
110 * CaseDescription: Verify that on callback inner is normal
111 */
112 HWTEST_F(RemoteOnListenerStubTest, RemoteOnListenerStubTest_OnCallbackInner_001, TestSize.Level1)
113 {
114 MessageParcel data;
115 MessageParcel reply;
116 EXPECT_CALL(*stub_, OnCallback(_, _, _, _, _)).Times(1).WillOnce(Return());
117 int res = stub_->OnCallbackInner(data, reply);
118 EXPECT_EQ(res, NO_ERROR);
119 }
120 } // namespace AAFwk
121 } // namespace OHOS
122