| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
1 |
// Formatting library for C++ - test version of FMT_ASSERT |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
2 |
// |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
3 |
// Copyright (c) 2012 - present, Victor Zverovich |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
4 |
// All rights reserved. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
5 |
// |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
6 |
// For the license information refer to format.h. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
7 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
8 |
#ifndef FMT_TEST_ASSERT_H_ |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
9 |
#define FMT_TEST_ASSERT_H_ |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
10 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
11 |
#include <stdexcept> |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
12 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
13 |
void throw_assertion_failure(const char* message); |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
14 |
#define FMT_ASSERT(condition, message) \ |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
15 |
if (!(condition)) throw_assertion_failure(message); |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
16 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
17 |
#include "gtest/gtest.h" |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
18 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
19 |
class assertion_failure : public std::logic_error { |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
20 |
public: |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
21 |
explicit assertion_failure(const char* message) : std::logic_error(message) {} |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
22 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
23 |
private: |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
24 |
virtual void avoid_weak_vtable(); |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
25 |
}; |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
26 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
27 |
void assertion_failure::avoid_weak_vtable() {} |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
28 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
29 |
// We use a separate function (rather than throw directly from FMT_ASSERT) to |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
30 |
// avoid GCC's -Wterminate warning when FMT_ASSERT is used in a destructor. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
31 |
inline void throw_assertion_failure(const char* message) { |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
32 |
throw assertion_failure(message); |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
33 |
} |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
34 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
35 |
// Expects an assertion failure. |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
36 |
#define EXPECT_ASSERT(stmt, message) \ |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
37 |
FMT_TEST_THROW_(stmt, assertion_failure, message, GTEST_NONFATAL_FAILURE_) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
38 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
39 |
#endif // FMT_TEST_ASSERT_H_ |
|
|
1970-01-01 00:00 |
40 |
|