diff options
Diffstat (limited to 'src/boost/libs/array/test/array6.cpp')
-rw-r--r-- | src/boost/libs/array/test/array6.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/boost/libs/array/test/array6.cpp b/src/boost/libs/array/test/array6.cpp new file mode 100644 index 00000000..d2cca910 --- /dev/null +++ b/src/boost/libs/array/test/array6.cpp @@ -0,0 +1,60 @@ +/* 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 <string> +#include <iostream> +#include <boost/array.hpp> +#include <algorithm> + +#include <boost/core/lightweight_test_trait.hpp> + +namespace { + 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 ); + BOOST_TEST ( &*test_case.begin () == &aRef[0] ); + + const arr &caRef = get_c_array ( test_case ); + typename test_type::const_iterator iter = test_case.begin (); + BOOST_TEST ( &*iter == &caRef[0] ); + + // Confirm at() throws the std lib defined exception + try { + test_case.at( test_case.size()); + BOOST_TEST(false); + } + catch ( const std::out_of_range & ) {} + + try { + test_case.at( test_case.size() + 1); + BOOST_TEST(false); + } + catch ( const std::out_of_range & ) {} + + try { + test_case.at( test_case.size() + 100); + BOOST_TEST(false); + } + catch ( const std::out_of_range & ) {} + } +} + +int main () +{ + RunTests< bool >(); + RunTests< void * >(); + RunTests< long double >(); + RunTests< std::string >(); + + return boost::report_errors(); +} + |