This repository has been archived on 2025-02-26. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Pivot/test/test_assert.h
2024-05-04 13:08:11 +02:00

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); \
}