]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/test/quat_traits_array_test.cpp
09fdf5b1fc62279ee4586b2e08a745c9e5b8010f
1 //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
3 //Distributed under the Boost Software License, Version 1.0. (See accompanying
4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 #include <boost/qvm/quat_traits_array.hpp>
7 #include <boost/qvm/quat_operations.hpp>
8 #include <boost/detail/lightweight_test.hpp>
10 template <class T
,class U
>
19 template <class T
,class P
>
21 test_ref_cast( T
& q
, P
* ptr
)
23 using namespace boost::qvm
;
24 BOOST_QVM_STATIC_ASSERT(is_quat
<T
>::value
);
25 BOOST_TEST(quat_traits
<T
>::template read_element
<0>(q
)==ptr
[0]);
26 BOOST_TEST(quat_traits
<T
>::template read_element
<1>(q
)==ptr
[1]);
27 BOOST_TEST(quat_traits
<T
>::template read_element
<2>(q
)==ptr
[2]);
28 BOOST_TEST(quat_traits
<T
>::template read_element
<3>(q
)==ptr
[3]);
29 BOOST_TEST(&quat_traits
<T
>::template write_element
<0>(q
)==&ptr
[0]);
30 BOOST_TEST(&quat_traits
<T
>::template write_element
<1>(q
)==&ptr
[1]);
31 BOOST_TEST(&quat_traits
<T
>::template write_element
<2>(q
)==&ptr
[2]);
32 BOOST_TEST(&quat_traits
<T
>::template write_element
<3>(q
)==&ptr
[3]);
33 BOOST_TEST(&q
[0]==&ptr
[0]);
34 BOOST_TEST(&q
[1]==&ptr
[1]);
35 BOOST_TEST(&q
[2]==&ptr
[2]);
36 BOOST_TEST(&q
[3]==&ptr
[3]);
42 using namespace boost::qvm
;
44 BOOST_QVM_STATIC_ASSERT(is_quat
<int[4]>::value
);
45 BOOST_QVM_STATIC_ASSERT(!is_quat
<int[4][4]>::value
);
46 BOOST_QVM_STATIC_ASSERT(!is_quat
<int[4][4][4]>::value
);
47 same_type
<quat_traits
<int[4]>::scalar_type
,int>();
48 same_type
< quat
<int>, deduce_quat
<int[4]>::type
>();
49 same_type
< quat
<int>, deduce_quat
<int const[4]>::type
>();
50 int arr
[4] = {0,1,2,3};
51 BOOST_TEST((quat_traits
<int[4]>::read_element
<0>(arr
)==0));
52 BOOST_TEST((quat_traits
<int[4]>::read_element
<1>(arr
)==1));
53 BOOST_TEST((quat_traits
<int[4]>::read_element
<2>(arr
)==2));
54 BOOST_TEST((quat_traits
<int[4]>::read_element
<3>(arr
)==3));
55 BOOST_TEST((quat_traits
<int const[4]>::read_element
<0>(arr
)==0));
56 BOOST_TEST((quat_traits
<int const[4]>::read_element
<1>(arr
)==1));
57 BOOST_TEST((quat_traits
<int const[4]>::read_element
<2>(arr
)==2));
58 BOOST_TEST((quat_traits
<int const[4]>::read_element
<3>(arr
)==3));
59 BOOST_TEST((quat_traits
<int[4]>::read_element_idx(0,arr
)==0));
60 BOOST_TEST((quat_traits
<int[4]>::read_element_idx(1,arr
)==1));
61 BOOST_TEST((quat_traits
<int[4]>::read_element_idx(2,arr
)==2));
62 BOOST_TEST((quat_traits
<int[4]>::read_element_idx(3,arr
)==3));
63 BOOST_TEST((quat_traits
<int const[4]>::read_element_idx(0,arr
)==0));
64 BOOST_TEST((quat_traits
<int const[4]>::read_element_idx(1,arr
)==1));
65 BOOST_TEST((quat_traits
<int const[4]>::read_element_idx(2,arr
)==2));
66 BOOST_TEST((quat_traits
<int const[4]>::read_element_idx(3,arr
)==3));
67 BOOST_TEST((&quat_traits
<int[4]>::write_element
<0>(arr
)==&arr
[0]));
68 BOOST_TEST((&quat_traits
<int[4]>::write_element
<1>(arr
)==&arr
[1]));
69 BOOST_TEST((&quat_traits
<int[4]>::write_element
<2>(arr
)==&arr
[2]));
70 BOOST_TEST((&quat_traits
<int[4]>::write_element
<3>(arr
)==&arr
[3]));
71 BOOST_TEST((&quat_traits
<int[4]>::write_element_idx(0,arr
)==&arr
[0]));
72 BOOST_TEST((&quat_traits
<int[4]>::write_element_idx(1,arr
)==&arr
[1]));
73 BOOST_TEST((&quat_traits
<int[4]>::write_element_idx(2,arr
)==&arr
[2]));
74 BOOST_TEST((&quat_traits
<int[4]>::write_element_idx(3,arr
)==&arr
[3]));
83 test_ref_cast(ptr_qref(ptr
),ptr
);
85 ptr_qref(ptr
) += qref(q
);
86 BOOST_TEST(ptr
[0]==43);
87 BOOST_TEST(ptr
[1]==44);
88 BOOST_TEST(ptr
[2]==45);
89 BOOST_TEST(ptr
[3]==46);
91 return boost::report_errors();