brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 43c548c Raw
52 lines · cpp
1//===- Protocol.cpp - LSP JSON protocol unit tests ------------------------===//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 "llvm/Support/LSP/Protocol.h"10 11#include "gtest/gtest.h"12 13using namespace llvm;14using namespace llvm::lsp;15using namespace testing;16 17namespace {18 19TEST(ProtocolTest, DiagnosticTagPresent) {20  Diagnostic diagnostic;21  diagnostic.tags.push_back(DiagnosticTag::Unnecessary);22 23  llvm::json::Value json = toJSON(diagnostic);24  const llvm::json::Object *o = json.getAsObject();25  const llvm::json::Array *v = o->get("tags")->getAsArray();26  EXPECT_EQ(*v, llvm::json::Array{1});27 28  Diagnostic parsed;29  llvm::json::Path::Root root = llvm::json::Path::Root();30  bool success = fromJSON(json, parsed, llvm::json::Path(root));31  EXPECT_TRUE(success);32  ASSERT_EQ(parsed.tags.size(), (size_t)1);33  EXPECT_EQ(parsed.tags.at(0), DiagnosticTag::Unnecessary);34}35 36TEST(ProtocolTest, DiagnosticTagNotPresent) {37  Diagnostic diagnostic;38 39  llvm::json::Value json = toJSON(diagnostic);40  const llvm::json::Object *o = json.getAsObject();41  const llvm::json::Value *v = o->get("tags");42  EXPECT_EQ(v, nullptr);43 44  Diagnostic parsed;45  llvm::json::Path::Root root = llvm::json::Path::Root();46  bool success = fromJSON(json, parsed, llvm::json::Path(root));47  EXPECT_TRUE(success);48  EXPECT_TRUE(parsed.tags.empty());49}50 51} // namespace52