1
0
forked from Alepha/Alepha

Move the colours stuff out of Testing and into console.

This commit is contained in:
2021-10-25 02:01:07 -04:00
parent 77532ca8ee
commit 3c11d6af74
4 changed files with 123 additions and 5 deletions

View File

@ -8,6 +8,9 @@ static_assert( __cplusplus > 201700, "C++17 Required" );
#include <string>
#include <iostream>
#include <algorithm>
#include <typeinfo>
#include <boost/core/demangle.hpp>
#include <Alepha/Meta/is_vector.h>
#include <Alepha/Meta/product_type_decay.h>
@ -25,6 +28,15 @@ namespace Alepha::Hydrogen::Testing
template< auto > struct TableTest;
}
inline void breakpoint() {}
namespace C
{
const bool debug= false;
const bool debugCaseTypes= false or C::debug;
using namespace Alepha::exports::console::C;
}
using namespace Utility::exports::evaluation;
template< typename RetVal, typename ... Args, RetVal (*function)( Args... ) >
@ -48,6 +60,8 @@ namespace Alepha::Hydrogen::Testing
int failureCount= 0;
for( const auto &[ comment, params, expected ]: tests )
{
if( C::debugCaseTypes ) std::cerr << boost::core::demangle( typeid( params ).name() ) << std::endl;
breakpoint();
if( std::apply( function, params ) != expected )
{
std::cout << C::red << " FAILURE" << C::normal << ": " << comment << std::endl;
@ -60,9 +74,10 @@ namespace Alepha::Hydrogen::Testing
}
};
struct VectorCases;
//struct VectorCases;
};
#ifdef DISABLED
template< typename RetVal, typename ... Args, RetVal (*function)( Args... ) >
struct TableTest< function >::VectorCases
{
@ -112,6 +127,7 @@ namespace Alepha::Hydrogen::Testing
return failureCount;
}
};
#endif
}
namespace exports::table_test

View File

@ -14,6 +14,7 @@ static_assert( __cplusplus > 201700, "C++17 Required" );
#include <memory>
#include <Alepha/console.h>
#include <Alepha/types.h>
namespace Alepha::Hydrogen::Testing
{
@ -200,7 +201,7 @@ namespace Alepha::Hydrogen::Testing
}
[[nodiscard]] inline int
runAllTests( const unsigned argcnt, const char *const *const argvec )
runAllTests( const argcnt_t argcnt, const argvec_t argvec )
{
return runAllTests( { argvec + 1, argvec + argcnt } );
}

45
Testing/test2.cc Normal file
View File

@ -0,0 +1,45 @@
static_assert( __cplusplus > 201700, "C++17 Required" );
#include <Alepha/Testing/TableTest.h>
#include <Alepha/Testing/test.h>
#include <Alepha/Utility/evaluation.h>
int
main( const int argcnt, const char *const *const argvec )
{
return Alepha::Testing::runAllTests( argcnt, argvec );
}
namespace
{
using namespace Alepha::Testing::exports;
using namespace Alepha::Utility::exports::evaluation;
int
add( int a, int b )
{
return a + b;
}
auto basic_test= "basic_test"_test <=[]
{
return 0;
};
auto test= "addition.two.test"_test <=TableTest< add >::Cases
{
{ "Basic Smoke Test", { 2, 2 }, 4 },
{ "Lefthand identity", { 0, 25 }, 25 },
{ "Righthand identity", { 25, 0 }, 25 },
};
auto alltests= enroll <=[]
{
"addition.two.local"_test <=TableTest< add >::Cases
{
{ "Negative case", { -10, -20 }, -30 },
};
};
}

View File

@ -17,9 +17,65 @@ namespace Alepha::Hydrogen
namespace C
{
const std::string csi= "\e[";
const std::string green= C::csi + "32m";
const std::string red= C::csi + "31m";
const std::string normal= C::csi + "0m";
const std::string color_code= "m";
enum Layer
{
fg_code= '3',
bg_code= '4',
};
enum class Color : char
{
black= '0',
red= '1',
green= '2',
brown= '3',
blue= '4',
magenta= '5',
cyan= '6',
white= '7',
};
}
using C::Layer;
using C::Color;
inline std::string
make_color( const Layer layer, const Color color )
{
return C::csi + char(layer) + char(color) + C::color_code;
}
namespace C
{
inline namespace exports
{
const std::string normal= C::csi + '0' + color_code;
inline namespace fg
{
const std::string black= make_color( C::fg_code, C::Color::black );
const std::string red= make_color( C::fg_code, C::Color::red );
const std::string green= make_color( C::fg_code, C::Color::green );
const std::string brown= make_color( C::fg_code, C::Color::brown );
const std::string blue= make_color( C::fg_code, C::Color::blue );
const std::string magenta= make_color( C::fg_code, C::Color::magenta );
const std::string cyan= make_color( C::fg_code, C::Color::cyan );
const std::string white= make_color( C::fg_code, C::Color::white );
}
namespace bg
{
const std::string black= make_color( C::bg_code, C::Color::black );
const std::string red= make_color( C::bg_code, C::Color::red );
const std::string green= make_color( C::bg_code, C::Color::green );
const std::string brown= make_color( C::bg_code, C::Color::brown );
const std::string blue= make_color( C::bg_code, C::Color::blue );
const std::string magenta= make_color( C::bg_code, C::Color::magenta );
const std::string cyan= make_color( C::bg_code, C::Color::cyan );
const std::string white= make_color( C::bg_code, C::Color::white );
}
}
}
namespace exports