Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/libs/tr1/test/test_array.cpp @ 45

Last change on this file since 45 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 3.6 KB
Line 
1//  (C) Copyright John Maddock 2005.
2//  Use, modification and distribution are subject to the
3//  Boost Software License, Version 1.0. (See accompanying file
4//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#ifdef TEST_STD_HEADERS
7#include <array>
8#else
9#include <boost/tr1/array.hpp>
10#endif
11
12#include <string>
13#include <boost/static_assert.hpp>
14#include <boost/type_traits/is_same.hpp>
15
16#include "verify_return.hpp"
17
18template <class T>
19void check_array(T& a)
20{
21   typedef typename T::reference reference;
22   typedef typename T::const_reference const_reference;
23   typedef typename T::iterator iterator;
24   typedef typename T::const_iterator const_iterator;
25   typedef typename T::size_type size_type;
26   typedef typename T::difference_type difference_type;
27   typedef typename T::value_type value_type;
28   typedef typename T::reverse_iterator reverse_iterator;
29   typedef typename T::const_reverse_iterator const_reverse_iterator;
30
31   BOOST_STATIC_ASSERT((::boost::is_same<value_type&, reference>::value));
32   BOOST_STATIC_ASSERT((::boost::is_same<value_type const&, const_reference>::value));
33   BOOST_STATIC_ASSERT((::boost::is_same<std::size_t, size_type>::value));
34   BOOST_STATIC_ASSERT((::boost::is_same<std::ptrdiff_t, difference_type>::value));
35   BOOST_STATIC_ASSERT((::boost::is_same<std::reverse_iterator<iterator>, reverse_iterator>::value));
36   BOOST_STATIC_ASSERT((::boost::is_same<std::reverse_iterator<const_iterator>, const_reverse_iterator>::value));
37
38   const T& ca = a;
39   const T& ca2 = a;
40   verify_return_type(a.begin(), iterator());
41   verify_return_type(ca.begin(), const_iterator());
42   verify_return_type(a.end(), iterator());
43   verify_return_type(ca.end(), const_iterator());
44   verify_return_type(a.rbegin(), reverse_iterator());
45   verify_return_type(ca.rbegin(), const_reverse_iterator());
46   verify_return_type(a.rend(), reverse_iterator());
47   verify_return_type(ca.rend(), const_reverse_iterator());
48
49   verify_return_type(ca.size(), size_type(0));
50   verify_return_type(ca.max_size(), size_type(0));
51   verify_return_type(ca.empty(), false);
52
53   verify_return_type(&a[0], static_cast<value_type*>(0));
54   verify_return_type(&ca[0], static_cast<const value_type*>(0));
55   verify_return_type(&a.at(0), static_cast<value_type*>(0));
56   verify_return_type(&ca.at(0), static_cast<const value_type*>(0));
57   verify_return_type(&a.front(), static_cast<value_type*>(0));
58   verify_return_type(&ca.front(), static_cast<const value_type*>(0));
59   verify_return_type(&a.back(), static_cast<value_type*>(0));
60   verify_return_type(&ca.back(), static_cast<const value_type*>(0));
61   //verify_return_type(a.data(), static_cast<value_type*>(0));
62   verify_return_type(ca.data(), static_cast<const value_type*>(0));
63
64   // swap:
65   std::tr1::swap(a, a);
66   verify_return_type(ca == ca2, false);
67   verify_return_type(ca != ca2, false);
68   verify_return_type(ca < ca2, false);
69   verify_return_type(ca > ca2, false);
70   verify_return_type(ca <= ca2, false);
71   verify_return_type(ca >= ca2, false);
72
73   BOOST_STATIC_ASSERT((::boost::is_same< typename std::tr1::tuple_element<0,T>::type, value_type>::value));
74   verify_return_type(&std::tr1::get<0>(a), static_cast<value_type*>(0));
75   verify_return_type(&std::tr1::get<0>(ca), static_cast<const value_type*>(0));
76}
77
78int main()
79{
80   std::tr1::array<int,2> a1 = {};
81   check_array(a1);
82   BOOST_STATIC_ASSERT((std::tr1::tuple_size<std::tr1::array<int,2> >::value == 2));
83 
84   std::tr1::array<std::string,4> a2 = { "abc", "def", "", "y", };
85   check_array(a2);
86   BOOST_STATIC_ASSERT((std::tr1::tuple_size<std::tr1::array<std::string,4> >::value == 4));
87   return 0;
88}
89
Note: See TracBrowser for help on using the repository browser.