diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 066e724..0170da7 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -45,5 +45,7 @@ test-suite multi_array [ run stl_interaction.cpp ../../test/build//boost_test_exec_monitor ] [ run resize.cpp ../../test/build//boost_test_exec_monitor ] [ run assert.cpp ../../test/build//boost_test_exec_monitor ] + [ run reverse_view.cpp ../../test/build//boost_test_exec_monitor ] + [ compile concept_checks.cpp ] ; diff --git a/test/reverse_view.cpp b/test/reverse_view.cpp new file mode 100644 index 0000000..ee2c733 --- /dev/null +++ b/test/reverse_view.cpp @@ -0,0 +1,43 @@ +// Copyright 2002 The Trustees of Indiana University. + +// Use, modification and distribution is subject to 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) + +// Boost.MultiArray Library +// Authors: Ronald Garcia +// Jeremy Siek +// Andrew Lumsdaine +// See http://www.boost.org/libs/multi_array for documentation. + +// +// reverse_view.cpp - a small test of creating a view with negative strides +// + +#include "boost/multi_array.hpp" +#include "boost/test/minimal.hpp" +#include "boost/array.hpp" + +int +test_main(int,char*[]) +{ + using namespace boost; + + + // One-dimensional array with views + double data[] = { 1, 2, 3, 4 }; + double rdata[] = { 4, 3, 2, 1 }; + + typedef multi_array< double, 1 > array; + array A(extents[4]); + A.assign(data,data+4); + + typedef array::index_range range; + array::array_view<1>::type B = A[indices[range(3, -1, -1)]]; + + for(multi_array_types::size_type i = 0; i != B.size(); ++i) { + BOOST_CHECK(B[i] == rdata[i]); + } + + return boost::exit_success; +}