diff options
Diffstat (limited to 'lib/xray/tests/unit/test_helpers.h')
-rw-r--r-- | lib/xray/tests/unit/test_helpers.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/xray/tests/unit/test_helpers.h b/lib/xray/tests/unit/test_helpers.h new file mode 100644 index 000000000000..ff0311e9bd30 --- /dev/null +++ b/lib/xray/tests/unit/test_helpers.h @@ -0,0 +1,78 @@ +//===-- test_helpers.h ----------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file is a part of XRay, a function call tracing system. +// +//===----------------------------------------------------------------------===// +#ifndef COMPILER_RT_LIB_XRAY_TESTS_TEST_HELPERS_H_ +#define COMPILER_RT_LIB_XRAY_TESTS_TEST_HELPERS_H_ + +#include "xray_buffer_queue.h" +#include "xray_segmented_array.h" +#include "llvm/XRay/Trace.h" +#include "llvm/XRay/XRayRecord.h" +#include "gmock/gmock.h" + +// TODO: Move these to llvm/include/Testing/XRay/... +namespace llvm { +namespace xray { + +std::string RecordTypeAsString(RecordTypes T); +void PrintTo(RecordTypes T, std::ostream *OS); +void PrintTo(const XRayRecord &R, std::ostream *OS); +void PrintTo(const Trace &T, std::ostream *OS); + +namespace testing { + +MATCHER_P(FuncId, F, "") { + *result_listener << "where the function id is " << F; + return arg.FuncId == F; +} + +MATCHER_P(RecordType, T, "") { + *result_listener << "where the record type is " << RecordTypeAsString(T); + return arg.Type == T; +} + +MATCHER_P(HasArg, A, "") { + *result_listener << "where args contains " << A; + return !arg.CallArgs.empty() && + std::any_of(arg.CallArgs.begin(), arg.CallArgs.end(), + [this](decltype(A) V) { return V == A; }); +} + +MATCHER_P(TSCIs, M, std::string("TSC is ") + ::testing::PrintToString(M)) { + return ::testing::Matcher<decltype(arg.TSC)>(M).MatchAndExplain( + arg.TSC, result_listener); +} + +} // namespace testing +} // namespace xray +} // namespace llvm + +namespace __xray { + +std::string serialize(BufferQueue &Buffers, int32_t Version); + +template <class T> void PrintTo(const Array<T> &A, std::ostream *OS) { + *OS << "["; + bool first = true; + for (const auto &E : A) { + if (!first) { + *OS << ", "; + } + PrintTo(E, OS); + first = false; + } + *OS << "]"; +} + +} // namespace __xray + +#endif // COMPILER_RT_LIB_XRAY_TESTS_TEST_HELPERS_H_ |