📄 basic_cstring_test.cpp
字号:
BOOST_CHECK_EQUAL( traits_type::compare( bcs1.begin(), LITERAL( "es" ), bcs1.size() ), 0 );
}
//____________________________________________________________________________//
BOOST_TEST_CASE_TEMPLATE_FUNCTION( comparison_test, CharT )
{
utf::basic_cstring<CharT> bcs1( TEST_STRING );
utf::basic_cstring<CharT> bcs2( TEST_STRING );
BOOST_CHECK_EQUAL( bcs1, TEST_STRING );
BOOST_CHECK_EQUAL( TEST_STRING, bcs1 );
BOOST_CHECK_EQUAL( bcs1, bcs2 );
bcs1.resize( 4 );
BOOST_CHECK_EQUAL( bcs1, LITERAL( "test" ) );
BOOST_CHECK( bcs1 != TEST_STRING );
BOOST_CHECK( TEST_STRING != bcs1 );
BOOST_CHECK( bcs1 != bcs2 );
LOCAL_DEF( bcs3, "TeSt" );
BOOST_CHECK( utf::case_ins_eq( bcs1, bcs3 ) );
}
//____________________________________________________________________________//
BOOST_TEST_CASE_TEMPLATE_FUNCTION( comparison_std_string_test, CharT )
{
utf::basic_cstring<CharT> bcs1( TEST_STRING );
typename utf::basic_cstring<CharT>::std_string l( TEST_STRING );
BOOST_CHECK( bcs1 == l );
#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
BOOST_CHECK( l == bcs1 );
#endif
bcs1.resize( 4 );
BOOST_CHECK( bcs1 != l );
#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
BOOST_CHECK( l != bcs1 );
#endif
}
//____________________________________________________________________________//
BOOST_TEST_CASE_TEMPLATE_FUNCTION( ordering_test, CharT )
{
LOCAL_DEF( bcs1, "aBcd" );
LOCAL_DEF( bcs2, "aBbdd" );
LOCAL_DEF( bcs3, "aBbde" );
LOCAL_DEF( bcs4, "abab" );
BOOST_CHECK( bcs1 < bcs2 );
BOOST_CHECK( bcs2 < bcs3 );
BOOST_CHECK( bcs1 < bcs3 );
BOOST_CHECK( bcs1 < bcs4 );
utf::case_ins_less<CharT> cil;
BOOST_CHECK( cil( bcs4, bcs1 ) );
}
//____________________________________________________________________________//
BOOST_TEST_CASE_TEMPLATE_FUNCTION( trim_test, CharT )
{
LOCAL_DEF( bcs0, "tes" );
bcs0.trim_right( 1 );
BOOST_CHECK_EQUAL( bcs0.size(), 2 );
BOOST_CHECK_EQUAL( bcs0[0], 't' );
bcs0.trim_left( 1 );
BOOST_CHECK_EQUAL( bcs0.size(), 1 );
BOOST_CHECK_EQUAL( bcs0[0], 'e' );
bcs0.trim_left( 1 );
BOOST_CHECK( bcs0.is_empty() );
bcs0 = TEST_STRING;
bcs0.trim_left( 11 );
BOOST_CHECK( bcs0.is_empty() );
bcs0 = TEST_STRING;
bcs0.trim_right( 11 );
BOOST_CHECK( bcs0.is_empty() );
bcs0 = TEST_STRING;
bcs0.trim_right( bcs0.size() - bcs0.find( LITERAL( "t_s" ) ) - 3 );
BOOST_CHECK_EQUAL( bcs0, LITERAL( "test_s" ) );
bcs0.trim_left( bcs0.find( LITERAL( "t_s" ) ) );
BOOST_CHECK_EQUAL( bcs0, LITERAL( "t_s" ) );
LOCAL_DEF( bcs1, "abcd " );
LOCAL_DEF( bcs2, " abcd" );
LOCAL_DEF( bcs3, " abcd " );
bcs1.trim_right();
BOOST_CHECK_EQUAL( bcs1, LITERAL( "abcd" ) );
bcs2.trim_left();
BOOST_CHECK_EQUAL( bcs2, LITERAL( "abcd" ) );
bcs3.trim( LITERAL( "\"" ) );
BOOST_CHECK_EQUAL( bcs3, LITERAL( " abcd " ) );
bcs3.trim();
BOOST_CHECK_EQUAL( bcs3, LITERAL( "abcd" ) );
bcs3.trim();
BOOST_CHECK_EQUAL( bcs3, LITERAL( "abcd" ) );
}
//____________________________________________________________________________//
BOOST_TEST_CASE_TEMPLATE_FUNCTION( io_test, CharT )
{
utf::basic_cstring<CharT> bcs1( TEST_STRING );
bcs1.trim_right( 7 );
tt::output_test_stream ostr;
ostr << std::setw( 6 ) << bcs1;
BOOST_CHECK( ostr.is_equal( " test" ) );
ostr << std::setw( 3 ) << bcs1;
BOOST_CHECK( ostr.is_equal( "test" ) );
ostr << std::setw( 5 ) << std::setiosflags( std::ios::left ) << bcs1;
BOOST_CHECK( ostr.is_equal( "test " ) );
}
//____________________________________________________________________________//
BOOST_TEST_CASE_TEMPLATE_FUNCTION( find_test, CharT )
{
utf::basic_cstring<CharT> bcs1( TEST_STRING );
BOOST_CHECK_EQUAL( bcs1.find( utf::basic_cstring<CharT>() ), utf::basic_cstring<CharT>::npos );
BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test" ) ), 0 );
BOOST_CHECK_EQUAL( bcs1.find( TEST_STRING ), 0 );
BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test_string " ) ), utf::basic_cstring<CharT>::npos );
BOOST_CHECK_EQUAL( bcs1.find( LITERAL( " test_string" ) ), utf::basic_cstring<CharT>::npos );
BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "est" ) ), 1 );
BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "t_st" ) ), 3 );
BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "ing" ) ), 8 );
BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "tst" ) ), utf::basic_cstring<CharT>::npos );
BOOST_CHECK_EQUAL( bcs1.rfind( utf::basic_cstring<CharT>() ), utf::basic_cstring<CharT>::npos );
BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test" ) ), 0 );
BOOST_CHECK_EQUAL( bcs1.rfind( TEST_STRING ), 0 );
BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test_string " ) ), utf::basic_cstring<CharT>::npos );
BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( " test_string" ) ), utf::basic_cstring<CharT>::npos );
BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "est" ) ), 1 );
BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "t_st" ) ), 3 );
BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "ing" ) ), 8 );
BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "tst" ) ), utf::basic_cstring<CharT>::npos );
}
//____________________________________________________________________________//
void const_conversion()
{
char arr[] = { "ABC" };
utf::basic_cstring<char> str1( arr );
utf::basic_cstring<char const> str2;
str2.assign( str1 );
BOOST_CHECK_EQUAL( str1, "ABC" );
BOOST_CHECK_EQUAL( str2, "ABC" );
}
//____________________________________________________________________________//
utf::test_suite*
init_unit_test_suite( int /*argc*/, char* /*argv*/[] )
{
utf::test_suite* test= BOOST_TEST_SUITE("basic_cstring test");
test->add( BOOST_TEST_CASE_TEMPLATE( constructors_test, char_types ) );
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
test->add( BOOST_TEST_CASE_TEMPLATE( constructors_std_string_test, base_const_char_types ) );
test->add( BOOST_TEST_CASE_TEMPLATE( asignment_std_string_test, base_const_char_types ) );
test->add( BOOST_TEST_CASE_TEMPLATE( comparison_std_string_test, base_const_char_types ) );
#endif
test->add( BOOST_TEST_CASE( array_construction_test ) );
test->add( BOOST_TEST_CASE_TEMPLATE( data_access_test, char_types ) );
test->add( BOOST_TEST_CASE_TEMPLATE( size_test, char_types ) );
test->add( BOOST_TEST_CASE_TEMPLATE( asignment_test, char_types ) );
test->add( BOOST_TEST_CASE_TEMPLATE( comparison_test, char_types ) );
test->add( BOOST_TEST_CASE_TEMPLATE( ordering_test, char_types ) );
test->add( BOOST_TEST_CASE_TEMPLATE( trim_test, char_types ) );
test->add( BOOST_TEST_CASE_TEMPLATE( io_test, io_test_types ) );
test->add( BOOST_TEST_CASE_TEMPLATE( find_test, char_types ) );
test->add( BOOST_TEST_CASE( &const_conversion ) );
return test;
}
// *****************************************************************************
// History :
//
// $Log: basic_cstring_test.cpp,v $
// Revision 1.13.2.1 2005/09/07 08:16:45 schoepflin
// Merged fix for dependent name lookup problem to RC branch.
//
// Revision 1.14 2005/08/12 14:15:13 schoepflin
// Fixed dependent name lookup issue.
//
// Revision 1.13 2005/05/13 06:00:14 rogeeff
// *** empty log message ***
//
// Revision 1.12 2005/05/11 05:07:56 rogeeff
// licence update
//
// Revision 1.11 2005/04/17 15:49:17 rogeeff
// *** empty log message ***
//
// Revision 1.10 2005/02/20 08:28:34 rogeeff
// This a major update for Boost.Test framework. See release docs for complete list of fixes/updates
//
// Revision 1.9 2005/01/30 03:35:55 rogeeff
// no message
//
// Revision 1.8 2005/11/28 04:28:56 agurtovoy
// merge RC_1_32_0 fixes
//
// Revision 1.7.2.1 2005/10/30 11:33:38 agurtovoy
// MSVC/Borland fixes
//
// Revision 1.7 2005/10/01 10:55:43 rogeeff
// some test errors workarrounds
//
// Revision 1.6 2005/07/19 12:07:26 rogeeff
// *** empty log message ***
//
// Revision 1.5 2005/06/07 07:34:23 rogeeff
// detail namespace renamed
//
// Revision 1.4 2005/06/05 11:04:17 rogeeff
// no message
//
// Revision 1.3 2005/05/27 06:30:48 rogeeff
// no message
//
// Revision 1.2 2005/05/21 06:26:10 rogeeff
// licence update
//
// Revision 1.1 2005/05/11 11:05:46 rogeeff
// basic_cstring introduced and used everywhere
// class properties reworked
// namespace names shortened
//
// *****************************************************************************
// EOF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -