1 //===-- MemoryMatcher.h -----------------------------------------*- C++ -*-===//
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-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_LIBC_UTILS_UNITTEST_MEMORY_MATCHER_H
10 #define LLVM_LIBC_UTILS_UNITTEST_MEMORY_MATCHER_H
11 
12 #include "src/__support/CPP/ArrayRef.h"
13 
14 #include "utils/UnitTest/Test.h"
15 
16 namespace __llvm_libc {
17 namespace memory {
18 namespace testing {
19 
20 using MemoryView = __llvm_libc::cpp::ArrayRef<char>;
21 
22 class MemoryMatcher : public __llvm_libc::testing::Matcher<MemoryView> {
23   MemoryView expected;
24   MemoryView actual;
25 
26 public:
MemoryMatcher(MemoryView expectedValue)27   MemoryMatcher(MemoryView expectedValue) : expected(expectedValue) {}
28 
29   bool match(MemoryView actualValue);
30 
31   void explainError(testutils::StreamWrapper &stream) override;
32 };
33 
34 } // namespace testing
35 } // namespace memory
36 } // namespace __llvm_libc
37 
38 #define EXPECT_MEM_EQ(expected, actual)                                        \
39   EXPECT_THAT(actual, __llvm_libc::memory::testing::MemoryMatcher(expected))
40 
41 #endif // LLVM_LIBC_UTILS_UNITTEST_MEMORY_MATCHER_H
42