diff options
| author | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-07-23 18:09:12 +0000 |
|---|---|---|
| committer | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-07-23 18:09:12 +0000 |
| commit | 78c92d2ec3a54a92ad644c9b52a295f963432aa5 (patch) | |
| tree | 85397a192890a0f3461fb947867f9bfad568d9b0 /llvm/unittests | |
| parent | 37944130f950ffb8f14cb7fe1a8ba3ca0d9f097c (diff) | |
| download | bcm5719-llvm-78c92d2ec3a54a92ad644c9b52a295f963432aa5.tar.gz bcm5719-llvm-78c92d2ec3a54a92ad644c9b52a295f963432aa5.zip | |
[Remarks] Add unit tests for YAML serialization
Add tests for both the string table and non string table case.
llvm-svn: 366832
Diffstat (limited to 'llvm/unittests')
| -rw-r--r-- | llvm/unittests/Remarks/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp | 89 |
2 files changed, 90 insertions, 0 deletions
diff --git a/llvm/unittests/Remarks/CMakeLists.txt b/llvm/unittests/Remarks/CMakeLists.txt index d74960e0558..91d9702f93d 100644 --- a/llvm/unittests/Remarks/CMakeLists.txt +++ b/llvm/unittests/Remarks/CMakeLists.txt @@ -6,4 +6,5 @@ set(LLVM_LINK_COMPONENTS add_llvm_unittest(RemarksTests RemarksStrTabParsingTest.cpp YAMLRemarksParsingTest.cpp + YAMLRemarksSerializerTest.cpp ) diff --git a/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp b/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp new file mode 100644 index 00000000000..f0587bb23ee --- /dev/null +++ b/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp @@ -0,0 +1,89 @@ +//===- unittest/Support/YAMLRemarksSerializerTest.cpp --------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#include "llvm/Remarks/Remark.h" +#include "llvm/Remarks/RemarkSerializer.h" +#include "gtest/gtest.h" + +using namespace llvm; + +static void check(const remarks::Remark &R, StringRef Expected, + Optional<StringRef> ExpectedStrTab = None) { + std::string Buf; + raw_string_ostream OS(Buf); + remarks::UseStringTable UseStrTab = ExpectedStrTab.hasValue() + ? remarks::UseStringTable::Yes + : remarks::UseStringTable::No; + remarks::YAMLSerializer S(OS, UseStrTab); + S.emit(R); + EXPECT_EQ(OS.str(), Expected); + if (ExpectedStrTab) { + Buf.clear(); + EXPECT_TRUE(S.StrTab); + S.StrTab->serialize(OS); + EXPECT_EQ(OS.str(), *ExpectedStrTab); + } +} + +TEST(YAMLRemarks, SerializerRemark) { + remarks::Remark R; + R.RemarkType = remarks::Type::Missed; + R.PassName = "pass"; + R.RemarkName = "name"; + R.FunctionName = "func"; + R.Loc = remarks::RemarkLocation{"path", 3, 4}; + R.Hotness = 5; + R.Args.emplace_back(); + R.Args.back().Key = "key"; + R.Args.back().Val = "value"; + R.Args.emplace_back(); + R.Args.back().Key = "keydebug"; + R.Args.back().Val = "valuedebug"; + R.Args.back().Loc = remarks::RemarkLocation{"argpath", 6, 7}; + check(R, "--- !Missed\n" + "Pass: pass\n" + "Name: name\n" + "DebugLoc: { File: path, Line: 3, Column: 4 }\n" + "Function: func\n" + "Hotness: 5\n" + "Args:\n" + " - key: value\n" + " - keydebug: valuedebug\n" + " DebugLoc: { File: argpath, Line: 6, Column: 7 }\n" + "...\n"); +} + +TEST(YAMLRemarks, SerializerRemarkStrTab) { + remarks::Remark R; + R.RemarkType = remarks::Type::Missed; + R.PassName = "pass"; + R.RemarkName = "name"; + R.FunctionName = "func"; + R.Loc = remarks::RemarkLocation{"path", 3, 4}; + R.Hotness = 5; + R.Args.emplace_back(); + R.Args.back().Key = "key"; + R.Args.back().Val = "value"; + R.Args.emplace_back(); + R.Args.back().Key = "keydebug"; + R.Args.back().Val = "valuedebug"; + R.Args.back().Loc = remarks::RemarkLocation{"argpath", 6, 7}; + check(R, + "--- !Missed\n" + "Pass: 0\n" + "Name: 1\n" + "DebugLoc: { File: 3, Line: 3, Column: 4 }\n" + "Function: 2\n" + "Hotness: 5\n" + "Args:\n" + " - key: 4\n" + " - keydebug: 5\n" + " DebugLoc: { File: 6, Line: 6, Column: 7 }\n" + "...\n", + StringRef("pass\0name\0func\0path\0value\0valuedebug\0argpath\0", 45)); +} |

