blob: 17f17802c9df9b33c5144d316072318ba37a31cb [file] [log] [blame]
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include "vm/debugger.h"
#include "vm/unit_test.h"
namespace dart {
TEST_CASE(Debugger_PrintBreakpointsToJSONArray) {
const char* kScriptChars =
"void main() {\n"
" print('won');\n"
" print('too');\n"
" print('free');\n"
" print('for');\n"
"}\n";
Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
EXPECT_VALID(lib);
Isolate* isolate = Isolate::Current();
Debugger* debugger = isolate->debugger();
const String& url = String::Handle(String::New(TestCase::url()));
// Empty case.
{
JSONStream js;
{
JSONArray jsarr(&js);
debugger->PrintBreakpointsToJSONArray(&jsarr);
}
EXPECT_STREQ("[]", js.ToCString());
}
// Test with a couple of breakpoints.
debugger->SetBreakpointAtLine(url, 2);
debugger->SetBreakpointAtLine(url, 3);
{
JSONStream js;
{
JSONArray jsarr(&js);
debugger->PrintBreakpointsToJSONArray(&jsarr);
}
EXPECT_STREQ(
"[{\"type\":\"Breakpoint\",\"id\":2,"
"\"enabled\":true,\"resolved\":false,"
"\"location\":{\"type\":\"Location\",\"libId\":12,"
"\"script\":\"dart:test-lib\",\"tokenPos\":12}},"
"{\"type\":\"Breakpoint\",\"id\":1,"
"\"enabled\":true,\"resolved\":false,"
"\"location\":{\"type\":\"Location\",\"libId\":12,"
"\"script\":\"dart:test-lib\",\"tokenPos\":6}}]",
js.ToCString());
}
}
} // namespace dart