blob: 5d009f8812e77fbf0eeb1a0c857ace8e23559957 [file] [log] [blame]
//===- unittests/cpp11-migrate/ReplacementsYamlTest.cpp -------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Test for the Yaml files generated by transforms on header files.
//
//===----------------------------------------------------------------------===//
#include "Utility.h"
#include "Core/FileOverrides.h"
#include "gtest/gtest.h"
using namespace llvm;
TEST(ReplacementsYamlTest, writeReadTest) {
using clang::tooling::Replacement;
const std::string HeaderFileName = "/path/to/common.h";
const std::string TransformID = "loop-convert";
const unsigned int ReplacementOffset1 = 232;
const unsigned int ReplacementLength1 = 56;
const std::string ReplacementText1 = "(auto & elem : V)";
const unsigned int ReplacementOffset2 = 301;
const unsigned int ReplacementLength2 = 2;
const std::string ReplacementText2 = "elem";
TransformReplacements TR;
TR.TransformID = TransformID;
TR.GeneratedReplacements
.push_back(Replacement(HeaderFileName, ReplacementOffset1,
ReplacementLength1, ReplacementText1));
TR.GeneratedReplacements
.push_back(Replacement(HeaderFileName, ReplacementOffset2,
ReplacementLength2, ReplacementText2));
TransformDocument TD;
TD.FileName = HeaderFileName.c_str();
TD.Replacements.push_back(TR);
std::string YamlContent;
llvm::raw_string_ostream YamlContentStream(YamlContent);
// Write to the YAML file.
{
yaml::Output YAML(YamlContentStream);
YAML << TD;
YamlContentStream.str();
ASSERT_NE(YamlContent.length(), 0u);
}
// Read from the YAML file and verify that what was written is exactly what
// we read back.
{
TransformDocument TDActual;
yaml::Input YAML(YamlContent);
YAML >> TDActual;
ASSERT_NO_ERROR(YAML.error());
EXPECT_EQ(HeaderFileName, TDActual.FileName);
ASSERT_EQ(1u, TDActual.Replacements.size());
TransformReplacements TRActual = TDActual.Replacements[0];
EXPECT_EQ(TransformID, TRActual.TransformID);
ASSERT_EQ(2u, TRActual.GeneratedReplacements.size());
EXPECT_EQ(ReplacementOffset1,
TRActual.GeneratedReplacements[0].getOffset());
EXPECT_EQ(ReplacementLength1,
TRActual.GeneratedReplacements[0].getLength());
EXPECT_EQ(ReplacementText1,
TRActual.GeneratedReplacements[0].getReplacementText().str());
EXPECT_EQ(ReplacementOffset2,
TRActual.GeneratedReplacements[1].getOffset());
EXPECT_EQ(ReplacementLength2,
TRActual.GeneratedReplacements[1].getLength());
EXPECT_EQ(ReplacementText2,
TRActual.GeneratedReplacements[1].getReplacementText().str());
}
}