trac 6742 - unit test showing working phoenix combined with the transformed adaptor.

This commit is contained in:
Neil Groves
2014-03-03 14:21:35 +00:00
parent 4cb056c80b
commit 42a7f0c70c
2 changed files with 207 additions and 137 deletions

View File

@ -13,12 +13,12 @@
import testing ; import testing ;
project project
: requirements : requirements
<library>/boost/test//boost_unit_test_framework/ <library>/boost/test//boost_unit_test_framework/
<library>/boost/regex//boost_regex/ <library>/boost/regex//boost_regex/
<link>static <link>static
<threading>multi <threading>multi
; ;
rule range-test ( name : includes * ) rule range-test ( name : includes * )
{ {
@ -31,141 +31,142 @@ rule range-test ( name : includes * )
} }
test-suite range : test-suite range :
[ compile-fail compile_fail/iterator_range1.cpp ] [ compile-fail compile_fail/iterator_range1.cpp ]
[ range-test adaptor_test/adjacent_filtered ] [ range-test adaptor_test/adjacent_filtered ]
[ range-test adaptor_test/copied ] [ range-test adaptor_test/copied ]
[ range-test adaptor_test/filtered ] [ range-test adaptor_test/filtered ]
[ range-test adaptor_test/indexed ] [ range-test adaptor_test/indexed ]
[ range-test adaptor_test/indirected ] [ range-test adaptor_test/indirected ]
[ range-test adaptor_test/map ] [ range-test adaptor_test/map ]
[ range-test adaptor_test/replaced ] [ range-test adaptor_test/replaced ]
[ range-test adaptor_test/replaced_if ] [ range-test adaptor_test/replaced_if ]
[ range-test adaptor_test/reversed ] [ range-test adaptor_test/reversed ]
[ range-test adaptor_test/sliced ] [ range-test adaptor_test/sliced ]
[ range-test adaptor_test/strided ] [ range-test adaptor_test/strided ]
[ range-test adaptor_test/strided2 ] [ range-test adaptor_test/strided2 ]
[ range-test adaptor_test/ticket_6742_transformed_c4789_warning ]
[ range-test adaptor_test/ticket_8676_sliced_transformed ] [ range-test adaptor_test/ticket_8676_sliced_transformed ]
[ range-test adaptor_test/ticket_9519_strided_reversed ] [ range-test adaptor_test/ticket_9519_strided_reversed ]
[ range-test adaptor_test/tokenized ] [ range-test adaptor_test/tokenized ]
[ range-test adaptor_test/transformed ] [ range-test adaptor_test/transformed ]
[ range-test adaptor_test/type_erased ] [ range-test adaptor_test/type_erased ]
[ range-test adaptor_test/uniqued ] [ range-test adaptor_test/uniqued ]
[ range-test adaptor_test/adjacent_filtered_example ] [ range-test adaptor_test/adjacent_filtered_example ]
[ range-test adaptor_test/copied_example ] [ range-test adaptor_test/copied_example ]
[ range-test adaptor_test/filtered_example ] [ range-test adaptor_test/filtered_example ]
[ range-test adaptor_test/indexed_example ] [ range-test adaptor_test/indexed_example ]
[ range-test adaptor_test/indirected_example ] [ range-test adaptor_test/indirected_example ]
[ range-test adaptor_test/map_keys_example ] [ range-test adaptor_test/map_keys_example ]
[ range-test adaptor_test/map_values_example ] [ range-test adaptor_test/map_values_example ]
[ range-test adaptor_test/replaced_example ] [ range-test adaptor_test/replaced_example ]
[ range-test adaptor_test/replaced_if_example ] [ range-test adaptor_test/replaced_if_example ]
[ range-test adaptor_test/reversed_example ] [ range-test adaptor_test/reversed_example ]
[ range-test adaptor_test/sliced_example ] [ range-test adaptor_test/sliced_example ]
[ range-test adaptor_test/strided_example ] [ range-test adaptor_test/strided_example ]
[ range-test adaptor_test/transformed_example ] [ range-test adaptor_test/transformed_example ]
[ range-test adaptor_test/tokenized_example ] [ range-test adaptor_test/tokenized_example ]
[ range-test adaptor_test/type_erased_example ] [ range-test adaptor_test/type_erased_example ]
[ range-test adaptor_test/uniqued_example ] [ range-test adaptor_test/uniqued_example ]
[ range-test algorithm_test/adjacent_find ] [ range-test algorithm_test/adjacent_find ]
[ range-test algorithm_test/binary_search ] [ range-test algorithm_test/binary_search ]
[ range-test algorithm_test/copy ] [ range-test algorithm_test/copy ]
[ range-test algorithm_test/copy_backward ] [ range-test algorithm_test/copy_backward ]
[ range-test algorithm_test/count ] [ range-test algorithm_test/count ]
[ range-test algorithm_test/count_if ] [ range-test algorithm_test/count_if ]
[ range-test algorithm_test/equal ] [ range-test algorithm_test/equal ]
[ range-test algorithm_test/equal_range ] [ range-test algorithm_test/equal_range ]
[ range-test algorithm_test/fill ] [ range-test algorithm_test/fill ]
[ range-test algorithm_test/find ] [ range-test algorithm_test/find ]
[ range-test algorithm_test/find_if ] [ range-test algorithm_test/find_if ]
[ range-test algorithm_test/find_end ] [ range-test algorithm_test/find_end ]
[ range-test algorithm_test/find_first_of ] [ range-test algorithm_test/find_first_of ]
[ range-test algorithm_test/for_each ] [ range-test algorithm_test/for_each ]
[ range-test algorithm_test/generate ] [ range-test algorithm_test/generate ]
[ range-test algorithm_test/heap ] [ range-test algorithm_test/heap ]
[ range-test algorithm_test/includes ] [ range-test algorithm_test/includes ]
[ range-test algorithm_test/inplace_merge ] [ range-test algorithm_test/inplace_merge ]
[ range-test algorithm_test/lexicographical_compare ] [ range-test algorithm_test/lexicographical_compare ]
[ range-test algorithm_test/lower_bound ] [ range-test algorithm_test/lower_bound ]
[ range-test algorithm_test/max_element ] [ range-test algorithm_test/max_element ]
[ range-test algorithm_test/merge ] [ range-test algorithm_test/merge ]
[ range-test algorithm_test/min_element ] [ range-test algorithm_test/min_element ]
[ range-test algorithm_test/mismatch ] [ range-test algorithm_test/mismatch ]
[ range-test algorithm_test/next_permutation ] [ range-test algorithm_test/next_permutation ]
[ range-test algorithm_test/nth_element ] [ range-test algorithm_test/nth_element ]
[ range-test algorithm_test/partial_sort ] [ range-test algorithm_test/partial_sort ]
[ range-test algorithm_test/partition ] [ range-test algorithm_test/partition ]
[ range-test algorithm_test/prev_permutation ] [ range-test algorithm_test/prev_permutation ]
[ range-test algorithm_test/random_shuffle ] [ range-test algorithm_test/random_shuffle ]
[ range-test algorithm_test/remove ] [ range-test algorithm_test/remove ]
[ range-test algorithm_test/remove_copy ] [ range-test algorithm_test/remove_copy ]
[ range-test algorithm_test/remove_copy_if ] [ range-test algorithm_test/remove_copy_if ]
[ range-test algorithm_test/remove_if ] [ range-test algorithm_test/remove_if ]
[ range-test algorithm_test/replace ] [ range-test algorithm_test/replace ]
[ range-test algorithm_test/replace_copy ] [ range-test algorithm_test/replace_copy ]
[ range-test algorithm_test/replace_copy_if ] [ range-test algorithm_test/replace_copy_if ]
[ range-test algorithm_test/replace_if ] [ range-test algorithm_test/replace_if ]
[ range-test algorithm_test/reverse ] [ range-test algorithm_test/reverse ]
[ range-test algorithm_test/reverse_copy ] [ range-test algorithm_test/reverse_copy ]
[ range-test algorithm_test/rotate ] [ range-test algorithm_test/rotate ]
[ range-test algorithm_test/rotate_copy ] [ range-test algorithm_test/rotate_copy ]
[ range-test algorithm_test/search ] [ range-test algorithm_test/search ]
[ range-test algorithm_test/search_n ] [ range-test algorithm_test/search_n ]
[ range-test algorithm_test/set_difference ] [ range-test algorithm_test/set_difference ]
[ range-test algorithm_test/set_intersection ] [ range-test algorithm_test/set_intersection ]
[ range-test algorithm_test/set_symmetric_difference ] [ range-test algorithm_test/set_symmetric_difference ]
[ range-test algorithm_test/set_union ] [ range-test algorithm_test/set_union ]
[ range-test algorithm_test/sort ] [ range-test algorithm_test/sort ]
[ range-test algorithm_test/stable_partition ] [ range-test algorithm_test/stable_partition ]
[ range-test algorithm_test/stable_sort ] [ range-test algorithm_test/stable_sort ]
[ range-test algorithm_test/swap_ranges ] [ range-test algorithm_test/swap_ranges ]
[ range-test algorithm_test/transform ] [ range-test algorithm_test/transform ]
[ range-test algorithm_test/unique ] [ range-test algorithm_test/unique ]
[ range-test algorithm_test/unique_copy ] [ range-test algorithm_test/unique_copy ]
[ range-test algorithm_test/upper_bound ] [ range-test algorithm_test/upper_bound ]
[ range-test algorithm_ext_test/copy_n ] [ range-test algorithm_ext_test/copy_n ]
[ range-test algorithm_ext_test/erase ] [ range-test algorithm_ext_test/erase ]
[ range-test algorithm_ext_test/for_each_ext ] [ range-test algorithm_ext_test/for_each_ext ]
[ range-test algorithm_ext_test/insert ] [ range-test algorithm_ext_test/insert ]
[ range-test algorithm_ext_test/iota ] [ range-test algorithm_ext_test/iota ]
[ range-test algorithm_ext_test/is_sorted ] [ range-test algorithm_ext_test/is_sorted ]
[ range-test algorithm_ext_test/overwrite ] [ range-test algorithm_ext_test/overwrite ]
[ range-test algorithm_ext_test/push_back ] [ range-test algorithm_ext_test/push_back ]
[ range-test algorithm_ext_test/push_front ] [ range-test algorithm_ext_test/push_front ]
[ range-test adl_conformance ] [ range-test adl_conformance ]
[ range-test adl_conformance_no_using ] [ range-test adl_conformance_no_using ]
[ range-test algorithm ] [ range-test algorithm ]
[ range-test algorithm_example ] [ range-test algorithm_example ]
[ range-test array ] [ range-test array ]
# [ range-test atl : <include>$(VC71_ROOT)/atlmfc/include ] # [ range-test atl : <include>$(VC71_ROOT)/atlmfc/include ]
[ range-test begin ] [ range-test begin ]
[ range-test combine ] [ range-test combine ]
[ range-test compat2 ] [ range-test compat2 ]
[ range-test compat3 ] [ range-test compat3 ]
[ range-test const_ranges ] [ range-test const_ranges ]
[ range-test counting_range ] [ range-test counting_range ]
[ range-test end ] [ range-test end ]
[ range-test extension_mechanism ] [ range-test extension_mechanism ]
[ range-test extension_size ] [ range-test extension_size ]
[ range-test has_range_iterator ] [ range-test has_range_iterator ]
[ range-test irange ] [ range-test irange ]
[ range-test istream_range ] [ range-test istream_range ]
[ range-test iterator_pair ] [ range-test iterator_pair ]
[ range-test iterator_range ] [ range-test iterator_range ]
[ range-test iterator_range_variant ] [ range-test iterator_range_variant ]
# [ range-test mfc : <include>$(VC71_ROOT)/atlmfc/include ] # [ range-test mfc : <include>$(VC71_ROOT)/atlmfc/include ]
[ range-test join ] [ range-test join ]
[ range-test partial_workaround ] [ range-test partial_workaround ]
[ range-test pointer_as_iterator ] [ range-test pointer_as_iterator ]
[ range-test reversible_range ] [ range-test reversible_range ]
[ range-test std_container ] [ range-test std_container ]
[ range-test string ] [ range-test string ]
[ range-test sub_range ] [ range-test sub_range ]
[ range-test ticket_5486 ] [ range-test ticket_5486 ]
[ range-test ticket_5544_terminate_irange ] [ range-test ticket_5544_terminate_irange ]
[ range-test ticket_5547 ] [ range-test ticket_5547 ]
[ range-test ticket_5556_is_sorted_namespace ] [ range-test ticket_5556_is_sorted_namespace ]
[ range-test ticket_5811_indirected_optional ] [ range-test ticket_5811_indirected_optional ]
[ range-test ticket_6715_iterator_range_equality ] [ range-test ticket_6715_iterator_range_equality ]
[ range-test ticket_6944 ] [ range-test ticket_6944 ]
; ;

View File

@ -0,0 +1,69 @@
// Boost.Range library
//
// Copyright Neil Groves 2014. 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)
//
//
// For more information, see http://www.boost.org/libs/range/
//
#include <boost/phoenix/core.hpp>
#include <boost/phoenix/operator.hpp>
#include <boost/range/adaptor/transformed.hpp>
#include <boost/range/algorithm_ext/push_back.hpp>
#include <boost/test/test_tools.hpp>
#include <boost/test/unit_test.hpp>
#include <iterator>
#include <iostream>
#include <vector>
namespace
{
struct test_struct
{
double x;
double y;
};
struct get_x
{
typedef double result_type;
double operator()(const test_struct& s) const
{
return s.x;
}
};
void range_transformed_warning()
{
using namespace boost::phoenix::arg_names;
using namespace boost::adaptors;
test_struct t;
t.x = 2.0;
t.y = -4.0;
std::vector<test_struct> v(10u, t);
std::vector<double> output1;
boost::push_back(output1, v | transformed((&arg1)->*& test_struct::x));
std::vector<double> output2;
boost::push_back(output2, v | transformed(get_x()));
BOOST_CHECK_EQUAL_COLLECTIONS(
output1.begin(), output1.end(),
output2.begin(), output2.end());
}
} // anonymous namespace
boost::unit_test::test_suite*
init_unit_test_suite(int argc, char* argv[])
{
boost::unit_test::test_suite* test
= BOOST_TEST_SUITE( "Range adaptors - transformed warning" );
test->add(BOOST_TEST_CASE(&range_transformed_warning));
return test;
}