Strings - Fixed appendNumeric(INT64_MIN)

Couldn't work as it was trying to store the absolute value in a signed
64-bit integer.
This commit is contained in:
Emmanuel BENOîT 2020-10-01 13:20:50 +02:00
parent 9a3d4ad4a7
commit db215e4baf
2 changed files with 52 additions and 58 deletions

View file

@ -39,7 +39,13 @@ class StringsBuilderTest : public CppUnit::TestFixture
CPPUNIT_TEST( testAppendChar );
CPPUNIT_TEST( testAppendUnicode );
CPPUNIT_TEST( testAppendNumSigned );
CPPUNIT_TEST( testAppendNumSignedZeroB10 );
CPPUNIT_TEST( testAppendNumSignedPositiveB10 );
CPPUNIT_TEST( testAppendNumSignedNegativeB10 );
CPPUNIT_TEST( testAppendNumSignedMinB10 );
CPPUNIT_TEST( testAppendNumSignedMaxB10 );
CPPUNIT_TEST( testAppendNumSignedRest );
CPPUNIT_TEST( testAppendNumUnsigned );
CPPUNIT_TEST( testAppendNumFloat );
@ -134,7 +140,13 @@ public:
void testAppendChar( );
void testAppendUnicode( );
void testAppendNumSigned( );
void testAppendNumSignedZeroB10( );
void testAppendNumSignedPositiveB10( );
void testAppendNumSignedNegativeB10( );
void testAppendNumSignedMinB10( );
void testAppendNumSignedMaxB10( );
void testAppendNumSignedRest( );
void testAppendNumUnsigned( );
void testAppendNumFloat( );
@ -546,15 +558,39 @@ void StringsBuilderTest::testAppendUnicode( )
CPPUNIT_ASSERT( !memcmp( sbo.data( ) , t , sz ) ); \
}
void StringsBuilderTest::testAppendNumSigned( )
void StringsBuilderTest::testAppendNumSignedZeroB10( )
{
T_StringBuilder sbo;
sbo.clear( ).appendNumeric( int64_t( 1 ) ); M_CHECK_( "1" );
sbo.clear( ).appendNumeric( int64_t( 0 ) ); M_CHECK_( "0" );
sbo.clear( ).appendNumeric( int64_t( -1 ) ); M_CHECK_( "-1" );
sbo.clear( ).appendNumeric( int64_t( 1234 ) ); M_CHECK_( "1234" );
sbo.clear( ).appendNumeric( int64_t( -1234 ) ); M_CHECK_( "-1234" );
}
void StringsBuilderTest::testAppendNumSignedNegativeB10( )
{
T_StringBuilder sbo;
sbo.clear( ).appendNumeric( int64_t( -1234 ) ); M_CHECK_( "-1234" );
}
void StringsBuilderTest::testAppendNumSignedPositiveB10( )
{
T_StringBuilder sbo;
sbo.clear( ).appendNumeric( int64_t( 1234 ) ); M_CHECK_( "1234" );
}
void StringsBuilderTest::testAppendNumSignedMinB10( )
{
T_StringBuilder sbo;
sbo.clear( ).appendNumeric( int64_t( INT64_MIN ) ); M_CHECK_( "-9223372036854775808" );
}
void StringsBuilderTest::testAppendNumSignedMaxB10( )
{
T_StringBuilder sbo;
sbo.clear( ).appendNumeric( int64_t( INT64_MAX ) ); M_CHECK_( "9223372036854775807" );
}
void StringsBuilderTest::testAppendNumSignedRest( )
{
T_StringBuilder sbo;
sbo.clear( ).appendNumeric( int64_t( 129 ) , 2 );
M_CHECK_( "10000001" );
sbo.clear( ).appendNumeric( int64_t( -129 ) , 2 );