1e509ee18Sopenharmony_ci/* 2e509ee18Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3e509ee18Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e509ee18Sopenharmony_ci * you may not use this file except in compliance with the License. 5e509ee18Sopenharmony_ci * You may obtain a copy of the License at 6e509ee18Sopenharmony_ci * 7e509ee18Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e509ee18Sopenharmony_ci * 9e509ee18Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e509ee18Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e509ee18Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e509ee18Sopenharmony_ci * See the License for the specific language governing permissions and 13e509ee18Sopenharmony_ci * limitations under the License. 14e509ee18Sopenharmony_ci */ 15e509ee18Sopenharmony_ci 16e509ee18Sopenharmony_ci#include "tooling/base/pt_params.h" 17e509ee18Sopenharmony_ci#include "ecmascript/tests/test_helper.h" 18e509ee18Sopenharmony_ci#include "protocol_handler.h" 19e509ee18Sopenharmony_ci 20e509ee18Sopenharmony_ciusing namespace panda::ecmascript; 21e509ee18Sopenharmony_ciusing namespace panda::ecmascript::tooling; 22e509ee18Sopenharmony_ci 23e509ee18Sopenharmony_cinamespace panda::test { 24e509ee18Sopenharmony_ciclass PtParamsTest : public testing::Test { 25e509ee18Sopenharmony_cipublic: 26e509ee18Sopenharmony_ci static void SetUpTestCase() 27e509ee18Sopenharmony_ci { 28e509ee18Sopenharmony_ci GTEST_LOG_(INFO) << "SetUpTestCase"; 29e509ee18Sopenharmony_ci } 30e509ee18Sopenharmony_ci 31e509ee18Sopenharmony_ci static void TearDownTestCase() 32e509ee18Sopenharmony_ci { 33e509ee18Sopenharmony_ci GTEST_LOG_(INFO) << "TearDownCase"; 34e509ee18Sopenharmony_ci } 35e509ee18Sopenharmony_ci 36e509ee18Sopenharmony_ci void SetUp() override 37e509ee18Sopenharmony_ci { 38e509ee18Sopenharmony_ci TestHelper::CreateEcmaVMWithScope(ecmaVm, thread, scope); 39e509ee18Sopenharmony_ci } 40e509ee18Sopenharmony_ci 41e509ee18Sopenharmony_ci void TearDown() override 42e509ee18Sopenharmony_ci { 43e509ee18Sopenharmony_ci TestHelper::DestroyEcmaVMWithScope(ecmaVm, scope); 44e509ee18Sopenharmony_ci } 45e509ee18Sopenharmony_ci 46e509ee18Sopenharmony_ciprotected: 47e509ee18Sopenharmony_ci EcmaVM *ecmaVm {nullptr}; 48e509ee18Sopenharmony_ci EcmaHandleScope *scope {nullptr}; 49e509ee18Sopenharmony_ci JSThread *thread {nullptr}; 50e509ee18Sopenharmony_ci}; 51e509ee18Sopenharmony_ci 52e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, EnableParamsCreateTest) 53e509ee18Sopenharmony_ci{ 54e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 55e509ee18Sopenharmony_ci std::string attribute = "test"; 56e509ee18Sopenharmony_ci ptJson->Add("maxScriptsCacheSize", attribute.c_str()); 57e509ee18Sopenharmony_ci std::unique_ptr<EnableParams> result = EnableParams::Create(*ptJson); 58e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 59e509ee18Sopenharmony_ci} 60e509ee18Sopenharmony_ci 61e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, EvaluateOnCallFrameParamsCreateTest) 62e509ee18Sopenharmony_ci{ 63e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 64e509ee18Sopenharmony_ci std::string attribute = "test"; 65e509ee18Sopenharmony_ci ptJson->Add("objectGroup", 0); 66e509ee18Sopenharmony_ci ptJson->Add("includeCommandLineAPI", attribute.c_str()); 67e509ee18Sopenharmony_ci ptJson->Add("silent", attribute.c_str()); 68e509ee18Sopenharmony_ci ptJson->Add("returnByValue", attribute.c_str()); 69e509ee18Sopenharmony_ci ptJson->Add("generatePreview", attribute.c_str()); 70e509ee18Sopenharmony_ci ptJson->Add("throwOnSideEffect", attribute.c_str()); 71e509ee18Sopenharmony_ci std::unique_ptr<EvaluateOnCallFrameParams> result = EvaluateOnCallFrameParams::Create(*ptJson); 72e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 73e509ee18Sopenharmony_ci} 74e509ee18Sopenharmony_ci 75e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, GetPossibleBreakpointsParamsCreateTest) 76e509ee18Sopenharmony_ci{ 77e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 78e509ee18Sopenharmony_ci std::unique_ptr<PtJson> start = PtJson::CreateObject(); 79e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson1 = PtJson::CreateObject(); 80e509ee18Sopenharmony_ci std::unique_ptr<PtJson> end = PtJson::CreateObject(); 81e509ee18Sopenharmony_ci std::string attribute = "test"; 82e509ee18Sopenharmony_ci ptJson->Add("start", start); 83e509ee18Sopenharmony_ci ptJson->Add("end", end); 84e509ee18Sopenharmony_ci std::unique_ptr<GetPossibleBreakpointsParams> result = GetPossibleBreakpointsParams::Create(*ptJson); 85e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 86e509ee18Sopenharmony_ci ptJson1->Add("end", attribute.c_str()); 87e509ee18Sopenharmony_ci ptJson1->Add("restrictToFunction", attribute.c_str()); 88e509ee18Sopenharmony_ci std::unique_ptr<GetPossibleBreakpointsParams> result1 = GetPossibleBreakpointsParams::Create(*ptJson1); 89e509ee18Sopenharmony_ci ASSERT_TRUE(result1 == nullptr); 90e509ee18Sopenharmony_ci} 91e509ee18Sopenharmony_ci 92e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, ResumeParamsCreateTest) 93e509ee18Sopenharmony_ci{ 94e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 95e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson1 = PtJson::CreateObject(); 96e509ee18Sopenharmony_ci std::string attribute = "test"; 97e509ee18Sopenharmony_ci ptJson->Add("terminateOnResume", attribute.c_str()); 98e509ee18Sopenharmony_ci std::unique_ptr<ResumeParams> result = ResumeParams::Create(*ptJson); 99e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 100e509ee18Sopenharmony_ci std::unique_ptr<ResumeParams> result1 = ResumeParams::Create(*ptJson1); 101e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 102e509ee18Sopenharmony_ci} 103e509ee18Sopenharmony_ci 104e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, SetBlackboxPatternsParamsCreateTest) 105e509ee18Sopenharmony_ci{ 106e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 107e509ee18Sopenharmony_ci std::unique_ptr<PtJson> array = PtJson::CreateArray(); 108e509ee18Sopenharmony_ci std::string attribute = "test"; 109e509ee18Sopenharmony_ci array->Push(128); 110e509ee18Sopenharmony_ci array->Push(true); 111e509ee18Sopenharmony_ci array->Push(attribute.c_str()); 112e509ee18Sopenharmony_ci ptJson->Add("patterns", array); 113e509ee18Sopenharmony_ci std::unique_ptr<SetBlackboxPatternsParams> result = SetBlackboxPatternsParams::Create(*ptJson); 114e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 115e509ee18Sopenharmony_ci} 116e509ee18Sopenharmony_ci 117e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, StepIntoParamsCreateTest) 118e509ee18Sopenharmony_ci{ 119e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 120e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson1 = PtJson::CreateObject(); 121e509ee18Sopenharmony_ci std::unique_ptr<PtJson> array = PtJson::CreateArray(); 122e509ee18Sopenharmony_ci std::unique_ptr<PtJson> scriptId = PtJson::CreateObject(); 123e509ee18Sopenharmony_ci std::unique_ptr<PtJson> end = PtJson::CreateObject(); 124e509ee18Sopenharmony_ci std::string attribute = "test"; 125e509ee18Sopenharmony_ci scriptId->Add("scriptId", 123); 126e509ee18Sopenharmony_ci end->Add("end", 123); 127e509ee18Sopenharmony_ci array->Push(scriptId); 128e509ee18Sopenharmony_ci array->Push(end); 129e509ee18Sopenharmony_ci ptJson->Add("skipList", array); 130e509ee18Sopenharmony_ci std::unique_ptr<StepIntoParams> result = StepIntoParams::Create(*ptJson); 131e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 132e509ee18Sopenharmony_ci std::unique_ptr<StepIntoParams> result1 = StepIntoParams::Create(*ptJson1); 133e509ee18Sopenharmony_ci ASSERT_TRUE(result1 != nullptr); 134e509ee18Sopenharmony_ci} 135e509ee18Sopenharmony_ci 136e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, StepOverParamsCreateTest) 137e509ee18Sopenharmony_ci{ 138e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 139e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson1 = PtJson::CreateObject(); 140e509ee18Sopenharmony_ci std::unique_ptr<PtJson> array = PtJson::CreateArray(); 141e509ee18Sopenharmony_ci std::unique_ptr<PtJson> scriptId = PtJson::CreateObject(); 142e509ee18Sopenharmony_ci std::unique_ptr<PtJson> end = PtJson::CreateObject(); 143e509ee18Sopenharmony_ci std::string attribute = "test"; 144e509ee18Sopenharmony_ci scriptId->Add("scriptId", 123); 145e509ee18Sopenharmony_ci end->Add("end", 123); 146e509ee18Sopenharmony_ci array->Push(scriptId); 147e509ee18Sopenharmony_ci array->Push(end); 148e509ee18Sopenharmony_ci ptJson->Add("skipList", array); 149e509ee18Sopenharmony_ci std::unique_ptr<StepOverParams> result = StepOverParams::Create(*ptJson); 150e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 151e509ee18Sopenharmony_ci std::unique_ptr<StepOverParams> result1 = StepOverParams::Create(*ptJson1); 152e509ee18Sopenharmony_ci ASSERT_TRUE(result1 != nullptr); 153e509ee18Sopenharmony_ci} 154e509ee18Sopenharmony_ci 155e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, SetMixedDebugParamsCreateTest) 156e509ee18Sopenharmony_ci{ 157e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 158e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson1 = PtJson::CreateObject(); 159e509ee18Sopenharmony_ci std::string attribute = "test"; 160e509ee18Sopenharmony_ci ptJson->Add("enabled", attribute.c_str()); 161e509ee18Sopenharmony_ci std::unique_ptr<SetMixedDebugParams> result = SetMixedDebugParams::Create(*ptJson); 162e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 163e509ee18Sopenharmony_ci std::unique_ptr<SetMixedDebugParams> result1 = SetMixedDebugParams::Create(*ptJson1); 164e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 165e509ee18Sopenharmony_ci} 166e509ee18Sopenharmony_ci 167e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, ReplyNativeCallingParamsCreateTest) 168e509ee18Sopenharmony_ci{ 169e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 170e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson1 = PtJson::CreateObject(); 171e509ee18Sopenharmony_ci std::string attribute = "test"; 172e509ee18Sopenharmony_ci ptJson->Add("userCode", attribute.c_str()); 173e509ee18Sopenharmony_ci std::unique_ptr<ReplyNativeCallingParams> result = ReplyNativeCallingParams::Create(*ptJson); 174e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 175e509ee18Sopenharmony_ci std::unique_ptr<ReplyNativeCallingParams> result1 = ReplyNativeCallingParams::Create(*ptJson1); 176e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 177e509ee18Sopenharmony_ci} 178e509ee18Sopenharmony_ci 179e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, CallFunctionOnParamsCreateTest) 180e509ee18Sopenharmony_ci{ 181e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 182e509ee18Sopenharmony_ci std::string attribute = "test"; 183e509ee18Sopenharmony_ci ptJson->Add("arguments", attribute.c_str()); 184e509ee18Sopenharmony_ci std::unique_ptr<CallFunctionOnParams> result = CallFunctionOnParams::Create(*ptJson); 185e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 186e509ee18Sopenharmony_ci} 187e509ee18Sopenharmony_ci 188e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, GetHeapObjectIdParamsCreateTest) 189e509ee18Sopenharmony_ci{ 190e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 191e509ee18Sopenharmony_ci std::string attribute = "test"; 192e509ee18Sopenharmony_ci ptJson->Add("arguments", attribute.c_str()); 193e509ee18Sopenharmony_ci std::unique_ptr<GetHeapObjectIdParams> result = GetHeapObjectIdParams::Create(*ptJson); 194e509ee18Sopenharmony_ci ASSERT_TRUE(result != nullptr); 195e509ee18Sopenharmony_ci} 196e509ee18Sopenharmony_ci 197e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, GetObjectByHeapObjectIdParamsCreateTest) 198e509ee18Sopenharmony_ci{ 199e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 200e509ee18Sopenharmony_ci std::string attribute = "test"; 201e509ee18Sopenharmony_ci ptJson->Add("arguments", attribute.c_str()); 202e509ee18Sopenharmony_ci std::unique_ptr<GetObjectByHeapObjectIdParams> result = GetObjectByHeapObjectIdParams::Create(*ptJson); 203e509ee18Sopenharmony_ci ASSERT_TRUE(result != nullptr); 204e509ee18Sopenharmony_ci} 205e509ee18Sopenharmony_ci 206e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, RequestMemoryDumpParamsCreateTest) 207e509ee18Sopenharmony_ci{ 208e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 209e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson1 = PtJson::CreateObject(); 210e509ee18Sopenharmony_ci std::string attribute = "test"; 211e509ee18Sopenharmony_ci ptJson->Add("deterministic", attribute.c_str()); 212e509ee18Sopenharmony_ci ptJson->Add("levelOfDetail", attribute.c_str()); 213e509ee18Sopenharmony_ci std::unique_ptr<RequestMemoryDumpParams> result = RequestMemoryDumpParams::Create(*ptJson); 214e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 215e509ee18Sopenharmony_ci ptJson1->Add("levelOfDetail", 0); 216e509ee18Sopenharmony_ci std::unique_ptr<RequestMemoryDumpParams> result1 = RequestMemoryDumpParams::Create(*ptJson1); 217e509ee18Sopenharmony_ci ASSERT_TRUE(result1 == nullptr); 218e509ee18Sopenharmony_ci} 219e509ee18Sopenharmony_ci 220e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, StartParamsCreateTest) 221e509ee18Sopenharmony_ci{ 222e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson = PtJson::CreateObject(); 223e509ee18Sopenharmony_ci std::unique_ptr<PtJson> ptJson1 = PtJson::CreateObject(); 224e509ee18Sopenharmony_ci std::unique_ptr<PtJson> traceConfig = PtJson::CreateObject(); 225e509ee18Sopenharmony_ci std::string attribute = "test"; 226e509ee18Sopenharmony_ci ptJson->Add("categories", 0); 227e509ee18Sopenharmony_ci ptJson->Add("options", 0); 228e509ee18Sopenharmony_ci ptJson->Add("bufferUsageReportingInterval", attribute.c_str()); 229e509ee18Sopenharmony_ci ptJson->Add("transferMode", 0); 230e509ee18Sopenharmony_ci ptJson->Add("streamFormat", 0); 231e509ee18Sopenharmony_ci ptJson->Add("streamCompression", 0); 232e509ee18Sopenharmony_ci ptJson->Add("traceConfig", 0); 233e509ee18Sopenharmony_ci ptJson->Add("perfettoConfig", 0); 234e509ee18Sopenharmony_ci ptJson->Add("tracingBackend", 0); 235e509ee18Sopenharmony_ci std::unique_ptr<StartParams> result = StartParams::Create(*ptJson); 236e509ee18Sopenharmony_ci ASSERT_TRUE(result == nullptr); 237e509ee18Sopenharmony_ci ptJson1->Add("transferMode", attribute.c_str()); 238e509ee18Sopenharmony_ci ptJson1->Add("streamFormat", attribute.c_str()); 239e509ee18Sopenharmony_ci ptJson1->Add("streamCompression", attribute.c_str()); 240e509ee18Sopenharmony_ci traceConfig->Add("recordMode", 0); 241e509ee18Sopenharmony_ci ptJson1->Add("traceConfig", traceConfig); 242e509ee18Sopenharmony_ci ptJson1->Add("tracingBackend", attribute.c_str()); 243e509ee18Sopenharmony_ci 244e509ee18Sopenharmony_ci std::unique_ptr<StartParams> result1 = StartParams::Create(*ptJson1); 245e509ee18Sopenharmony_ci ASSERT_TRUE(result1 == nullptr); 246e509ee18Sopenharmony_ci} 247e509ee18Sopenharmony_ci 248e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, AddRequireParamsTest) 249e509ee18Sopenharmony_ci{ 250e509ee18Sopenharmony_ci std::string msg; 251e509ee18Sopenharmony_ci std::unique_ptr<SmartStepIntoParams> smartStepIntoParams; 252e509ee18Sopenharmony_ci 253e509ee18Sopenharmony_ci msg = std::string() + R"({})"; 254e509ee18Sopenharmony_ci smartStepIntoParams = SmartStepIntoParams::Create(DispatchRequest(msg).GetParams()); 255e509ee18Sopenharmony_ci EXPECT_EQ(smartStepIntoParams, nullptr); 256e509ee18Sopenharmony_ci} 257e509ee18Sopenharmony_ci 258e509ee18Sopenharmony_ciHWTEST_F_L0(PtParamsTest, SeriliazationTimeoutCheckEnableParamsCreateTest) 259e509ee18Sopenharmony_ci{ 260e509ee18Sopenharmony_ci std::string msg; 261e509ee18Sopenharmony_ci std::unique_ptr<SeriliazationTimeoutCheckEnableParams> seriliazationParams; 262e509ee18Sopenharmony_ci 263e509ee18Sopenharmony_ci msg = std::string() + R"({})"; 264e509ee18Sopenharmony_ci seriliazationParams = SeriliazationTimeoutCheckEnableParams::Create(DispatchRequest(msg).GetParams()); 265e509ee18Sopenharmony_ci EXPECT_EQ(seriliazationParams, nullptr); 266e509ee18Sopenharmony_ci 267e509ee18Sopenharmony_ci msg = std::string() + R"({"id":0,"method":"PtParams.Test","params":{"threshold":2}})"; 268e509ee18Sopenharmony_ci seriliazationParams = SeriliazationTimeoutCheckEnableParams::Create(DispatchRequest(msg).GetParams()); 269e509ee18Sopenharmony_ci ASSERT_TRUE(seriliazationParams != nullptr); 270e509ee18Sopenharmony_ci} 271e509ee18Sopenharmony_ci} // namespace panda::test