43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
#pragma once
|
|
|
|
/**
|
|
* \file Test.h
|
|
* \brief Contient une assertion utilisable avec les optimisations
|
|
*/
|
|
|
|
#include <iostream>
|
|
|
|
/**
|
|
* \def TEST_SUCCESSFUL
|
|
* \brief Indique que le test a été passé
|
|
*/
|
|
#define TEST_SUCCESSFUL 0
|
|
|
|
/**
|
|
* \def TEST_FAILED
|
|
* \brief Indique que le test a échoué
|
|
*/
|
|
#define TEST_FAILED 1
|
|
|
|
#ifndef __FUNCTION_NAME__
|
|
#ifdef _WIN32
|
|
#define __FUNCTION_NAME__ __FUNCTION__
|
|
#else
|
|
#define __FUNCTION_NAME__ __PRETTY_FUNCTION__
|
|
#endif
|
|
#endif
|
|
|
|
/**
|
|
* \def test_assert
|
|
* \param ... L'expression à évaluer
|
|
* \brief Evalue une expression et arrête le programme si elle n'est pas valide
|
|
* \note Cette macro équivaut à assert() mais fonctionne également avec les optimisations activées
|
|
*/
|
|
#define test_assert(...) \
|
|
if (!static_cast<bool>(__VA_ARGS__)) { \
|
|
std::cout << __FILE__ << ":" << __LINE__ << ": " << __FUNCTION_NAME__ << ": Assertion failed !\n"; \
|
|
std::cout << " " << __LINE__ << " |\t" << #__VA_ARGS__ << std::endl; \
|
|
std::exit(TEST_FAILED); \
|
|
}
|
|
|