libs/test/test/output_test_stream_test.cpp
// (C) Copyright Gennadiy Rozental 2001-2004. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org/libs/test for the library home page. // // File : $RCSfile: output_test_stream_test.cpp,v $ // // Version : $Revision: 1.18 $ // // Description : tests output_test_stream test tool functionality // *************************************************************************** // Boost.Test #include <boost/test/unit_test.hpp> using boost::test_toolbox::output_test_stream; using boost::unit_test::test_suite; // STL #include <iomanip> //____________________________________________________________________________// void test_constructor() { { output_test_stream output; BOOST_CHECK( !output.match_pattern() ); BOOST_CHECK( output.is_empty() ); } { output_test_stream output( (char const*)0 ); BOOST_CHECK( !output.match_pattern() ); BOOST_CHECK( output.is_empty() ); } { output_test_stream output( "" ); BOOST_CHECK( !output.match_pattern() ); BOOST_CHECK( output.is_empty() ); } { output_test_stream output( "%&^$%&$%" ); BOOST_CHECK( !output.match_pattern() ); BOOST_CHECK( output.is_empty() ); } { output_test_stream output( "pattern.temp" ); BOOST_CHECK( !output.match_pattern() ); BOOST_CHECK( output.is_empty() ); } { output_test_stream output( "pattern.temp2", false ); BOOST_CHECK( output.match_pattern() ); BOOST_CHECK( output.is_empty() ); } { output_test_stream output( "pattern.temp2" ); BOOST_CHECK( output.match_pattern() ); BOOST_CHECK( output.is_empty() ); } } //____________________________________________________________________________// void test_is_empty() { output_test_stream output; BOOST_CHECK( output.is_empty() ); output << 12345; BOOST_CHECK( !output.is_empty() ); BOOST_CHECK( output.is_empty() ); output << ""; BOOST_CHECK( output.is_empty() ); output << '\0'; BOOST_CHECK( !output.is_empty( false ) ); BOOST_CHECK( !output.is_empty() ); } //____________________________________________________________________________// void test_check_length() { output_test_stream output; BOOST_CHECK( output.check_length( 0 ) ); output << ""; BOOST_CHECK( output.check_length( 0 ) ); output << '\0'; BOOST_CHECK( output.check_length( 1 ) ); output << 1220; BOOST_CHECK( output.check_length( 4 ) ); output << "Text message"; BOOST_CHECK( output.check_length( 12, false ) ); BOOST_CHECK( output.check_length( 12 ) ); output.width( 20 ); output << "Text message"; BOOST_CHECK( output.check_length( 20 ) ); } //____________________________________________________________________________// void test_is_equal() { output_test_stream output; BOOST_CHECK( output.is_equal( "" ) ); output << 1; BOOST_CHECK( output.is_equal( "1" ) ); output << ""; BOOST_CHECK( output.is_equal( "" ) ); output << '\0'; BOOST_CHECK( output.is_equal( boost::unit_test::const_string( "", 1 ) ) ); output << std::setw( 10 ) << "qwerty" << '\n'; BOOST_CHECK( output.is_equal( " qwerty\n" ) ); std::string s( "test string" ); output << s << std::endl; BOOST_CHECK( output.is_equal( "test string\n", false ) ); output << s << std::endl; BOOST_CHECK( output.is_equal( "test string\ntest string\n" ) ); char const* literal_string = "asdfghjkl"; std::string substr1( literal_string, 5 ); std::string substr2( literal_string+5, 4 ); output << substr1; BOOST_CHECK( output.is_equal( boost::unit_test::const_string( literal_string, 5 ), false ) ); output << substr2; BOOST_CHECK( output.is_equal( boost::unit_test::const_string( literal_string, 9 ) ) ); } //____________________________________________________________________________// void test_match_pattern() { { output_test_stream output( "pattern.test", false ); output << "text1\n"; BOOST_CHECK( output.match_pattern() ); output << "text2\n"; BOOST_CHECK( output.match_pattern() ); output << "text3\n"; BOOST_CHECK( output.match_pattern() ); } { output_test_stream output( "pattern.test" ); output << "text1\n"; BOOST_CHECK( output.match_pattern() ); output << "text2\n"; BOOST_CHECK( output.match_pattern() ); output << "text3\n"; BOOST_CHECK( output.match_pattern() ); } { output_test_stream output( "pattern.test" ); output << "text4\n"; BOOST_CHECK( !output.match_pattern() ); output << "text2\n"; BOOST_CHECK( output.match_pattern() ); output << "text3\n"; BOOST_CHECK( output.match_pattern() ); } { output_test_stream output( "pattern.test" ); output << "text\n"; BOOST_CHECK( !output.match_pattern() ); output << "text2\n"; BOOST_CHECK( !output.match_pattern() ); output << "text3\n"; BOOST_CHECK( !output.match_pattern() ); } } //____________________________________________________________________________// test_suite* init_unit_test_suite( int /*argc*/, char* /*argv*/[] ) { test_suite* test = BOOST_TEST_SUITE("ostream_test_stream test"); test->add( BOOST_TEST_CASE( &test_constructor ) ); test->add( BOOST_TEST_CASE( &test_is_empty ) ); test->add( BOOST_TEST_CASE( &test_check_length ) ); test->add( BOOST_TEST_CASE( &test_is_equal ) ); test->add( BOOST_TEST_CASE( &test_match_pattern ) ); return test; } //____________________________________________________________________________// // *************************************************************************** // Revision History : // // $Log: output_test_stream_test.cpp,v $ // Revision 1.18 2004/06/05 11:04:17 rogeeff // no message // // Revision 1.17 2004/05/27 06:30:48 rogeeff // no message // // Revision 1.16 2004/05/21 06:26:10 rogeeff // licence update // // Revision 1.15 2004/05/11 11:05:06 rogeeff // basic_cstring introduced and used everywhere // class properties reworked // namespace names shortened // // Revision 1.14 2003/12/01 00:42:37 rogeeff // prerelease cleaning // // *************************************************************************** // EOF