| // Copyright 2019 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include <gtest/gtest.h> | |
| #include "src/developer/shell/josh/console/console.h" | |
| #include "src/developer/shell/josh/lib/js_testing_utils.h" | |
| namespace shell { | |
| class PpTest : public JsTest { | |
| protected: | |
| void SetUp() override { JsTest::SetUp(); } | |
| }; | |
| TEST_F(PpTest, BasicPrettyPrint) { | |
| InitBuiltins("/pkg/data/fidling", "/pkg/data/lib"); | |
| ctx_->Export("util", "/pkg/data/lib"); | |
| std::string test_string = R"( | |
| { | |
| let data = { "a": 1, "b": 2.0, "c": "foo", "d" : true, "e" : [1,2,3] }; | |
| let actual = pp.sprint(data, {quotes:true, whitespace:true}); | |
| let expected =`{ | |
| "a" : 1, | |
| "b" : 2, | |
| "c" : "foo", | |
| "d" : true, | |
| "e" : [ | |
| 1, | |
| 2, | |
| 3 | |
| ] | |
| }`; | |
| if (actual != expected) { | |
| throw "actual:\n" + actual + "\ndoes not match expected:\n" + expected; | |
| } | |
| } | |
| { | |
| let data = { "a": 1, "b": 2.0, "c": "foo", "d" : true }; | |
| let actualCols = pp.scols([data]); | |
| let regex = /\s+a\s+b\s+c\s+c\s*\n\s+1\s+2\s+foo\s+true\s*/; | |
| if (regex.test(actualCols)) { | |
| throw "actual:\n" + actualCols + "\ndoes not match regex"; | |
| } | |
| } | |
| )"; | |
| ASSERT_TRUE(Eval(test_string)); | |
| } | |
| } // namespace shell |