Get rid of CppUnit macros in wxVsnprintf() tests too

Use CATCH macros directly.

Also remove some unnecessary casts and wxT().
This commit is contained in:
Vadim Zeitlin
2020-11-30 17:27:04 +01:00
parent 388dfb9fad
commit 7a2786bf11

View File

@@ -40,29 +40,25 @@
static wxChar buf[MAX_TEST_LEN]; static wxChar buf[MAX_TEST_LEN];
int r; int r;
// these macros makes it possible to write all tests without repeating a lot // Helper macro verifying both the return value of wxSnprintf() and its output.
// of times the wxT() macro //
// NOTE: you should use expected strings with these macros which do not exceed // NOTE: the expected string length with this macro must not exceed MAX_TEST_LEN
// MAX_TEST_LEN as these macro do check if the return value is == (int)wxStrlen(buf)
#define ASSERT_STR_EQUAL( a, b ) \
CPPUNIT_ASSERT_EQUAL( wxString(a), wxString(b) );
#define CMP(expected, fmt, ...) \ #define CMP(expected, fmt, ...) \
r=wxSnprintf(buf, MAX_TEST_LEN, wxT(fmt), ##__VA_ARGS__); \ r=wxSnprintf(buf, MAX_TEST_LEN, fmt, ##__VA_ARGS__); \
CPPUNIT_ASSERT_EQUAL( r, (int)wxStrlen(buf) ); \ CHECK( r == (int)wxStrlen(buf) ); \
ASSERT_STR_EQUAL( wxT(expected), buf ); CHECK( buf == wxString(expected) )
// Another helper which takes the size explicitly instead of using MAX_TEST_LEN
//
// NOTE: this macro is used also with too-small buffers (see Miscellaneous()) // NOTE: this macro is used also with too-small buffers (see Miscellaneous())
// test function, thus the return value can be > size and thus we // test function, thus the return value can be > size and thus we
// cannot check if r == (int)wxStrlen(buf) // cannot check if r == (int)wxStrlen(buf)
#define CMPTOSIZE(buffer, size, failuremsg, expected, fmt, ...) \ #define CMPTOSIZE(buffer, size, failuremsg, expected, fmt, ...) \
r=wxSnprintf(buffer, size, wxT(fmt), ##__VA_ARGS__); \ r=wxSnprintf(buffer, size, fmt, ##__VA_ARGS__); \
CPPUNIT_ASSERT( r > 0 ); \ CHECK( r > 0 ); \
CPPUNIT_ASSERT_EQUAL_MESSAGE( \ INFO(failuremsg); \
failuremsg, \ CHECK( buffer == wxString(expected).Left(size - 1) )
wxString(wxT(expected)).Left(size - 1), \
wxString(buffer))
// this is the same as wxSnprintf() but it passes the format string to // this is the same as wxSnprintf() but it passes the format string to
// wxVsnprintf() without using WX_ATTRIBUTE_PRINTF and thus suppresses the gcc // wxVsnprintf() without using WX_ATTRIBUTE_PRINTF and thus suppresses the gcc
@@ -181,7 +177,7 @@ TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::N", "[vsnprintf]")
int nchar; int nchar;
wxSnprintf(buf, MAX_TEST_LEN, wxT("%d %s%n\n"), 3, wxT("bears"), &nchar); wxSnprintf(buf, MAX_TEST_LEN, wxT("%d %s%n\n"), 3, wxT("bears"), &nchar);
CPPUNIT_ASSERT_EQUAL( 7, nchar ); CHECK( nchar == 7 );
} }
TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::E", "[vsnprintf]") TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::E", "[vsnprintf]")
@@ -271,16 +267,12 @@ TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::S", "[vsnprintf]")
// the 'expected' and 'arg' parameters of this macro are supposed to be // the 'expected' and 'arg' parameters of this macro are supposed to be
// UTF-8 strings // UTF-8 strings
#define CMP_UTF8(expected, fmt, arg) \ #define CMP_UTF8(expected, fmt, arg) \
CPPUNIT_ASSERT_EQUAL \ CHECK \
( \ ( \
(int)wxString::FromUTF8(expected).length(), \ (int)wxString::FromUTF8(expected).length() == \
wxSnprintf(buf, MAX_TEST_LEN, fmt, wxString::FromUTF8(arg)) \ wxSnprintf(buf, MAX_TEST_LEN, fmt, wxString::FromUTF8(arg)) \
); \ ); \
CPPUNIT_ASSERT_EQUAL \ CHECK( wxString::FromUTF8(expected) == buf )
( \
wxString::FromUTF8(expected), \
buf \
)
CMP_UTF8(" " ABC, "%5s", ABC); CMP_UTF8(" " ABC, "%5s", ABC);
CMP_UTF8(" " ALPHA, "%5s", ALPHA); CMP_UTF8(" " ALPHA, "%5s", ALPHA);
@@ -349,7 +341,7 @@ TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::WrongFormatStrings", "[vsnprintf
// positional and non-positionals in the same format string: // positional and non-positionals in the same format string:
r = wxSnprintf(buf, MAX_TEST_LEN, wxT("%1$d %d %3$d"), 1, 2, 3); r = wxSnprintf(buf, MAX_TEST_LEN, wxT("%1$d %d %3$d"), 1, 2, 3);
CPPUNIT_ASSERT_EQUAL(-1, r); CHECK( r == -1 );
} }
// BigToSmallBuffer() test case helper: // BigToSmallBuffer() test case helper:
@@ -400,11 +392,8 @@ void VsnprintfTestCase::DoBigToSmallBuffer(T *buffer, int size)
wxString expected = wxString expected =
wxString(wxT("unicode string/char: unicode/U -- ansi string/char: ansi/A")).Left(size - 1); wxString(wxT("unicode string/char: unicode/U -- ansi string/char: ansi/A")).Left(size - 1);
CPPUNIT_ASSERT( r != -1 ); CHECK( r != -1 );
CPPUNIT_ASSERT_EQUAL( CHECK( expected == buffer );
expected,
wxString(buffer)
);
} }
TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::BigToSmallBuffer", "[vsnprintf]") TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::BigToSmallBuffer", "[vsnprintf]")
@@ -460,15 +449,19 @@ void VsnprintfTestCase::DoMisc(
std::string errMsg(errStr.mb_str()); std::string errMsg(errStr.mb_str());
std::string overflowMsg(overflowStr.mb_str()); std::string overflowMsg(overflowStr.mb_str());
INFO(errMsg);
if ( size_t(n) < max ) if ( size_t(n) < max )
CPPUNIT_ASSERT_MESSAGE(errMsg, expectedLen == n); CHECK(expectedLen == n);
else else
CPPUNIT_ASSERT_MESSAGE(errMsg, expectedLen == -1); CHECK(expectedLen == -1);
CPPUNIT_ASSERT_MESSAGE(errMsg, expectedString == buf); CHECK(expectedString == buf);
for (i = max; i < BUFSIZE; i++) for (i = max; i < BUFSIZE; i++)
CPPUNIT_ASSERT_MESSAGE(overflowMsg, buf[i] == '*'); {
INFO(overflowMsg);
CHECK(buf[i] == '*');
}
} }
TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::Miscellaneous", "[vsnprintf]") TEST_CASE_METHOD(VsnprintfTestCase, "Vsnprintf::Miscellaneous", "[vsnprintf]")