String builder - truncate() method
This commit is contained in:
parent
5db261909a
commit
86a3fe34b4
3 changed files with 36 additions and 0 deletions
|
@ -391,6 +391,7 @@ class T_StringBuilder
|
||||||
T_StringBuilder& ensureCapacity( uint32_t minCap );
|
T_StringBuilder& ensureCapacity( uint32_t minCap );
|
||||||
T_StringBuilder& clear( );
|
T_StringBuilder& clear( );
|
||||||
T_StringBuilder& free( );
|
T_StringBuilder& free( );
|
||||||
|
T_StringBuilder& truncate( uint32_t maxLength ) noexcept;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -458,6 +458,16 @@ inline T_StringBuilder& T_StringBuilder::clear( )
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline T_StringBuilder& T_StringBuilder::truncate(
|
||||||
|
const uint32_t maxLength ) noexcept
|
||||||
|
{
|
||||||
|
if ( maxLength < length_ ) {
|
||||||
|
size_ = UTF8GetMemoryOffset( data_ , maxLength );
|
||||||
|
length_ = maxLength;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
inline bool T_StringBuilder::operator== ( T_StringBuilder const& other ) const
|
inline bool T_StringBuilder::operator== ( T_StringBuilder const& other ) const
|
||||||
|
|
|
@ -29,6 +29,9 @@ class StringsBuilderTest : public CppUnit::TestFixture
|
||||||
CPPUNIT_TEST( testClear );
|
CPPUNIT_TEST( testClear );
|
||||||
CPPUNIT_TEST( testFree );
|
CPPUNIT_TEST( testFree );
|
||||||
|
|
||||||
|
CPPUNIT_TEST( testTruncate );
|
||||||
|
CPPUNIT_TEST( testTruncateLonger );
|
||||||
|
|
||||||
CPPUNIT_TEST( testAppendOther );
|
CPPUNIT_TEST( testAppendOther );
|
||||||
CPPUNIT_TEST( testAppendSwap );
|
CPPUNIT_TEST( testAppendSwap );
|
||||||
CPPUNIT_TEST( testAppendStr );
|
CPPUNIT_TEST( testAppendStr );
|
||||||
|
@ -121,6 +124,9 @@ public:
|
||||||
void testClear( );
|
void testClear( );
|
||||||
void testFree( );
|
void testFree( );
|
||||||
|
|
||||||
|
void testTruncate( );
|
||||||
|
void testTruncateLonger( );
|
||||||
|
|
||||||
void testAppendOther( );
|
void testAppendOther( );
|
||||||
void testAppendSwap( );
|
void testAppendSwap( );
|
||||||
void testAppendStr( );
|
void testAppendStr( );
|
||||||
|
@ -425,6 +431,25 @@ void StringsBuilderTest::testFree( )
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void StringsBuilderTest::testTruncate( )
|
||||||
|
{
|
||||||
|
T_StringBuilder sb( "this is\uf1bb a test" );
|
||||||
|
sb.truncate( 8 );
|
||||||
|
CPPUNIT_ASSERT_EQUAL( uint32_t( 8 ) , sb.length( ) );
|
||||||
|
CPPUNIT_ASSERT_EQUAL( uint32_t( 10 ) , sb.size( ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void StringsBuilderTest::testTruncateLonger( )
|
||||||
|
{
|
||||||
|
T_StringBuilder sb( "this is\uf1bb a test" );
|
||||||
|
sb.truncate( 20 );
|
||||||
|
printf( "%d\n" , sb.size( ) );
|
||||||
|
CPPUNIT_ASSERT_EQUAL( uint32_t( 15 ) , sb.length( ) );
|
||||||
|
CPPUNIT_ASSERT_EQUAL( uint32_t( 17 ) , sb.size( ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
void StringsBuilderTest::testAppendOther( )
|
void StringsBuilderTest::testAppendOther( )
|
||||||
{
|
{
|
||||||
T_StringBuilder sb1( "this is " ) , sb2( "a test!" );
|
T_StringBuilder sb1( "this is " ) , sb2( "a test!" );
|
||||||
|
|
Loading…
Reference in a new issue