Improved tests suite
Enhanced tests printed output. Created own assertions so that tests can be also executed when compiling in release mode.
This commit is contained in:
parent
4a8df28ca6
commit
f31abb364b
|
@ -209,6 +209,7 @@ qt_add_executable(LogDoctor
|
|||
MANUAL_FINALIZATION
|
||||
${PROJECT_SOURCES}
|
||||
)
|
||||
|
||||
qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
|
||||
|
||||
if(WIN32)
|
||||
|
@ -260,6 +261,8 @@ include(CTest)
|
|||
enable_testing()
|
||||
add_executable(LogDocTester
|
||||
tests/main.cpp
|
||||
# suites
|
||||
tests/lib.h
|
||||
tests/white_box.h
|
||||
tests/white_box.cpp
|
||||
# 2 test
|
||||
|
|
113
logdoctor/tests/lib.h
Normal file
113
logdoctor/tests/lib.h
Normal file
|
@ -0,0 +1,113 @@
|
|||
#ifndef LOGDOCTESTER__LIB_H
|
||||
#define LOGDOCTESTER__LIB_H
|
||||
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
#include <QtSystemDetection>
|
||||
|
||||
|
||||
#if defined( Q_OS_MACOS )
|
||||
#define C_DEFAULT ""
|
||||
#define C_TESTING ""
|
||||
#define C_FAILED ""
|
||||
#define C_PASSED ""
|
||||
#define C_WARN ""
|
||||
#define C_SUITE ""
|
||||
#elif defined( Q_OS_WINDOWS )
|
||||
#define C_DEFAULT ""
|
||||
#define C_TESTING ""
|
||||
#define C_FAILED ""
|
||||
#define C_PASSED ""
|
||||
#define C_WARN ""
|
||||
#define C_SUITE ""
|
||||
#elif defined( Q_OS_LINUX ) || defined( Q_OS_BSD4 )
|
||||
#define C_DEFAULT "\x1b[0m"
|
||||
#define C_TESTING "\x1b[1;30m"
|
||||
#define C_FAILED "\x1b[1;31m"
|
||||
#define C_PASSED "\x1b[1;32m"
|
||||
#define C_WARN "\x1b[1;33m"
|
||||
#define C_SUITE "\x1b[1;34m"
|
||||
#else
|
||||
#error "System not supported"
|
||||
#endif
|
||||
|
||||
|
||||
#define T_INIT(ARG)\
|
||||
unsigned n_tested{0}, n_passed{0}, n_failed{0};\
|
||||
bool successful;\
|
||||
std::cout << "\n\n"\
|
||||
<< "┏(" C_SUITE "TEST_SUITE" C_DEFAULT ") " ARG << std::endl;
|
||||
|
||||
#define T_TEST_START(ARG)\
|
||||
++n_tested;\
|
||||
successful = true;\
|
||||
std::cout << "┃\n"\
|
||||
<< "┠┄┬[" C_TESTING "TESTING" C_DEFAULT "] " ARG "()" << std::endl;
|
||||
|
||||
#define T_TEST_RESULT()\
|
||||
std::cout << "┃ │" << std::endl;\
|
||||
if (successful) {\
|
||||
++n_passed;\
|
||||
std::cout << "┃ └┄─[" C_PASSED "PASSED" C_DEFAULT "]" << std::endl;\
|
||||
} else {\
|
||||
++n_failed;\
|
||||
std::cout << "┃ └┄─[" C_FAILED "FAILED" C_DEFAULT "]" << std::endl;\
|
||||
}
|
||||
|
||||
#define T_FIN()\
|
||||
std::cout << "┃\n"\
|
||||
<< "┗━┳━━━━━━━━┯━━━━━━━━┯━━━━━━━━┓\n"\
|
||||
<< " ┃ TESTED ┆ PASSED ┆ FAILED ┃\n"\
|
||||
<< " ┃ " << std::setw(6) << n_tested << " ┆ " << std::setw(6) << n_passed << " ┆ " << std::setw(6) << n_failed << " ┃\n"\
|
||||
<< " ┗━━━━━━━━┷━━━━━━━━┷━━━━━━━━┛"\
|
||||
<< std::endl;\
|
||||
return n_failed == 0 && n_passed == n_tested;
|
||||
|
||||
#define T_ASSERT(ARG)\
|
||||
if (!(ARG)) {\
|
||||
std::cout << "┃ │\n"\
|
||||
<< "┃ ├─┄{" C_WARN "ASSERTION_FAILED" C_DEFAULT "}@" C_WARN << __LINE__ << C_DEFAULT " " #ARG << std::endl;\
|
||||
successful = false;\
|
||||
}
|
||||
|
||||
#define T_ASSERT_NOT(ARG)\
|
||||
if (ARG) {\
|
||||
std::cout << "┃ │\n"\
|
||||
<< "┃ ├─┄{" C_WARN "ASSERTION_FAILED" C_DEFAULT "}@" C_WARN << __LINE__ << C_DEFAULT " ! " #ARG << std::endl;\
|
||||
successful = false;\
|
||||
}
|
||||
|
||||
#define T_EXPECT(TARGET,EXPECTED)\
|
||||
if (TARGET != EXPECTED) {\
|
||||
std::cout << "┃ │\n"\
|
||||
<< "┃ ├─┄{" C_WARN "EXPECTATION_FAILED" C_DEFAULT "}@" C_WARN << __LINE__ << C_DEFAULT " " #TARGET << " == " << #EXPECTED << std::endl;\
|
||||
successful = false;\
|
||||
}
|
||||
|
||||
#define T_EXPECT_NOT(TARGET,EXPECTED)\
|
||||
if (TARGET == EXPECTED) {\
|
||||
std::cout << "┃ │\n"\
|
||||
<< "┃ ├─┄{" C_WARN "EXPECTATION_FAILED" C_DEFAULT "}@" C_WARN << __LINE__ << C_DEFAULT " " #TARGET << " != " << #EXPECTED << std::endl;\
|
||||
successful = false;\
|
||||
}
|
||||
|
||||
|
||||
#define REDIRECT_STDOUT()\
|
||||
std::streambuf* out{ std::cout.rdbuf() };\
|
||||
std::stringstream out_;\
|
||||
std::cout.rdbuf( out_.rdbuf() );
|
||||
|
||||
#define RESTORE_STDOUT()\
|
||||
std::cout.rdbuf( out );
|
||||
|
||||
#define REDIRECT_STDERR()\
|
||||
std::streambuf* err{ std::cerr.rdbuf() };\
|
||||
std::stringstream err_;\
|
||||
std::cerr.rdbuf( err_.rdbuf() );
|
||||
|
||||
#define RESTORE_STDERR()\
|
||||
std::cerr.rdbuf( err );
|
||||
|
||||
|
||||
#endif // LOGDOCTESTER__LIB_H
|
|
@ -6,20 +6,21 @@
|
|||
|
||||
int main()
|
||||
{
|
||||
std::cout << "STARTING TEST SUITE" << std::endl;
|
||||
std::cout << "LOGDOCTOR TESTER" << std::endl;
|
||||
bool passed{ true };
|
||||
|
||||
std::cout << "\nTESTING: operators" << std::endl;
|
||||
Testing::testOperators();
|
||||
passed &= Testing::testOperators();
|
||||
|
||||
std::cout << "\nTESTING: utilities" << std::endl;
|
||||
Testing::testUtilities();
|
||||
passed &= Testing::testUtilities();
|
||||
|
||||
std::cout << "\nTESTING: craplog modules" << std::endl;
|
||||
Testing::testCraplogModules();
|
||||
passed &= Testing::testCraplogModules();
|
||||
|
||||
std::cout << "\nTESTING: crapview modules" << std::endl;
|
||||
Testing::testCrapviewModules();
|
||||
passed &= Testing::testCrapviewModules();
|
||||
|
||||
std::cout << "\nALL TESTS PASSED" << std::endl;
|
||||
return 0;
|
||||
if (passed)
|
||||
std::cout << "\n\nALL TESTS PASSED" << std::endl;
|
||||
else
|
||||
std::cout << "\n\nSOME TEST FAILED" << std::endl;
|
||||
|
||||
return passed;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
|||
#ifndef WHITE_BOX_H
|
||||
#define WHITE_BOX_H
|
||||
#ifndef LOGDOCTESTER__WHITE_BOX_H
|
||||
#define LOGDOCTESTER__WHITE_BOX_H
|
||||
|
||||
|
||||
//! Testing
|
||||
|
@ -10,17 +10,17 @@ namespace Testing
|
|||
{
|
||||
|
||||
//! A Test suit for the defined operators
|
||||
void testOperators();
|
||||
bool testOperators();
|
||||
|
||||
//! A Test suit for the utilities
|
||||
void testUtilities();
|
||||
bool testUtilities();
|
||||
|
||||
//! A Test suit for craplog's modules
|
||||
void testCraplogModules();
|
||||
bool testCraplogModules();
|
||||
|
||||
//! A Test suit for crapview's modules
|
||||
void testCrapviewModules();
|
||||
bool testCrapviewModules();
|
||||
|
||||
} // namespace Testing
|
||||
|
||||
#endif // WHITE_BOX_H
|
||||
#endif // LOGDOCTESTER__WHITE_BOX_H
|
||||
|
|
Loading…
Reference in a new issue