1e509ee18Sopenharmony_ci/*
2e509ee18Sopenharmony_ci * Copyright (c) 2021 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 "ecmascript/js_array.h"
17e509ee18Sopenharmony_ci#include "ecmascript/js_tagged_value-inl.h"
18e509ee18Sopenharmony_ci#include "ecmascript/object_factory.h"
19e509ee18Sopenharmony_ci#include "ecmascript/tests/test_helper.h"
20e509ee18Sopenharmony_ci#include "tooling/base/pt_events.h"
21e509ee18Sopenharmony_ci#include "tooling/base/pt_types.h"
22e509ee18Sopenharmony_ci#include "dispatcher.h"
23e509ee18Sopenharmony_ci
24e509ee18Sopenharmony_ciusing namespace panda::ecmascript;
25e509ee18Sopenharmony_ciusing namespace panda::ecmascript::tooling;
26e509ee18Sopenharmony_ciusing ObjectType = RemoteObject::TypeName;
27e509ee18Sopenharmony_ciusing ObjectSubType = RemoteObject::SubTypeName;
28e509ee18Sopenharmony_ciusing ObjectClassName = RemoteObject::ClassName;
29e509ee18Sopenharmony_ci
30e509ee18Sopenharmony_cinamespace panda::test {
31e509ee18Sopenharmony_ciclass DebuggerEventsTest : public testing::Test {
32e509ee18Sopenharmony_cipublic:
33e509ee18Sopenharmony_ci    static void SetUpTestCase()
34e509ee18Sopenharmony_ci    {
35e509ee18Sopenharmony_ci        GTEST_LOG_(INFO) << "SetUpTestCase";
36e509ee18Sopenharmony_ci        Logger::InitializeStdLogging(Logger::Level::FATAL, LoggerComponentMaskAll);
37e509ee18Sopenharmony_ci    }
38e509ee18Sopenharmony_ci
39e509ee18Sopenharmony_ci    static void TearDownTestCase()
40e509ee18Sopenharmony_ci    {
41e509ee18Sopenharmony_ci        Logger::InitializeStdLogging(Logger::Level::ERROR, LoggerComponentMaskAll);
42e509ee18Sopenharmony_ci        GTEST_LOG_(INFO) << "TearDownCase";
43e509ee18Sopenharmony_ci    }
44e509ee18Sopenharmony_ci
45e509ee18Sopenharmony_ci    void SetUp() override
46e509ee18Sopenharmony_ci    {
47e509ee18Sopenharmony_ci        TestHelper::CreateEcmaVMWithScope(ecmaVm, thread, scope);
48e509ee18Sopenharmony_ci        // Main logic is JSON parser, so not need trigger GC to decrease execute time
49e509ee18Sopenharmony_ci        ecmaVm->SetEnableForceGC(false);
50e509ee18Sopenharmony_ci    }
51e509ee18Sopenharmony_ci
52e509ee18Sopenharmony_ci    void TearDown() override
53e509ee18Sopenharmony_ci    {
54e509ee18Sopenharmony_ci        TestHelper::DestroyEcmaVMWithScope(ecmaVm, scope);
55e509ee18Sopenharmony_ci    }
56e509ee18Sopenharmony_ci
57e509ee18Sopenharmony_ciprotected:
58e509ee18Sopenharmony_ci    EcmaVM *ecmaVm {nullptr};
59e509ee18Sopenharmony_ci    EcmaHandleScope *scope {nullptr};
60e509ee18Sopenharmony_ci    JSThread *thread {nullptr};
61e509ee18Sopenharmony_ci};
62e509ee18Sopenharmony_ci
63e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, BreakpointResolvedToJsonTest)
64e509ee18Sopenharmony_ci{
65e509ee18Sopenharmony_ci    BreakpointResolved breakpointResolved;
66e509ee18Sopenharmony_ci
67e509ee18Sopenharmony_ci    auto location = std::make_unique<Location>();
68e509ee18Sopenharmony_ci    location->SetScriptId(2).SetLine(99);
69e509ee18Sopenharmony_ci    breakpointResolved.SetBreakpointId("00").SetLocation(std::move(location));
70e509ee18Sopenharmony_ci
71e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json;
72e509ee18Sopenharmony_ci    ASSERT_EQ(breakpointResolved.ToJson()->GetObject("params", &json), Result::SUCCESS);
73e509ee18Sopenharmony_ci    std::string breakpointId;
74e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetString("breakpointId", &breakpointId), Result::SUCCESS);
75e509ee18Sopenharmony_ci    EXPECT_EQ(breakpointId, "00");
76e509ee18Sopenharmony_ci
77e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> locationJson;
78e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("location", &locationJson), Result::SUCCESS);
79e509ee18Sopenharmony_ci    std::string scriptId;
80e509ee18Sopenharmony_ci    ASSERT_EQ(locationJson->GetString("scriptId", &scriptId), Result::SUCCESS);
81e509ee18Sopenharmony_ci    EXPECT_EQ(scriptId, "2");
82e509ee18Sopenharmony_ci    int32_t lineNumber;
83e509ee18Sopenharmony_ci    ASSERT_EQ(locationJson->GetInt("lineNumber", &lineNumber), Result::SUCCESS);
84e509ee18Sopenharmony_ci    EXPECT_EQ(lineNumber, 99);
85e509ee18Sopenharmony_ci}
86e509ee18Sopenharmony_ci
87e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, PausedToJsonTest)
88e509ee18Sopenharmony_ci{
89e509ee18Sopenharmony_ci    Paused paused;
90e509ee18Sopenharmony_ci    auto callFrames_ = std::vector<std::unique_ptr<CallFrame>>();
91e509ee18Sopenharmony_ci    std::unique_ptr<CallFrame> callFrame = std::make_unique<CallFrame>();
92e509ee18Sopenharmony_ci    std::unique_ptr<Location> location = std::make_unique<Location>();
93e509ee18Sopenharmony_ci    location->SetScriptId(13).SetLine(16);
94e509ee18Sopenharmony_ci
95e509ee18Sopenharmony_ci    std::unique_ptr<RemoteObject> res = std::make_unique<RemoteObject>();
96e509ee18Sopenharmony_ci    res->SetType("idle2");
97e509ee18Sopenharmony_ci    callFrame->SetCallFrameId(55);
98e509ee18Sopenharmony_ci    callFrame->SetLocation(std::move(location));
99e509ee18Sopenharmony_ci    callFrame->SetThis(std::move(res));
100e509ee18Sopenharmony_ci    callFrames_.emplace_back(std::move(callFrame));
101e509ee18Sopenharmony_ci
102e509ee18Sopenharmony_ci    paused.SetCallFrames(std::move(callFrames_))
103e509ee18Sopenharmony_ci        .SetReason(PauseReason::EXCEPTION);
104e509ee18Sopenharmony_ci
105e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = paused.ToJson();
106e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
107e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
108e509ee18Sopenharmony_ci
109e509ee18Sopenharmony_ci    std::string reason;
110e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("reason", &reason), Result::SUCCESS);
111e509ee18Sopenharmony_ci    EXPECT_EQ("exception", reason);
112e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> callFrames;
113e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetArray("callFrames", &callFrames), Result::SUCCESS);
114e509ee18Sopenharmony_ci    ASSERT_NE(callFrames, nullptr);
115e509ee18Sopenharmony_ci    EXPECT_EQ(callFrames->GetSize(), 1);
116e509ee18Sopenharmony_ci
117e509ee18Sopenharmony_ci    Paused paused1;
118e509ee18Sopenharmony_ci    std::unique_ptr<RemoteObject> obj = std::make_unique<RemoteObject>();
119e509ee18Sopenharmony_ci    paused1.SetData(std::move(obj)).SetReason(PauseReason::AMBIGUOUS).SetReason(PauseReason::ASSERT)
120e509ee18Sopenharmony_ci        .SetReason(PauseReason::DEBUGCOMMAND).SetReason(PauseReason::DOM).SetReason(PauseReason::EVENTLISTENER)
121e509ee18Sopenharmony_ci        .SetReason(PauseReason::OOM).SetReason(PauseReason::OTHER).SetReason(PauseReason::PROMISEREJECTION)
122e509ee18Sopenharmony_ci        .SetReason(PauseReason::XHR).SetReason(PauseReason::BREAK_ON_START);
123e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json1 = paused1.ToJson();
124e509ee18Sopenharmony_ci    ASSERT_EQ(json1->GetObject("params", &params), Result::SUCCESS);
125e509ee18Sopenharmony_ci}
126e509ee18Sopenharmony_ci
127e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, NativeCallingToJsonTest)
128e509ee18Sopenharmony_ci{
129e509ee18Sopenharmony_ci    NativeCalling nativeCalling;
130e509ee18Sopenharmony_ci    nativeCalling.SetNativeAddress(nullptr);
131e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = nativeCalling.ToJson();
132e509ee18Sopenharmony_ci
133e509ee18Sopenharmony_ci    std::string method;
134e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetString("method", &method), Result::SUCCESS);
135e509ee18Sopenharmony_ci    EXPECT_EQ(nativeCalling.GetName(), method);
136e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
137e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
138e509ee18Sopenharmony_ci
139e509ee18Sopenharmony_ci    int64_t nativeAddress;
140e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt64("nativeAddress", &nativeAddress), Result::SUCCESS);
141e509ee18Sopenharmony_ci}
142e509ee18Sopenharmony_ci
143e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, ResumedToJsonTest)
144e509ee18Sopenharmony_ci{
145e509ee18Sopenharmony_ci    Resumed resumed;
146e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = resumed.ToJson();
147e509ee18Sopenharmony_ci
148e509ee18Sopenharmony_ci    std::string method;
149e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetString("method", &method), Result::SUCCESS);
150e509ee18Sopenharmony_ci    EXPECT_EQ(resumed.GetName(), method);
151e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
152e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
153e509ee18Sopenharmony_ci}
154e509ee18Sopenharmony_ci
155e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, ScriptFailedToParseToJsonTest)
156e509ee18Sopenharmony_ci{
157e509ee18Sopenharmony_ci    ScriptFailedToParse parsed;
158e509ee18Sopenharmony_ci    parsed.SetScriptId(100)
159e509ee18Sopenharmony_ci        .SetUrl("use/test.js")
160e509ee18Sopenharmony_ci        .SetStartLine(0)
161e509ee18Sopenharmony_ci        .SetStartColumn(4)
162e509ee18Sopenharmony_ci        .SetEndLine(10)
163e509ee18Sopenharmony_ci        .SetEndColumn(10)
164e509ee18Sopenharmony_ci        .SetExecutionContextId(2)
165e509ee18Sopenharmony_ci        .SetHash("hash0001")
166e509ee18Sopenharmony_ci        .SetSourceMapURL("usr/")
167e509ee18Sopenharmony_ci        .SetHasSourceURL(true)
168e509ee18Sopenharmony_ci        .SetIsModule(true)
169e509ee18Sopenharmony_ci        .SetLength(34)
170e509ee18Sopenharmony_ci        .SetCodeOffset(432)
171e509ee18Sopenharmony_ci        .SetScriptLanguage("JavaScript")
172e509ee18Sopenharmony_ci        .SetEmbedderName("hh");
173e509ee18Sopenharmony_ci
174e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = parsed.ToJson();
175e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
176e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
177e509ee18Sopenharmony_ci
178e509ee18Sopenharmony_ci    std::string tmpStr;
179e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("scriptId", &tmpStr), Result::SUCCESS);
180e509ee18Sopenharmony_ci    EXPECT_EQ("100", tmpStr);
181e509ee18Sopenharmony_ci
182e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("url", &tmpStr), Result::SUCCESS);
183e509ee18Sopenharmony_ci    EXPECT_EQ("use/test.js", tmpStr);
184e509ee18Sopenharmony_ci
185e509ee18Sopenharmony_ci    int tmpInt;
186e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("startLine", &tmpInt), Result::SUCCESS);
187e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 0);
188e509ee18Sopenharmony_ci
189e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("startColumn", &tmpInt), Result::SUCCESS);
190e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 4);
191e509ee18Sopenharmony_ci
192e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("endLine", &tmpInt), Result::SUCCESS);
193e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 10);
194e509ee18Sopenharmony_ci
195e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("endColumn", &tmpInt), Result::SUCCESS);
196e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 10);
197e509ee18Sopenharmony_ci
198e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("executionContextId", &tmpInt), Result::SUCCESS);
199e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 2);
200e509ee18Sopenharmony_ci
201e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("hash", &tmpStr), Result::SUCCESS);
202e509ee18Sopenharmony_ci    EXPECT_EQ("hash0001", tmpStr);
203e509ee18Sopenharmony_ci
204e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("sourceMapURL", &tmpStr), Result::SUCCESS);
205e509ee18Sopenharmony_ci    EXPECT_EQ("usr/", tmpStr);
206e509ee18Sopenharmony_ci
207e509ee18Sopenharmony_ci    bool tmpBool;
208e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetBool("hasSourceURL", &tmpBool), Result::SUCCESS);
209e509ee18Sopenharmony_ci    ASSERT_TRUE(tmpBool);
210e509ee18Sopenharmony_ci
211e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetBool("isModule", &tmpBool), Result::SUCCESS);
212e509ee18Sopenharmony_ci    ASSERT_TRUE(tmpBool);
213e509ee18Sopenharmony_ci
214e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("length", &tmpInt), Result::SUCCESS);
215e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 34);
216e509ee18Sopenharmony_ci
217e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("codeOffset", &tmpInt), Result::SUCCESS);
218e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 432);
219e509ee18Sopenharmony_ci
220e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("scriptLanguage", &tmpStr), Result::SUCCESS);
221e509ee18Sopenharmony_ci    EXPECT_EQ("JavaScript", tmpStr);
222e509ee18Sopenharmony_ci
223e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("embedderName", &tmpStr), Result::SUCCESS);
224e509ee18Sopenharmony_ci    EXPECT_EQ("hh", tmpStr);
225e509ee18Sopenharmony_ci
226e509ee18Sopenharmony_ci    ScriptFailedToParse parsed1;
227e509ee18Sopenharmony_ci    json = parsed1.ToJson();
228e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
229e509ee18Sopenharmony_ci}
230e509ee18Sopenharmony_ci
231e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, ScriptParsedToJsonTest)
232e509ee18Sopenharmony_ci{
233e509ee18Sopenharmony_ci    ScriptParsed parsed;
234e509ee18Sopenharmony_ci    parsed.SetScriptId(10)
235e509ee18Sopenharmony_ci        .SetUrl("use/test.js")
236e509ee18Sopenharmony_ci        .SetStartLine(0)
237e509ee18Sopenharmony_ci        .SetStartColumn(4)
238e509ee18Sopenharmony_ci        .SetEndLine(10)
239e509ee18Sopenharmony_ci        .SetEndColumn(10)
240e509ee18Sopenharmony_ci        .SetExecutionContextId(2)
241e509ee18Sopenharmony_ci        .SetHash("hash0001")
242e509ee18Sopenharmony_ci        .SetIsLiveEdit(true)
243e509ee18Sopenharmony_ci        .SetSourceMapURL("usr/")
244e509ee18Sopenharmony_ci        .SetHasSourceURL(true)
245e509ee18Sopenharmony_ci        .SetIsModule(true)
246e509ee18Sopenharmony_ci        .SetLength(34)
247e509ee18Sopenharmony_ci        .SetCodeOffset(432)
248e509ee18Sopenharmony_ci        .SetScriptLanguage("JavaScript")
249e509ee18Sopenharmony_ci        .SetEmbedderName("hh");
250e509ee18Sopenharmony_ci
251e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = parsed.ToJson();
252e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
253e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
254e509ee18Sopenharmony_ci
255e509ee18Sopenharmony_ci    std::string tmpStr;
256e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("scriptId", &tmpStr), Result::SUCCESS);
257e509ee18Sopenharmony_ci    EXPECT_EQ("10", tmpStr);
258e509ee18Sopenharmony_ci
259e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("url", &tmpStr), Result::SUCCESS);
260e509ee18Sopenharmony_ci    EXPECT_EQ("use/test.js", tmpStr);
261e509ee18Sopenharmony_ci
262e509ee18Sopenharmony_ci    int tmpInt;
263e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("startLine", &tmpInt), Result::SUCCESS);
264e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 0);
265e509ee18Sopenharmony_ci
266e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("startColumn", &tmpInt), Result::SUCCESS);
267e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 4);
268e509ee18Sopenharmony_ci
269e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("endLine", &tmpInt), Result::SUCCESS);
270e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 10);
271e509ee18Sopenharmony_ci
272e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("endColumn", &tmpInt), Result::SUCCESS);
273e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 10);
274e509ee18Sopenharmony_ci
275e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("executionContextId", &tmpInt), Result::SUCCESS);
276e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 2);
277e509ee18Sopenharmony_ci
278e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("hash", &tmpStr), Result::SUCCESS);
279e509ee18Sopenharmony_ci    EXPECT_EQ("hash0001", tmpStr);
280e509ee18Sopenharmony_ci
281e509ee18Sopenharmony_ci    bool tmpBool;
282e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetBool("isLiveEdit", &tmpBool), Result::SUCCESS);
283e509ee18Sopenharmony_ci    ASSERT_TRUE(tmpBool);
284e509ee18Sopenharmony_ci
285e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("sourceMapURL", &tmpStr), Result::SUCCESS);
286e509ee18Sopenharmony_ci    EXPECT_EQ("usr/", tmpStr);
287e509ee18Sopenharmony_ci
288e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetBool("hasSourceURL", &tmpBool), Result::SUCCESS);
289e509ee18Sopenharmony_ci    ASSERT_TRUE(tmpBool);
290e509ee18Sopenharmony_ci
291e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetBool("isModule", &tmpBool), Result::SUCCESS);
292e509ee18Sopenharmony_ci    ASSERT_TRUE(tmpBool);
293e509ee18Sopenharmony_ci
294e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("length", &tmpInt), Result::SUCCESS);
295e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 34);
296e509ee18Sopenharmony_ci
297e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("codeOffset", &tmpInt), Result::SUCCESS);
298e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 432);
299e509ee18Sopenharmony_ci
300e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("scriptLanguage", &tmpStr), Result::SUCCESS);
301e509ee18Sopenharmony_ci    EXPECT_EQ("JavaScript", tmpStr);
302e509ee18Sopenharmony_ci
303e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("embedderName", &tmpStr), Result::SUCCESS);
304e509ee18Sopenharmony_ci    EXPECT_EQ("hh", tmpStr);
305e509ee18Sopenharmony_ci}
306e509ee18Sopenharmony_ci
307e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, ConsoleProfileFinishedToJsonTest)
308e509ee18Sopenharmony_ci{
309e509ee18Sopenharmony_ci    ConsoleProfileFinished consoleProfileFinished;
310e509ee18Sopenharmony_ci
311e509ee18Sopenharmony_ci    auto location = std::make_unique<Location>();
312e509ee18Sopenharmony_ci    location->SetScriptId(13).SetLine(20);
313e509ee18Sopenharmony_ci    std::vector<std::unique_ptr<ProfileNode>> v;
314e509ee18Sopenharmony_ci    auto profile = std::make_unique<Profile>();
315e509ee18Sopenharmony_ci    profile->SetNodes(std::move(v))
316e509ee18Sopenharmony_ci        .SetStartTime(0)
317e509ee18Sopenharmony_ci        .SetEndTime(15)
318e509ee18Sopenharmony_ci        .SetSamples(std::vector<int32_t>{})
319e509ee18Sopenharmony_ci        .SetTimeDeltas(std::vector<int32_t>{});
320e509ee18Sopenharmony_ci    consoleProfileFinished.SetId("11").SetLocation(std::move(location)).SetProfile(std::move(profile)).SetTitle("001");
321e509ee18Sopenharmony_ci
322e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = consoleProfileFinished.ToJson();
323e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
324e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
325e509ee18Sopenharmony_ci
326e509ee18Sopenharmony_ci    std::string tmpStr;
327e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("id", &tmpStr), Result::SUCCESS);
328e509ee18Sopenharmony_ci    EXPECT_EQ("11", tmpStr);
329e509ee18Sopenharmony_ci
330e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> tmpJson;
331e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetObject("location", &tmpJson), Result::SUCCESS);
332e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetObject("profile", &tmpJson), Result::SUCCESS);
333e509ee18Sopenharmony_ci
334e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("title", &tmpStr), Result::SUCCESS);
335e509ee18Sopenharmony_ci    EXPECT_EQ("001", tmpStr);
336e509ee18Sopenharmony_ci
337e509ee18Sopenharmony_ci    ConsoleProfileFinished consoleProfileFinished1;
338e509ee18Sopenharmony_ci    auto location1 = std::make_unique<Location>();
339e509ee18Sopenharmony_ci    auto profile1 = std::make_unique<Profile>();
340e509ee18Sopenharmony_ci    consoleProfileFinished1.SetLocation(std::move(location1)).SetProfile(std::move(profile1));
341e509ee18Sopenharmony_ci    json = consoleProfileFinished1.ToJson();
342e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
343e509ee18Sopenharmony_ci}
344e509ee18Sopenharmony_ci
345e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, ConsoleProfileStartedToJsonTest)
346e509ee18Sopenharmony_ci{
347e509ee18Sopenharmony_ci    ConsoleProfileStarted consoleProfileStarted;
348e509ee18Sopenharmony_ci
349e509ee18Sopenharmony_ci    auto location = std::make_unique<Location>();
350e509ee18Sopenharmony_ci    location->SetScriptId(17).SetLine(30);
351e509ee18Sopenharmony_ci    consoleProfileStarted.SetId("12").SetLocation(std::move(location)).SetTitle("002");
352e509ee18Sopenharmony_ci
353e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = consoleProfileStarted.ToJson();
354e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
355e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
356e509ee18Sopenharmony_ci
357e509ee18Sopenharmony_ci    std::string tmpStr;
358e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("id", &tmpStr), Result::SUCCESS);
359e509ee18Sopenharmony_ci    EXPECT_EQ("12", tmpStr);
360e509ee18Sopenharmony_ci
361e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> tmpJson = consoleProfileStarted.GetLocation()->ToJson();
362e509ee18Sopenharmony_ci    ASSERT_EQ(tmpJson->GetString("scriptId", &tmpStr), Result::SUCCESS);
363e509ee18Sopenharmony_ci    EXPECT_EQ("17", tmpStr);
364e509ee18Sopenharmony_ci    int tmpInt;
365e509ee18Sopenharmony_ci    ASSERT_EQ(tmpJson->GetInt("lineNumber", &tmpInt), Result::SUCCESS);
366e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 30);
367e509ee18Sopenharmony_ci
368e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("title", &tmpStr), Result::SUCCESS);
369e509ee18Sopenharmony_ci    EXPECT_EQ("002", tmpStr);
370e509ee18Sopenharmony_ci
371e509ee18Sopenharmony_ci    ConsoleProfileStarted consoleProfileStarted1;
372e509ee18Sopenharmony_ci    auto location1 = std::make_unique<Location>();
373e509ee18Sopenharmony_ci    consoleProfileStarted1.SetLocation(std::move(location1));
374e509ee18Sopenharmony_ci    json = consoleProfileStarted1.ToJson();
375e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
376e509ee18Sopenharmony_ci}
377e509ee18Sopenharmony_ci
378e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, PreciseCoverageDeltaUpdateToJsonTest)
379e509ee18Sopenharmony_ci{
380e509ee18Sopenharmony_ci    PreciseCoverageDeltaUpdate preciseCoverageDeltaUpdate;
381e509ee18Sopenharmony_ci
382e509ee18Sopenharmony_ci    std::vector<std::unique_ptr<ScriptCoverage>> v;
383e509ee18Sopenharmony_ci    preciseCoverageDeltaUpdate.SetOccasion("percise")
384e509ee18Sopenharmony_ci        .SetResult(std::move(v))
385e509ee18Sopenharmony_ci        .SetTimestamp(77);
386e509ee18Sopenharmony_ci
387e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = preciseCoverageDeltaUpdate.ToJson();
388e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
389e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
390e509ee18Sopenharmony_ci
391e509ee18Sopenharmony_ci    int64_t tmpInt;
392e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt64("timestamp", &tmpInt), Result::SUCCESS);
393e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 77);
394e509ee18Sopenharmony_ci
395e509ee18Sopenharmony_ci    std::string tmpStr;
396e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("occasion", &tmpStr), Result::SUCCESS);
397e509ee18Sopenharmony_ci    EXPECT_EQ("percise", tmpStr);
398e509ee18Sopenharmony_ci
399e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> tmpArray;
400e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetArray("result", &tmpArray), Result::SUCCESS);
401e509ee18Sopenharmony_ci
402e509ee18Sopenharmony_ci    PreciseCoverageDeltaUpdate preciseCoverageDeltaUpdate1;
403e509ee18Sopenharmony_ci    std::unique_ptr<ScriptCoverage> scriptCoverage;
404e509ee18Sopenharmony_ci    std::string msg = std::string() + R"({"id":0,"method":"Debugger.Test","params":{
405e509ee18Sopenharmony_ci          "scriptId":"1001",
406e509ee18Sopenharmony_ci          "url":"url17",
407e509ee18Sopenharmony_ci          "functions":[{"functionName":"Create0",
408e509ee18Sopenharmony_ci          "ranges":[{"startOffset":0, "endOffset":13, "count":13}],
409e509ee18Sopenharmony_ci          "isBlockCoverage":true}]}})";
410e509ee18Sopenharmony_ci    scriptCoverage = ScriptCoverage::Create(DispatchRequest(msg).GetParams());
411e509ee18Sopenharmony_ci    v.push_back(std::move(scriptCoverage));
412e509ee18Sopenharmony_ci    preciseCoverageDeltaUpdate1.SetResult(std::move(v));
413e509ee18Sopenharmony_ci    json = preciseCoverageDeltaUpdate1.ToJson();
414e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
415e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetArray("result", &tmpArray), Result::SUCCESS);
416e509ee18Sopenharmony_ci}
417e509ee18Sopenharmony_ci
418e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, HeapStatsUpdateToJsonTest)
419e509ee18Sopenharmony_ci{
420e509ee18Sopenharmony_ci    HeapStatsUpdate heapStatsUpdate;
421e509ee18Sopenharmony_ci    heapStatsUpdate.SetStatsUpdate(std::vector<int32_t> {});
422e509ee18Sopenharmony_ci
423e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = heapStatsUpdate.ToJson();
424e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
425e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
426e509ee18Sopenharmony_ci
427e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> tmpArray;
428e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetArray("statsUpdate", &tmpArray), Result::SUCCESS);
429e509ee18Sopenharmony_ci
430e509ee18Sopenharmony_ci    HeapStatsUpdate heapStatsUpdate1;
431e509ee18Sopenharmony_ci    heapStatsUpdate1.SetStatsUpdate(std::vector<int32_t> {1, 12, 20});
432e509ee18Sopenharmony_ci    json = heapStatsUpdate1.ToJson();
433e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
434e509ee18Sopenharmony_ci}
435e509ee18Sopenharmony_ci
436e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, LastSeenObjectIdToJsonTest)
437e509ee18Sopenharmony_ci{
438e509ee18Sopenharmony_ci    LastSeenObjectId lastSeenObjectId;
439e509ee18Sopenharmony_ci    lastSeenObjectId.SetLastSeenObjectId(10).SetTimestamp(77);
440e509ee18Sopenharmony_ci
441e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = lastSeenObjectId.ToJson();
442e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
443e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
444e509ee18Sopenharmony_ci
445e509ee18Sopenharmony_ci    int64_t tmpInt64;
446e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt64("timestamp", &tmpInt64), Result::SUCCESS);
447e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt64, 77);
448e509ee18Sopenharmony_ci
449e509ee18Sopenharmony_ci    int tmpInt;
450e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("lastSeenObjectId", &tmpInt), Result::SUCCESS);
451e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 10);
452e509ee18Sopenharmony_ci}
453e509ee18Sopenharmony_ci
454e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, ReportHeapSnapshotProgressToJsonTest)
455e509ee18Sopenharmony_ci{
456e509ee18Sopenharmony_ci    ReportHeapSnapshotProgress reportHeapSnapshotProgress;
457e509ee18Sopenharmony_ci    reportHeapSnapshotProgress.SetDone(10).SetTotal(100);
458e509ee18Sopenharmony_ci
459e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = reportHeapSnapshotProgress.ToJson();
460e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
461e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
462e509ee18Sopenharmony_ci
463e509ee18Sopenharmony_ci    int tmpInt;
464e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("done", &tmpInt), Result::SUCCESS);
465e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 10);
466e509ee18Sopenharmony_ci
467e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("total", &tmpInt), Result::SUCCESS);
468e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 100);
469e509ee18Sopenharmony_ci}
470e509ee18Sopenharmony_ci
471e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, BufferUsageToJsonTest)
472e509ee18Sopenharmony_ci{
473e509ee18Sopenharmony_ci    BufferUsage bufferUsage;
474e509ee18Sopenharmony_ci    bufferUsage.SetPercentFull(17).SetEventCount(15).SetValue(12);
475e509ee18Sopenharmony_ci
476e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = bufferUsage.ToJson();
477e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
478e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
479e509ee18Sopenharmony_ci
480e509ee18Sopenharmony_ci    int tmpInt;
481e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("percentFull", &tmpInt), Result::SUCCESS);
482e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 17);
483e509ee18Sopenharmony_ci
484e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("eventCount", &tmpInt), Result::SUCCESS);
485e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 15);
486e509ee18Sopenharmony_ci
487e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetInt("value", &tmpInt), Result::SUCCESS);
488e509ee18Sopenharmony_ci    EXPECT_EQ(tmpInt, 12);
489e509ee18Sopenharmony_ci}
490e509ee18Sopenharmony_ci
491e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, DataCollectedToJsonTest)
492e509ee18Sopenharmony_ci{
493e509ee18Sopenharmony_ci    std::unique_ptr<std::vector<TraceEvent>> traceEvents = std::make_unique<std::vector<TraceEvent>>();
494e509ee18Sopenharmony_ci    int64_t ts = 604898475815;
495e509ee18Sopenharmony_ci    TraceEvent event("timeline", "UpdateCounters", "I", getpid(), 1415);
496e509ee18Sopenharmony_ci    event.SetTs(ts);
497e509ee18Sopenharmony_ci    event.SetTts(ts);
498e509ee18Sopenharmony_ci    event.SetS("t");
499e509ee18Sopenharmony_ci    std::string args = "{\"data\":{\"jsHeapSizeUsed\":" + std::to_string(1024) + "}}";
500e509ee18Sopenharmony_ci    event.SetArgs(args);
501e509ee18Sopenharmony_ci    traceEvents->emplace_back(event);
502e509ee18Sopenharmony_ci
503e509ee18Sopenharmony_ci    DataCollected dataCollected;
504e509ee18Sopenharmony_ci    dataCollected.SetTraceEvents(std::move(traceEvents));
505e509ee18Sopenharmony_ci
506e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = dataCollected.ToJson();
507e509ee18Sopenharmony_ci    std::string method;
508e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetString("method", &method), Result::SUCCESS);
509e509ee18Sopenharmony_ci    EXPECT_EQ(dataCollected.GetName(), method);
510e509ee18Sopenharmony_ci
511e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
512e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
513e509ee18Sopenharmony_ci
514e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> tmpArray;
515e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetArray("value", &tmpArray), Result::SUCCESS);
516e509ee18Sopenharmony_ci}
517e509ee18Sopenharmony_ci
518e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, TracingCompleteToJsonTest)
519e509ee18Sopenharmony_ci{
520e509ee18Sopenharmony_ci    TracingComplete tracingComplete;
521e509ee18Sopenharmony_ci    auto traceFormat = std::make_unique<StreamFormat>();
522e509ee18Sopenharmony_ci    auto streamCompression = std::make_unique<StreamCompression>();
523e509ee18Sopenharmony_ci    tracingComplete.SetDataLossOccurred(true)
524e509ee18Sopenharmony_ci                    .SetTraceFormat(std::move(traceFormat))
525e509ee18Sopenharmony_ci                    .SetStreamCompression(std::move(streamCompression));
526e509ee18Sopenharmony_ci
527e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = tracingComplete.ToJson();
528e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
529e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
530e509ee18Sopenharmony_ci
531e509ee18Sopenharmony_ci    bool tmpBool;
532e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetBool("dataLossOccurred", &tmpBool), Result::SUCCESS);
533e509ee18Sopenharmony_ci
534e509ee18Sopenharmony_ci    std::string tmpStr;
535e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("traceFormat", &tmpStr), Result::SUCCESS);
536e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("streamCompression", &tmpStr), Result::SUCCESS);
537e509ee18Sopenharmony_ci}
538e509ee18Sopenharmony_ci
539e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, MixedStackToJsonTest)
540e509ee18Sopenharmony_ci{
541e509ee18Sopenharmony_ci    MixedStack mixedStack;
542e509ee18Sopenharmony_ci    auto callFrames_ = std::vector<std::unique_ptr<CallFrame>>();
543e509ee18Sopenharmony_ci    std::unique_ptr<CallFrame> callFrame = std::make_unique<CallFrame>();
544e509ee18Sopenharmony_ci    std::unique_ptr<Location> location = std::make_unique<Location>();
545e509ee18Sopenharmony_ci    location->SetScriptId(13).SetLine(16);
546e509ee18Sopenharmony_ci
547e509ee18Sopenharmony_ci    std::unique_ptr<RemoteObject> res = std::make_unique<RemoteObject>();
548e509ee18Sopenharmony_ci    res->SetType("idle2");
549e509ee18Sopenharmony_ci
550e509ee18Sopenharmony_ci    callFrame->SetCallFrameId(55);
551e509ee18Sopenharmony_ci    callFrame->SetLocation(std::move(location));
552e509ee18Sopenharmony_ci    callFrame->SetThis(std::move(res));
553e509ee18Sopenharmony_ci    callFrames_.emplace_back(std::move(callFrame));
554e509ee18Sopenharmony_ci    mixedStack.SetCallFrames(std::move(callFrames_));
555e509ee18Sopenharmony_ci
556e509ee18Sopenharmony_ci    std::vector<void *> p;
557e509ee18Sopenharmony_ci    int a = 5;
558e509ee18Sopenharmony_ci    void * ptr = &a;
559e509ee18Sopenharmony_ci    p.emplace_back(std::move(ptr));
560e509ee18Sopenharmony_ci    mixedStack.SetNativePointers(std::move(p));
561e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = mixedStack.ToJson();
562e509ee18Sopenharmony_ci
563e509ee18Sopenharmony_ci    std::string method;
564e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetString("method", &method), Result::SUCCESS);
565e509ee18Sopenharmony_ci    EXPECT_EQ(mixedStack.GetName(), method);
566e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
567e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
568e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> callFrames;
569e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetArray("callFrames", &callFrames), Result::SUCCESS);
570e509ee18Sopenharmony_ci    ASSERT_NE(callFrames, nullptr);
571e509ee18Sopenharmony_ci    EXPECT_EQ(callFrames->GetSize(), 1);
572e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> nativePointer;
573e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetArray("nativePointer", &nativePointer), Result::SUCCESS);
574e509ee18Sopenharmony_ci    ASSERT_NE(nativePointer, nullptr);
575e509ee18Sopenharmony_ci    EXPECT_EQ(nativePointer->GetSize(), 1);
576e509ee18Sopenharmony_ci}
577e509ee18Sopenharmony_ci
578e509ee18Sopenharmony_ciHWTEST_F_L0(DebuggerEventsTest, AddHeapSnapshotChunkToJsonTest)
579e509ee18Sopenharmony_ci{
580e509ee18Sopenharmony_ci    AddHeapSnapshotChunk addHeapSnapshotChunk;
581e509ee18Sopenharmony_ci    addHeapSnapshotChunk.SetChunk("Chunk0001");
582e509ee18Sopenharmony_ci
583e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> json = addHeapSnapshotChunk.ToJson();
584e509ee18Sopenharmony_ci    std::unique_ptr<PtJson> params;
585e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetObject("params", &params), Result::SUCCESS);
586e509ee18Sopenharmony_ci    std::string method;
587e509ee18Sopenharmony_ci    ASSERT_EQ(json->GetString("method", &method), Result::SUCCESS);
588e509ee18Sopenharmony_ci    EXPECT_EQ(addHeapSnapshotChunk.GetName(), method);
589e509ee18Sopenharmony_ci    std::string tmpStr;
590e509ee18Sopenharmony_ci    ASSERT_EQ(params->GetString("Chunk", &tmpStr), Result::SUCCESS);
591e509ee18Sopenharmony_ci    EXPECT_EQ("Chunk0001", tmpStr);
592e509ee18Sopenharmony_ci}
593e509ee18Sopenharmony_ci}  // namespace panda::test