1 /* 2 * Copyright (c) 2024 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 #define private public 17 #include "interfaces/inner_api/form_render/include/form_renderer_delegate_impl.h" 18 #undef private 19 #include "interfaces/inner_api/form_render/include/form_renderer_delegate_stub.h" 20 #include "test/mock/interfaces/mock_form_render_delegate_stub.h" 21 #include "test/mock/interfaces/mock_i_remote_object_form.h" 22 23 using namespace testing; 24 using namespace testing::ext; 25 26 namespace OHOS::Ace { 27 namespace { 28 29 } // namespace 30 class FormRenderDelegateStubTest : public testing::Test { 31 public: SetUpTestCase()32 static void SetUpTestCase() {}; 33 TearDownTestCase()34 static void TearDownTestCase() {}; 35 }; 36 37 /* 38 * @tc.name: FormRenderDelegateStubTest_001 39 * @tc.desc: Test OnRemoteRequest() function. 40 * @tc.type: FUNC 41 */ 42 HWTEST_F(FormRenderDelegateStubTest, FormRenderDelegateStubTest_001, TestSize.Level1) 43 { 44 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_001 start"; 45 MockFormRenderDelegateStub renderDelegate; 46 uint32_t code = 11; 47 MessageParcel data; 48 MessageParcel reply; 49 MessageOption option; 50 51 std::u16string name = u"form_render_delegate_stub"; 52 data.WriteInterfaceToken(name); 53 EXPECT_EQ(renderDelegate.OnRemoteRequest(code, data, reply, option), ERR_INVALID_VALUE); 54 55 code = 3; 56 std::u16string descriptor = FormRendererDelegateStub::GetDescriptor(); 57 data.WriteInterfaceToken(descriptor); 58 EXPECT_EQ(renderDelegate.OnRemoteRequest(code, data, reply, option), ERR_OK); 59 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_001 end"; 60 } 61 62 /* 63 * @tc.name: FormRenderDelegateStubTest_002 64 * @tc.desc: Test HandleOnSurfaceCreate(), HandleOnSurfaceReuse() function formJsInfo is nullptr. 65 * @tc.type: FUNC 66 */ 67 HWTEST_F(FormRenderDelegateStubTest, FormRenderDelegateStubTest_002, TestSize.Level1) 68 { 69 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_002 start"; 70 MockFormRenderDelegateStub renderDelegate; 71 MessageParcel data; 72 MessageParcel reply; 73 EXPECT_EQ(renderDelegate.HandleOnSurfaceCreate(data, reply), ERR_INVALID_VALUE); 74 EXPECT_EQ(renderDelegate.HandleOnSurfaceReuse(data, reply), ERR_INVALID_VALUE); 75 76 std::string surfaceNodeName = "ArkTSCardNode"; 77 struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName }; 78 std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true); 79 ASSERT_NE(rsNode, nullptr); 80 rsNode->Marshalling(data); 81 EXPECT_EQ(renderDelegate.HandleOnSurfaceCreate(data, reply), ERR_INVALID_VALUE); 82 data.WriteUint64(rsNode->GetId()); 83 EXPECT_EQ(renderDelegate.HandleOnSurfaceReuse(data, reply), ERR_INVALID_VALUE); 84 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_002 end"; 85 } 86 87 /* 88 * @tc.name: FormRenderDelegateStubTest_003 89 * @tc.desc: Test HandleOnSurfaceCreate(), HandleOnSurfaceReuse() function wan is nullptr. 90 * @tc.type: FUNC 91 */ 92 HWTEST_F(FormRenderDelegateStubTest, FormRenderDelegateStubTest_003, TestSize.Level1) 93 { 94 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_003 start"; 95 MockFormRenderDelegateStub renderDelegate; 96 MessageParcel data; 97 MessageParcel reply; 98 99 std::string surfaceNodeName = "ArkTSCardNode"; 100 struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName }; 101 std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true); 102 ASSERT_NE(rsNode, nullptr); 103 rsNode->Marshalling(data); 104 105 OHOS::AppExecFwk::FormJsInfo formJsInfo = {}; 106 formJsInfo.bundleName = "bundleName"; 107 formJsInfo.moduleName = "moduleName"; 108 data.WriteParcelable(&formJsInfo); 109 EXPECT_EQ(renderDelegate.HandleOnSurfaceCreate(data, reply), ERR_INVALID_VALUE); 110 data.WriteUint64(rsNode->GetId()); 111 formJsInfo.bundleName = "bundleName"; 112 formJsInfo.moduleName = "moduleName"; 113 data.WriteParcelable(&formJsInfo); 114 EXPECT_EQ(renderDelegate.HandleOnSurfaceReuse(data, reply), ERR_INVALID_VALUE); 115 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_003 end"; 116 } 117 118 /* 119 * @tc.name: FormRenderDelegateStubTest_004 120 * @tc.desc: Test HandleOnSurfaceCreate(), HandleOnSurfaceReuse() function. 121 * @tc.type: FUNC 122 */ 123 HWTEST_F(FormRenderDelegateStubTest, FormRenderDelegateStubTest_004, TestSize.Level1) 124 { 125 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_004 start"; 126 MockFormRenderDelegateStub renderDelegate; 127 MessageParcel data; 128 MessageParcel reply; 129 130 std::string surfaceNodeName = "ArkTSCardNode"; 131 struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName }; 132 std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true); 133 ASSERT_NE(rsNode, nullptr); 134 rsNode->Marshalling(data); 135 136 OHOS::AppExecFwk::FormJsInfo formJsInfo = {}; 137 formJsInfo.bundleName = "bundleName"; 138 formJsInfo.moduleName = "moduleName"; 139 data.WriteParcelable(&formJsInfo); 140 141 OHOS::AAFwk::Want want = {}; 142 data.WriteParcelable(&want); 143 EXPECT_EQ(renderDelegate.HandleOnSurfaceCreate(data, reply), ERR_OK); 144 data.WriteUint64(rsNode->GetId()); 145 formJsInfo.bundleName = "bundleName"; 146 formJsInfo.moduleName = "moduleName"; 147 data.WriteParcelable(&formJsInfo); 148 data.WriteParcelable(&formJsInfo); 149 EXPECT_EQ(renderDelegate.HandleOnSurfaceReuse(data, reply), ERR_OK); 150 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_004 end"; 151 } 152 153 /* 154 * @tc.name: FormRenderDelegateStubTest_005 155 * @tc.desc: Test HandleOnSurfaceRelease() function. 156 * @tc.type: FUNC 157 */ 158 HWTEST_F(FormRenderDelegateStubTest, FormRenderDelegateStubTest_005, TestSize.Level1) 159 { 160 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_005 start"; 161 MockFormRenderDelegateStub renderDelegate; 162 MessageParcel data; 163 MessageParcel reply; 164 EXPECT_EQ(renderDelegate.HandleOnSurfaceRelease(data, reply), ERR_OK); 165 166 std::string surfaceNodeName = "ArkTSCardNode"; 167 struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName }; 168 std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true); 169 ASSERT_NE(rsNode, nullptr); 170 rsNode->Marshalling(data); 171 renderDelegate.HandleOnSurfaceCreate(data, reply); 172 data.WriteUint64(rsNode->GetId()); 173 EXPECT_EQ(renderDelegate.HandleOnSurfaceRelease(data, reply), ERR_OK); 174 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_005 end"; 175 } 176 177 /* 178 * @tc.name: FormRenderDelegateStubTest_006 179 * @tc.desc: Test HandleOnSurfaceDetach(), HandleOnActionEvent(), HandleOnError, HandleOnSurfaceChange(), 180 * HandleOnFormLinkInfoUpdate(), HandleOnGetRectRelativeToWindow() HandleOnUpdateFormDone() function. 181 * @tc.type: FUNC 182 */ 183 HWTEST_F(FormRenderDelegateStubTest, FormRenderDelegateStubTest_006, TestSize.Level1) 184 { 185 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_006 start"; 186 MockFormRenderDelegateStub renderDelegate; 187 MessageParcel data; 188 MessageParcel reply; 189 190 EXPECT_EQ(renderDelegate.HandleOnSurfaceDetach(data, reply), ERR_OK); 191 EXPECT_EQ(renderDelegate.HandleOnActionEvent(data, reply), ERR_OK); 192 EXPECT_EQ(renderDelegate.HandleOnError(data, reply), ERR_OK); 193 EXPECT_EQ(renderDelegate.HandleOnSurfaceChange(data, reply), ERR_OK); 194 EXPECT_EQ(renderDelegate.HandleOnFormLinkInfoUpdate(data, reply), ERR_OK); 195 EXPECT_EQ(renderDelegate.HandleOnGetRectRelativeToWindow(data, reply), ERR_OK); 196 EXPECT_EQ(renderDelegate.HandleOnUpdateFormDone(data, reply), ERR_OK); 197 GTEST_LOG_(INFO) << "FormRenderDelegateStubTest_006 end"; 198 } 199 } 200