C++ Utilities  5.10.5
Useful C++ classes and routines such as argument parser, IO and conversion utilities
Classes | Namespaces | Macros | Enumerations | Functions
testutils.h File Reference
#include "../application/argumentparser.h"
#include "../misc/traits.h"
#include <iomanip>
#include <ostream>
#include <string>
Include dependency graph for testutils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  CppUtilities::TestApplication
 The TestApplication class simplifies writing test applications that require opening test files. More...
 
class  CppUtilities::AsHexNumber< T >
 The AsHexNumber class allows printing values asserted with cppunit (or similar test framework) using the hex system in the error case. More...
 

Namespaces

 CppUtilities
 Contains all utilities provides by the c++utilities library.
 
 CppUtilities::Literals
 Contains literals to ease asserting with CPPUNIT_ASSERT_EQUAL.
 

Macros

#define TESTUTILS_ASSERT_EXEC(args)
 Asserts successful execution of the application with the specified CLI args. More...
 
#define TESTUTILS_ASSERT_LIKE_FLAGS(message, expectedRegex, regexFlags, actualString)
 Asserts whether the specified string matches the specified regex. More...
 
#define TESTUTILS_ASSERT_LIKE(message, expectedRegex, actualString)    TESTUTILS_ASSERT_LIKE_FLAGS(message, expectedRegex, std::regex::ECMAScript, actualString)
 Asserts whether the specified string matches the specified regex. More...
 

Enumerations

enum class  CppUtilities::WorkingCopyMode { CppUtilities::CreateCopy , CppUtilities::NoCopy }
 The WorkingCopyMode enum specifies additional options to influence behavior of TestApplication::workingCopyPath(). More...
 

Functions

CPP_UTILITIES_EXPORT std::string CppUtilities::testFilePath (const std::string &relativeTestFilePath)
 Convenience function to invoke TestApplication::testFilePath(). More...
 
CPP_UTILITIES_EXPORT std::string CppUtilities::testDirPath (const std::string &relativeTestDirPath)
 Convenience function to invoke TestApplication::testDirPath(). More...
 
CPP_UTILITIES_EXPORT std::string CppUtilities::workingCopyPath (const std::string &relativeTestFilePath, WorkingCopyMode mode=WorkingCopyMode::CreateCopy)
 Convenience function to invoke TestApplication::workingCopyPath(). More...
 
CPP_UTILITIES_EXPORT std::string CppUtilities::workingCopyPathAs (const std::string &relativeTestFilePath, const std::string &relativeWorkingCopyPath, WorkingCopyMode mode=WorkingCopyMode::CreateCopy)
 Convenience function to invoke TestApplication::workingCopyPathAs(). More...
 
template<typename T >
bool CppUtilities::operator== (const AsHexNumber< T > &lhs, const AsHexNumber< T > &rhs)
 Provides operator == required by CPPUNIT_ASSERT_EQUAL. More...
 
template<typename T >
std::ostream & CppUtilities::operator<< (std::ostream &out, const AsHexNumber< T > &value)
 Provides the actual formatting of the output for AsHexNumber class. More...
 
template<typename T >
AsHexNumber< T > CppUtilities::asHexNumber (const T &value)
 Wraps a value to be printed using the hex system in the error case when asserted with cppunit (or similar test framework). More...
 
template<typename T , Traits::EnableIf< std::is_integral< T >> * = nullptr>
AsHexNumber< T > CppUtilities::integralsAsHexNumber (const T &value)
 Wraps a value to be printed using the hex system in the error case when asserted with cppunit (or similar test framework). More...
 
template<typename T , Traits::DisableIf< std::is_integral< T >> * = nullptr>
const T & CppUtilities::integralsAsHexNumber (const T &value)
 Wraps a value to be printed using the hex system in the error case when asserted with cppunit (or similar test framework). More...
 
template<typename Pair , CppUtilities::Traits::EnableIf< CppUtilities::Traits::IsSpecializationOf< Pair, std::pair >> * = nullptr>
std::ostream & CppUtilities::operator<< (std::ostream &out, const Pair &pair)
 Allows printing pairs so key/values of maps/hashes can be asserted using CPPUNIT_ASSERT_EQUAL. More...
 
template<typename Iteratable , Traits::EnableIf< Traits::IsIteratable< Iteratable >, Traits::Not< Traits::IsString< Iteratable >>> * = nullptr>
std::ostream & CppUtilities::operator<< (std::ostream &out, const Iteratable &iteratable)
 Allows printing iteratable objects so those can be asserted using CPPUNIT_ASSERT_EQUAL. More...
 
constexpr std::size_t CppUtilities::Literals::operator""_st (unsigned long long size)
 Literal for std::size_t to ease asserting std::size_t with CPPUNIT_ASSERT_EQUAL. More...
 
constexpr std::uint64_t CppUtilities::Literals::operator""_uint64 (unsigned long long size)
 Literal for uint64 to ease asserting uint64 with CPPUNIT_ASSERT_EQUAL. More...
 
constexpr std::int64_t CppUtilities::Literals::operator""_int64 (unsigned long long size)
 Literal for int64 to ease asserting int64 with CPPUNIT_ASSERT_EQUAL. More...
 

Macro Definition Documentation

◆ TESTUTILS_ASSERT_EXEC

#define TESTUTILS_ASSERT_EXEC (   args)
Value:
{ \
const auto returnCode = execApp(args, stdout, stderr); \
if (returnCode != 0) { \
CPPUNIT_FAIL(::CppUtilities::argsToString("app failed with return code ", returnCode, "\nstdout: ", stdout, "\nstderr: ", stderr)); \
} \
}
StringType argsToString(Args &&...args)

Asserts successful execution of the application with the specified CLI args.

The application is executed via TestApplication::execApp(). Output is stored in the std::string variables stdout and stderr.

Remarks
Requires cppunit.

Definition at line 265 of file testutils.h.

◆ TESTUTILS_ASSERT_LIKE

#define TESTUTILS_ASSERT_LIKE (   message,
  expectedRegex,
  actualString 
)     TESTUTILS_ASSERT_LIKE_FLAGS(message, expectedRegex, std::regex::ECMAScript, actualString)

Asserts whether the specified string matches the specified regex.

Remarks
Requires cppunit.

Definition at line 287 of file testutils.h.

◆ TESTUTILS_ASSERT_LIKE_FLAGS

#define TESTUTILS_ASSERT_LIKE_FLAGS (   message,
  expectedRegex,
  regexFlags,
  actualString 
)
Value:
(CPPUNIT_NS::Asserter::failIf(!(std::regex_match(actualString, std::regex(expectedRegex, regexFlags))), \
CPPUNIT_NS::Message( \
CppUtilities::argsToString('\"', actualString, "\"\n not like\n\"", expectedRegex, '\"'), "Expression: " #actualString, message), \
CPPUNIT_SOURCELINE()))

Asserts whether the specified string matches the specified regex.

Remarks
Requires cppunit.

Definition at line 277 of file testutils.h.