1 //===-- Simple checkers for integrations tests ------------------*- 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_INTEGRATION_TEST_TEST_H
10 #define LLVM_LIBC_UTILS_INTEGRATION_TEST_TEST_H
11 
12 #include "src/__support/OSUtil/io.h"
13 #include "src/__support/OSUtil/quick_exit.h"
14 
15 #define __AS_STRING(val) #val
16 #define __CHECK(file, line, val, should_exit)                                  \
17   if (!(val)) {                                                                \
18     __llvm_libc::write_to_stderr(file ":" __AS_STRING(                         \
19         line) ": Expected '" #val "' to be true, but is false\n");             \
20     if (should_exit)                                                           \
21       __llvm_libc::quick_exit(127);                                            \
22   }
23 
24 #define __CHECK_NE(file, line, val, should_exit)                               \
25   if ((val)) {                                                                 \
26     __llvm_libc::write_to_stderr(file ":" __AS_STRING(                         \
27         line) ": Expected '" #val "' to be false, but is true\n");             \
28     if (should_exit)                                                           \
29       __llvm_libc::quick_exit(127);                                            \
30   }
31 
32 #define EXPECT_TRUE(val) __CHECK(__FILE__, __LINE__, val, false)
33 #define ASSERT_TRUE(val) __CHECK(__FILE__, __LINE__, val, true)
34 #define EXPECT_FALSE(val) __CHECK_NE(__FILE__, __LINE__, val, false)
35 #define ASSERT_FALSE(val) __CHECK_NE(__FILE__, __LINE__, val, true)
36 
37 #endif // LLVM_LIBC_UTILS_INTEGRATION_TEST_TEST_H
38