//---------------------------------------------------------------------------// // Copyright (c) 2013 Kyle Lutz // // 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 // // See http://kylelutz.github.com/compute for more information. //---------------------------------------------------------------------------// #define BOOST_TEST_MODULE TestAdjacentTransformIterator #include #include #include #include #include #include #include "check_macros.hpp" #include "context_setup.hpp" BOOST_AUTO_TEST_CASE(copy) { int data[] = { 1, 2, 4, 7, 11, 16 }; boost::compute::vector input(data, data + 6); boost::compute::vector output(6); boost::compute::minus minus_op; boost::compute::copy( boost::compute::detail::make_adjacent_transform_iterator(input.begin(), minus_op), boost::compute::detail::make_adjacent_transform_iterator(input.end(), minus_op), output.begin() ); CHECK_RANGE_EQUAL(int, 6, output, (1, 1, 2, 3, 4, 5)); } BOOST_AUTO_TEST_CASE(find_largest_gap) { float data[] = { 2.0f, 4.0f, 8.0f, 10.0f, 12.0f }; boost::compute::vector vector(data, data + 5); boost::compute::minus minus_op; boost::compute::vector::iterator iter = boost::compute::max_element( boost::compute::detail::make_adjacent_transform_iterator(vector.begin(), minus_op), boost::compute::detail::make_adjacent_transform_iterator(vector.end(), minus_op) ).base() - 1; BOOST_VERIFY(iter == vector.begin() + 1); } BOOST_AUTO_TEST_SUITE_END()