git repos / blockattack-game

blame: source/misc/embedded_libs/fmt-8.1.1/test/test-assert.h

normal view · raw

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