From 6fbc8ee741264cd12d7be8e0d638494b5c57c658 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Sun, 31 Oct 2010 02:25:04 +0000 Subject: [PATCH] Added a test for 'get_c_array' [SVN r66294] --- test/Jamfile.v2 | 1 + test/array6.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 test/array6.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1379a5b..2deb3d5 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -11,4 +11,5 @@ test-suite array : [ run array3.cpp ] [ run array4.cpp ] [ run array5.cpp ] + [ run array6.cpp ] ; diff --git a/test/array6.cpp b/test/array6.cpp new file mode 100644 index 0000000..aaeed2d --- /dev/null +++ b/test/array6.cpp @@ -0,0 +1,47 @@ +/* tests for using class array<> specialization for size 0 + * (C) Copyright Alisdair Meredith 2006. + * 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) + */ + +#include +#include +#include +#include + +namespace { +unsigned int failed_tests = 0; + +void fail_test( const char * reason ) { + ++failed_tests; + std::cerr << "Test failure " << failed_tests << ": " << reason << std::endl; +} + +template< class T > +void RunTests() +{ + typedef boost::array< T, 5 > test_type; + typedef T arr[5]; + test_type test_case; // = { 1, 1, 2, 3, 5 }; + + arr &aRef = get_c_array ( test_case ); + if ( &*test_case.begin () != &aRef[0] ) + fail_test ( "Array6: Same thing not equal?(1)" ); + + const arr &caRef = get_c_array ( test_case ); + if ( &*test_case.begin () != &caRef[0] ) + fail_test ( "Array6: Same thing not equal?(2)" ); +} + +} + +int main() +{ + RunTests< bool >(); + RunTests< void * >(); + RunTests< long double >(); + RunTests< std::string >(); + return failed_tests; +} +