brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · cbbf328 Raw
73 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIBC_TEST_UNITTEST_MEMORYMATCHER_H10#define LLVM_LIBC_TEST_UNITTEST_MEMORYMATCHER_H11 12#include "src/__support/CPP/span.h"13 14#include "src/__support/macros/config.h"15#include "test/UnitTest/Test.h"16 17namespace LIBC_NAMESPACE_DECL {18namespace testing {19 20using MemoryView = LIBC_NAMESPACE::cpp::span<const char>;21 22} // namespace testing23} // namespace LIBC_NAMESPACE_DECL24 25#if !LIBC_TEST_HAS_MATCHERS()26 27#define EXPECT_MEM_EQ(expected, actual)                                        \28  do {                                                                         \29    LIBC_NAMESPACE::testing::MemoryView e = (expected);                        \30    LIBC_NAMESPACE::testing::MemoryView a = (actual);                          \31    ASSERT_EQ(e.size(), a.size());                                             \32    EXPECT_BYTES_EQ(e.data(), a.data(), e.size());                             \33  } while (0)34 35#define ASSERT_MEM_EQ(expected, actual)                                        \36  do {                                                                         \37    LIBC_NAMESPACE::testing::MemoryView e = (expected);                        \38    LIBC_NAMESPACE::testing::MemoryView a = (actual);                          \39    ASSERT_EQ(e.size(), a.size());                                             \40    ASSERT_BYTES_EQ(e.data(), a.data(), e.size());                             \41  } while (0)42 43#else // LIBC_TEST_HAS_MATCHERS()44 45namespace LIBC_NAMESPACE_DECL {46namespace testing {47 48class MemoryMatcher : public Matcher<MemoryView> {49  MemoryView expected;50  MemoryView actual;51  bool mismatch_size = false;52  size_t mismatch_index = cpp::numeric_limits<size_t>::max();53 54public:55  MemoryMatcher(MemoryView expectedValue) : expected(expectedValue) {}56 57  bool match(MemoryView actualValue);58 59  void explainError() override;60};61 62} // namespace testing63} // namespace LIBC_NAMESPACE_DECL64 65#define EXPECT_MEM_EQ(expected, actual)                                        \66  EXPECT_THAT(actual, LIBC_NAMESPACE::testing::MemoryMatcher(expected))67#define ASSERT_MEM_EQ(expected, actual)                                        \68  ASSERT_THAT(actual, LIBC_NAMESPACE::testing::MemoryMatcher(expected))69 70#endif // !LIBC_TEST_HAS_MATCHERS()71 72#endif // LLVM_LIBC_TEST_UNITTEST_MEMORYMATCHER_H73