123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- //===- unittests/Tooling/ReplacementsYamlTest.cpp - Serialization tests ---===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // Tests for serialization of Replacements.
- //
- //===----------------------------------------------------------------------===//
- #include "clang/Tooling/ReplacementsYaml.h"
- #include "gtest/gtest.h"
- using namespace llvm;
- using namespace clang::tooling;
- TEST(ReplacementsYamlTest, serializesReplacements) {
- TranslationUnitReplacements Doc;
- Doc.MainSourceFile = "/path/to/source.cpp";
- Doc.Replacements.emplace_back("/path/to/file1.h", 232, 56, "replacement #1");
- Doc.Replacements.emplace_back("/path/to/file2.h", 301, 2, "replacement #2");
- std::string YamlContent;
- llvm::raw_string_ostream YamlContentStream(YamlContent);
- yaml::Output YAML(YamlContentStream);
- YAML << Doc;
- // NOTE: If this test starts to fail for no obvious reason, check whitespace.
- ASSERT_STREQ("---\n"
- "MainSourceFile: '/path/to/source.cpp'\n"
- "Replacements:\n"
- " - FilePath: '/path/to/file1.h'\n"
- " Offset: 232\n"
- " Length: 56\n"
- " ReplacementText: 'replacement #1'\n"
- " - FilePath: '/path/to/file2.h'\n"
- " Offset: 301\n"
- " Length: 2\n"
- " ReplacementText: 'replacement #2'\n"
- "...\n",
- YamlContentStream.str().c_str());
- }
- TEST(ReplacementsYamlTest, serializesNewLines) {
- TranslationUnitReplacements Doc;
- Doc.MainSourceFile = "/path/to/source.cpp";
- Doc.Replacements.emplace_back("/path/to/file1.h", 0, 0, "#include <utility>\n");
- std::string YamlContent;
- llvm::raw_string_ostream YamlContentStream(YamlContent);
- yaml::Output YAML(YamlContentStream);
- YAML << Doc;
- // NOTE: If this test starts to fail for no obvious reason, check whitespace.
- ASSERT_STREQ("---\n"
- "MainSourceFile: '/path/to/source.cpp'\n"
- "Replacements:\n"
- " - FilePath: '/path/to/file1.h'\n"
- " Offset: 0\n"
- " Length: 0\n"
- " ReplacementText: '#include <utility>\n\n'\n"
- "...\n",
- YamlContentStream.str().c_str());
- }
- TEST(ReplacementsYamlTest, deserializesReplacements) {
- std::string YamlContent = "---\n"
- "MainSourceFile: /path/to/source.cpp\n"
- "Replacements:\n"
- " - FilePath: /path/to/file1.h\n"
- " Offset: 232\n"
- " Length: 56\n"
- " ReplacementText: 'replacement #1'\n"
- " - FilePath: /path/to/file2.h\n"
- " Offset: 301\n"
- " Length: 2\n"
- " ReplacementText: 'replacement #2'\n"
- "...\n";
- TranslationUnitReplacements DocActual;
- yaml::Input YAML(YamlContent);
- YAML >> DocActual;
- ASSERT_FALSE(YAML.error());
- ASSERT_EQ(2u, DocActual.Replacements.size());
- ASSERT_EQ("/path/to/source.cpp", DocActual.MainSourceFile);
- ASSERT_EQ("/path/to/file1.h", DocActual.Replacements[0].getFilePath());
- ASSERT_EQ(232u, DocActual.Replacements[0].getOffset());
- ASSERT_EQ(56u, DocActual.Replacements[0].getLength());
- ASSERT_EQ("replacement #1", DocActual.Replacements[0].getReplacementText());
- ASSERT_EQ("/path/to/file2.h", DocActual.Replacements[1].getFilePath());
- ASSERT_EQ(301u, DocActual.Replacements[1].getOffset());
- ASSERT_EQ(2u, DocActual.Replacements[1].getLength());
- ASSERT_EQ("replacement #2", DocActual.Replacements[1].getReplacementText());
- }
- TEST(ReplacementsYamlTest, deserializesWithoutContext) {
- // Make sure a doc can be read without the context field.
- std::string YamlContent = "---\n"
- "MainSourceFile: /path/to/source.cpp\n"
- "Replacements:\n"
- " - FilePath: target_file.h\n"
- " Offset: 1\n"
- " Length: 10\n"
- " ReplacementText: replacement\n"
- "...\n";
- TranslationUnitReplacements DocActual;
- yaml::Input YAML(YamlContent);
- YAML >> DocActual;
- ASSERT_FALSE(YAML.error());
- ASSERT_EQ("/path/to/source.cpp", DocActual.MainSourceFile);
- ASSERT_EQ(1u, DocActual.Replacements.size());
- ASSERT_EQ("target_file.h", DocActual.Replacements[0].getFilePath());
- ASSERT_EQ(1u, DocActual.Replacements[0].getOffset());
- ASSERT_EQ(10u, DocActual.Replacements[0].getLength());
- ASSERT_EQ("replacement", DocActual.Replacements[0].getReplacementText());
- }
|