mirror of
				https://github.com/fmtlib/fmt.git
				synced 2025-11-04 16:11:47 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Formatting library for C++ - test version of FMT_ASSERT
 | 
						|
//
 | 
						|
// Copyright (c) 2012 - present, Victor Zverovich
 | 
						|
// All rights reserved.
 | 
						|
//
 | 
						|
// For the license information refer to format.h.
 | 
						|
 | 
						|
#ifndef FMT_TEST_ASSERT_H_
 | 
						|
#define FMT_TEST_ASSERT_H_
 | 
						|
 | 
						|
#include <stdexcept>
 | 
						|
 | 
						|
void throw_assertion_failure(const char* message);
 | 
						|
#define FMT_ASSERT(condition, message) \
 | 
						|
  if (!(condition)) throw_assertion_failure(message);
 | 
						|
 | 
						|
#include "gtest-extra.h"
 | 
						|
#include "gtest/gtest.h"
 | 
						|
 | 
						|
class assertion_failure : public std::logic_error {
 | 
						|
 public:
 | 
						|
  explicit assertion_failure(const char* message) : std::logic_error(message) {}
 | 
						|
 | 
						|
 private:
 | 
						|
  virtual void avoid_weak_vtable();
 | 
						|
};
 | 
						|
 | 
						|
void assertion_failure::avoid_weak_vtable() {}
 | 
						|
 | 
						|
// We use a separate function (rather than throw directly from FMT_ASSERT) to
 | 
						|
// avoid GCC's -Wterminate warning when FMT_ASSERT is used in a destructor.
 | 
						|
inline void throw_assertion_failure(const char* message) {
 | 
						|
  throw assertion_failure(message);
 | 
						|
}
 | 
						|
 | 
						|
// Expects an assertion failure.
 | 
						|
#define EXPECT_ASSERT(stmt, message) \
 | 
						|
  FMT_TEST_THROW_(stmt, assertion_failure, message, GTEST_NONFATAL_FAILURE_)
 | 
						|
 | 
						|
#endif  // FMT_TEST_ASSERT_H_
 |