From 5a85b000aa81d65e3cd7abfa165d463bc589e69d Mon Sep 17 00:00:00 2001 From: firewave Date: Thu, 14 Apr 2022 10:57:43 +0200 Subject: [PATCH 1/3] test.cpp: also run tests with char buffer --- test.cpp | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/test.cpp b/test.cpp index b0bf0b4f..b764ed8f 100644 --- a/test.cpp +++ b/test.cpp @@ -6,6 +6,7 @@ #include "simplecpp.h" #include +#include #include #include #include @@ -25,6 +26,13 @@ #define STRINGIZE(x) STRINGIZE_(x) static const std::string testSourceDir = SIMPLECPP_TEST_SOURCE_DIR; + +enum class Input : std::uint8_t { + Stringstream, + CharBuffer +}; + +static Input USE_INPUT = Input::Stringstream; static int numberOfFailedAssertions = 0; #define ASSERT_EQUALS(expected, actual) (assertEquals((expected), (actual), __LINE__)) @@ -41,11 +49,20 @@ static std::string pprint(const std::string &in) return ret; } +static const char* inputString(Input input) { + switch (input) { + case Input::Stringstream: + return "Stringstream"; + case Input::CharBuffer: + return "CharBuffer"; + } +} + static int assertEquals(const std::string &expected, const std::string &actual, int line) { if (expected != actual) { numberOfFailedAssertions++; - std::cerr << "------ assertion failed ---------" << std::endl; + std::cerr << "------ assertion failed (" << inputString(USE_INPUT) << ")---------" << std::endl; std::cerr << "line test.cpp:" << line << std::endl; std::cerr << "expected:" << pprint(expected) << std::endl; std::cerr << "actual:" << pprint(actual) << std::endl; @@ -83,8 +100,14 @@ static void testcase(const std::string &name, void (*f)(), int argc, char * cons static simplecpp::TokenList makeTokenList(const char code[], std::size_t size, std::vector &filenames, const std::string &filename=std::string(), simplecpp::OutputList *outputList=nullptr) { - std::istringstream istr(std::string(code, size)); - return {istr,filenames,filename,outputList}; + switch (USE_INPUT) { + case Input::Stringstream: { + std::istringstream istr(std::string(code, size)); + return {istr,filenames,filename,outputList}; + } + case Input::CharBuffer: + return {{code, size}, filenames, filename, outputList}; + } } static simplecpp::TokenList makeTokenList(const char code[], std::vector &filenames, const std::string &filename=std::string(), simplecpp::OutputList *outputList=nullptr) @@ -3609,8 +3632,10 @@ static void leak() } } -int main(int argc, char **argv) +static void runTests(int argc, char **argv, Input input) { + USE_INPUT = input; + TEST_CASE(backslash); TEST_CASE(builtin); @@ -3881,6 +3906,11 @@ int main(int argc, char **argv) TEST_CASE(fuzz_crash); TEST_CASE(leak); +} +int main(int argc, char **argv) +{ + runTests(argc, argv, Input::Stringstream); + runTests(argc, argv, Input::CharBuffer); return numberOfFailedAssertions > 0 ? EXIT_FAILURE : EXIT_SUCCESS; } From e6c4acf9057d0fe2c859e84e791f91efbdf2c2d3 Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 13 Apr 2026 13:25:29 +0200 Subject: [PATCH 2/3] test.cpp: fixed `misc-use-internal-linkage` clang-tidy warning --- test.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test.cpp b/test.cpp index b764ed8f..cef19e58 100644 --- a/test.cpp +++ b/test.cpp @@ -27,10 +27,12 @@ static const std::string testSourceDir = SIMPLECPP_TEST_SOURCE_DIR; -enum class Input : std::uint8_t { - Stringstream, - CharBuffer -}; +namespace { + enum class Input : std::uint8_t { + Stringstream, + CharBuffer + }; +} static Input USE_INPUT = Input::Stringstream; static int numberOfFailedAssertions = 0; From 7c1526b91bed66f38d045d20fbecdb1236b285ad Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 13 Apr 2026 13:26:16 +0200 Subject: [PATCH 3/3] test.cpp: mitigated compiler warnings about missing return with GCC and Visual Studio --- test.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test.cpp b/test.cpp index cef19e58..191b3512 100644 --- a/test.cpp +++ b/test.cpp @@ -58,6 +58,7 @@ static const char* inputString(Input input) { case Input::CharBuffer: return "CharBuffer"; } + return ""; // unreachable - needed for GCC and Visual Studio } static int assertEquals(const std::string &expected, const std::string &actual, int line) @@ -110,6 +111,8 @@ static simplecpp::TokenList makeTokenList(const char code[], std::size_t size, s case Input::CharBuffer: return {{code, size}, filenames, filename, outputList}; } + + return simplecpp::TokenList{filenames}; // unreachable - needed for GCC and Visual Studio } static simplecpp::TokenList makeTokenList(const char code[], std::vector &filenames, const std::string &filename=std::string(), simplecpp::OutputList *outputList=nullptr)