brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · e536039 Raw
115 lines · cpp
1//===-- StructuredDataTest.cpp --------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "gtest/gtest.h"10 11#include "TestingSupport/TestUtilities.h"12#include "lldb/Utility/Status.h"13#include "lldb/Utility/StreamString.h"14#include "lldb/Utility/StructuredData.h"15#include "llvm/Support/Path.h"16 17using namespace lldb;18using namespace lldb_private;19 20TEST(StructuredDataTest, StringDump) {21  std::pair<llvm::StringRef, llvm::StringRef> TestCases[] = {22      {R"(asdfg)", R"("asdfg")"},23      {R"(as"df)", R"("as\"df")"},24      {R"(as\df)", R"("as\\df")"},25  };26  for (auto P : TestCases) {27    StreamString S;28    const bool pretty_print = false;29    StructuredData::String(P.first).Dump(S, pretty_print);30    EXPECT_EQ(P.second, S.GetString());31  }32}33 34TEST(StructuredDataTest, GetDescriptionEmpty) {35  Status status;36  auto object_sp = StructuredData::ParseJSON("{}");37  ASSERT_NE(nullptr, object_sp);38 39  StreamString S;40  object_sp->GetDescription(S);41  EXPECT_EQ(0u, S.GetSize());42}43 44TEST(StructuredDataTest, GetDescriptionBasic) {45  Status status;46  std::string input = GetInputFilePath("StructuredData-basic.json");47  auto object_sp = StructuredData::ParseJSONFromFile(FileSpec(input), status);48  ASSERT_NE(nullptr, object_sp);49 50  const std::string expected = "[0]: 1\n"51                               "[1]: 2\n"52                               "[2]: 3";53 54  StreamString S;55  object_sp->GetDescription(S);56  EXPECT_EQ(expected, S.GetString());57}58 59TEST(StructuredDataTest, GetDescriptionNested) {60  Status status;61  std::string input = GetInputFilePath("StructuredData-nested.json");62  auto object_sp = StructuredData::ParseJSONFromFile(FileSpec(input), status);63  ASSERT_NE(nullptr, object_sp);64 65  const std::string expected = "my_dict:\n"66                               "  [0]:\n"67                               "    three: 3\n"68                               "    two: 2\n"69                               "  [1]:\n"70                               "    four:\n"71                               "      val: 4\n"72                               "  [2]: 1";73 74  StreamString S;75  object_sp->GetDescription(S);76  EXPECT_EQ(expected, S.GetString());77}78 79TEST(StructuredDataTest, GetDescriptionFull) {80  Status status;81  std::string input = GetInputFilePath("StructuredData-full.json");82  auto object_sp = StructuredData::ParseJSONFromFile(FileSpec(input), status);83  ASSERT_NE(nullptr, object_sp);84 85  const std::string expected = "Array:\n"86                               "  [0]: 3.140000\n"87                               "  [1]:\n"88                               "    key: val\n"89                               "Dictionary:\n"90                               "  FalseBool: False\n"91                               "Integer: 1\n"92                               "Null: NULL\n"93                               "String: value\n"94                               "TrueBool: True";95 96  StreamString S;97  object_sp->GetDescription(S);98  EXPECT_EQ(expected, S.GetString());99}100 101TEST(StructuredDataTest, ParseJSONFromFile) {102  Status status;103  auto object_sp = StructuredData::ParseJSONFromFile(104      FileSpec("non-existing-file.json"), status);105  EXPECT_EQ(nullptr, object_sp);106 107  std::string input = GetInputFilePath("StructuredData-basic.json");108  object_sp = StructuredData::ParseJSONFromFile(FileSpec(input), status);109  ASSERT_NE(nullptr, object_sp);110 111  StreamString S;112  object_sp->Dump(S, false);113  EXPECT_EQ("[1,2,3]", S.GetString());114}115