Update of /cvsroot/boost/boost/libs/system/test
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29860/test
Modified Files:
Tag: c++0x
error_code_test.cpp error_code_user_test.cpp
system_error_test.cpp
Log Message:
Move posix_errno into sub-namespace, expand test cases, test system_error
Index: error_code_test.cpp
===================================================================
RCS file: /cvsroot/boost/boost/libs/system/test/error_code_test.cpp,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -d -r1.1.2.5 -r1.1.2.6
--- error_code_test.cpp 24 Jul 2007 00:51:51 -0000 1.1.2.5
+++ error_code_test.cpp 26 Jul 2007 20:22:20 -0000 1.1.2.6
@@ -31,6 +31,13 @@
# if defined( BOOST_WINDOWS_API )
# include "winerror.h"
# include <boost/cerrno.hpp>
+# define BOOST_ACCESS_ERROR_MACRO ERROR_ACCESS_DENIED
+# define BOOST_ACCESS_ERROR_CONSTANT boost::system::sys::access_denied
+# elif defined( BOOST_POSIX_API )
+# define BOOST_ACCESS_ERROR_MACRO EACCES
+# define BOOST_ACCESS_ERROR_CONSTANT permission_denied
+# else
+# error "Only supported for POSIX and Windows"
# endif
namespace
@@ -52,92 +59,81 @@
int test_main( int, char ** )
{
- error_code ec;
- error_code ec_0_system( 0, system_category );
- error_code ec_1_system( 1, system_category );
+ // reality check:
+ BOOST_CHECK( BOOST_ACCESS_ERROR_MACRO == BOOST_ACCESS_ERROR_CONSTANT );
+ // unit tests:
+ error_code ec;
BOOST_CHECK( !ec );
BOOST_CHECK( ec.value() == 0 );
BOOST_CHECK( ec.posix() == 0 );
+ BOOST_CHECK( ec.posix() == posix::no_error );
BOOST_CHECK( ec.category() == system_category );
+ BOOST_CHECK( ec.category().name() == "system" );
+ error_code ec_0_system( 0, system_category );
BOOST_CHECK( !ec_0_system );
BOOST_CHECK( ec_0_system.value() == 0 );
BOOST_CHECK( ec_0_system.posix() == 0 );
+ BOOST_CHECK( ec_0_system.posix() == posix::no_error );
+ BOOST_CHECK( ec_0_system.category() == system_category );
+ BOOST_CHECK( ec_0_system.category().name() == "system" );
+ check_ostream( ec_0_system, "system:0" );
BOOST_CHECK( ec_0_system == ec );
BOOST_CHECK( ec_0_system.category() == ec.category() );
- //BOOST_CHECK( !ec_0_posix );
- //BOOST_CHECK( ec_0_posix.value() == 0 );
- //BOOST_CHECK( ec_0_posix.posix() == 0 );
- //BOOST_CHECK( ec == ec_0_posix );
- //BOOST_CHECK( ec_0_system != ec_0_posix );
-
+ error_code ec_1_system( 1, system_category );
BOOST_CHECK( ec_1_system );
BOOST_CHECK( ec_1_system.value() == 1 );
BOOST_CHECK( ec_1_system.value() != 0 );
- //BOOST_CHECK( ec_1_system.posix() != 0 );
BOOST_CHECK( ec != ec_1_system );
BOOST_CHECK( ec_0_system != ec_1_system );
- //BOOST_CHECK( ec_0_posix != ec_1_system );
-
- //BOOST_CHECK( ec_1_posix );
- //BOOST_CHECK( ec_1_posix.value() == 1 );
- //BOOST_CHECK( ec_1_posix.posix() == 1 );
- //BOOST_CHECK( ec_1_posix.posix() != 0 );
- //BOOST_CHECK( ec != ec_1_posix );
- //BOOST_CHECK( ec_0_system != ec_1_posix );
- //BOOST_CHECK( ec_0_posix != ec_1_posix );
-
- //BOOST_CHECK( ec_0_posix.category() == posix_category );
- //BOOST_CHECK( ec_0_posix.category() == ec_1_posix.category() );
- //BOOST_CHECK( ec_0_posix.category() != system_category );
- //BOOST_CHECK( ec_0_posix.category() != ec_0_system.category() );
-
- //BOOST_CHECK( ec_0_posix.category().name() == "POSIX" );
- BOOST_CHECK( ec_0_system.category().name() == "system" );
-
- //BOOST_CHECK( ec_0_posix.category() < ec_0_system.category() );
- //BOOST_CHECK( ec_0_posix < ec_0_system );
-
- check_ostream( ec_0_system, "system:0" );
check_ostream( ec_1_system, "system:1" );
- //error_code ec_2_posix( no_such_file_or_directory );
- //error_code ec_3_posix( no_such_file_or_directory, posix_category );
-
- //BOOST_CHECK( ec_2_posix == ec_3_posix );
- //BOOST_CHECK( ec_2_posix == no_such_file_or_directory );
- //BOOST_CHECK( no_such_file_or_directory == ec_2_posix );
-
+ // These are critical use-case tests; if these break, the library is not
+ // useful in production code. Thus it is particularly important that
+ // "improvements" to the library do not break these tests.
+ error_code ec2( BOOST_ACCESS_ERROR_CONSTANT );
+ ec = BOOST_ACCESS_ERROR_CONSTANT;
+ BOOST_CHECK( ec == ec2 );
+ BOOST_CHECK( ec == BOOST_ACCESS_ERROR_CONSTANT );
+ BOOST_CHECK( ec2 == BOOST_ACCESS_ERROR_CONSTANT );
+ BOOST_CHECK( ec.value() == BOOST_ACCESS_ERROR_CONSTANT );
+ BOOST_CHECK( ec2.value() == BOOST_ACCESS_ERROR_CONSTANT );
+ BOOST_CHECK( ec.posix() == posix::permission_denied );
+ BOOST_CHECK( ec2.posix() == posix::permission_denied );
#ifdef BOOST_WINDOWS_API
// these tests probe the Windows posix decoder
// test the first entry in the decoder table:
ec = error_code( ERROR_FILE_NOT_FOUND, system_category );
BOOST_CHECK( ec.value() == ERROR_FILE_NOT_FOUND );
- BOOST_CHECK( ec.posix() == no_such_file_or_directory );
+ BOOST_CHECK( ec.value() == sys::file_not_found );
+ BOOST_CHECK( ec == sys::file_not_found );
+ BOOST_CHECK( ec.posix() == posix::no_such_file_or_directory );
// test the second entry in the decoder table:
ec = error_code( ERROR_PATH_NOT_FOUND, system_category );
BOOST_CHECK( ec.value() == ERROR_PATH_NOT_FOUND );
- BOOST_CHECK( ec.posix() == no_such_file_or_directory );
+ BOOST_CHECK( ec.value() == sys::path_not_found );
+ BOOST_CHECK( ec == sys::path_not_found );
+ BOOST_CHECK( ec.posix() == posix::no_such_file_or_directory );
// test the third entry in the decoder table:
ec = error_code( ERROR_ACCESS_DENIED, system_category );
BOOST_CHECK( ec.value() == ERROR_ACCESS_DENIED );
- BOOST_CHECK( ec.posix() == permission_denied );
+ BOOST_CHECK( ec.posix() == posix::permission_denied );
// test the last regular entry in the decoder table:
ec = error_code( ERROR_WRITE_PROTECT, system_category );
BOOST_CHECK( ec.value() == ERROR_WRITE_PROTECT );
- BOOST_CHECK( ec.posix() == permission_denied );
+ BOOST_CHECK( ec.posix() == posix::permission_denied );
// test not-in-table condition:
ec = error_code( 1234567890, system_category );
BOOST_CHECK( ec.value() == 1234567890 );
- BOOST_CHECK( ec.posix() == no_posix_equivalent );
+ BOOST_CHECK( ec.posix() == posix::no_posix_equivalent );
#else
// TODO: write some POSIX tests
Index: error_code_user_test.cpp
===================================================================
RCS file: /cvsroot/boost/boost/libs/system/test/error_code_user_test.cpp,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -d -r1.1.2.2 -r1.1.2.3
--- error_code_user_test.cpp 24 Jul 2007 15:24:03 -0000 1.1.2.2
+++ error_code_user_test.cpp 26 Jul 2007 20:22:20 -0000 1.1.2.3
@@ -59,11 +59,11 @@
return s;
}
- boost::system::posix_errno posix( int ev ) const
+ boost::system::posix::posix_errno posix( int ev ) const
{
return ev == BOO_BOO
- ? boost::system::io_error
- : boost::system::no_posix_equivalent;
+ ? boost::system::posix::io_error
+ : boost::system::posix::no_posix_equivalent;
}
};
@@ -91,10 +91,10 @@
BOOST_CHECK( ec.value() == boost::asio::boo_boo );
BOOST_CHECK( ec.category() == boost::asio::asio_error_category );
- BOOST_CHECK( ec.posix() == boost::system::io_error );
+ BOOST_CHECK( ec.posix() == boost::system::posix::io_error );
boost::system::error_code ec2( boost::asio::boo_boo+1,
boost::asio::asio_error_category );
- BOOST_CHECK( ec2.posix() == boost::system::no_posix_equivalent );
+ BOOST_CHECK( ec2.posix() == boost::system::posix::no_posix_equivalent );
return 0;
}
Index: system_error_test.cpp
===================================================================
RCS file: /cvsroot/boost/boost/libs/system/test/system_error_test.cpp,v
retrieving revision 1.2.2.1
retrieving revision 1.2.2.2
diff -u -d -r1.2.2.1 -r1.2.2.2
--- system_error_test.cpp 17 Jun 2007 15:55:56 -0000 1.2.2.1
+++ system_error_test.cpp 26 Jul 2007 20:22:20 -0000 1.2.2.2
@@ -28,7 +28,7 @@
using boost::system::system_error;
using boost::system::error_code;
-using boost::system::posix_category;
+using boost::system::system_category;
#define TEST(x,v,w) test(#x,x,v,w)
@@ -39,13 +39,13 @@
{
std::cout << "test " << desc << "\n what() returns \"" << ex.what() <<
"\"\n";
BOOST_CHECK( ex.code().value() == v );
- BOOST_CHECK( ex.code().category() == posix_category );
-# ifdef BOOST_WINDOWS_API
- BOOST_CHECK( std::string( ex.what() ) == str );
- if ( std::string( ex.what() ) != str )
- std::cout << "expected \"" << str << "\", but what() returned \""
- << ex.what() << "\"\n";
-# endif
+// BOOST_CHECK( ex.code().category() == posix_category );
+//# ifdef BOOST_WINDOWS_API
+// BOOST_CHECK( std::string( ex.what() ) == str );
+// if ( std::string( ex.what() ) != str )
+// std::cout << "expected \"" << str << "\", but what() returned \""
+// << ex.what() << "\"\n";
+//# endif
}
const boost::uint_least32_t uvalue = 1u;
@@ -55,11 +55,21 @@
{
// all combinations of constructors:
- system_error se_0_m( error_code(0, posix_category), "se_0_m" );
- system_error se_1_m( 1, posix_category, "se_1_m" );
- system_error se_0_nm( error_code(0, posix_category), "" );
- system_error se_1_nm( 1, posix_category, "" );
- system_error se_1u_m( uvalue, posix_category, "se_1u_m" );
+ system_error se_0_m( error_code(0, system_category), "se_0_m" );
+ system_error se_1_m( 1, system_category, "se_1_m" );
+ system_error se_0_nm( error_code(0, system_category), "" );
+ system_error se_1_nm( 1, system_category, "" );
+ system_error se_1u_m( uvalue, system_category, "se_1u_m" );
+
+# ifdef BOOST_POSIX_API
+ system_error se_2_m( boost::system::posix::address_in_use, "foobar" );
+ BOOST_CHECK( se_2_m.code() == boost::system::posix::address_in_use );
+# else
+ system_error se_2_m( boost::system::sys::lock_violation, "foobar" );
+ BOOST_CHECK( se_2_m.code() == boost::system::sys::lock_violation );
+# endif
+ BOOST_CHECK( std::string("foobar") == se_2_m.what() );
+ std::cout << "*" << se_2_m.what() << "*\n";
TEST( se_0_m, 0, "se_0_m" );
TEST( se_1_m, 1, "se_1_m: Operation not permitted" );
@@ -67,6 +77,7 @@
TEST( se_1_nm, 1, "Operation not permitted" );
TEST( se_1u_m, 1, "se_1u_m: Operation not permitted" );
+
return 0;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs