# Boost.Range library
#
#  Copyright Neil Groves 2009
#  Copyright Thorsten Ottosen 2003-2004. 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/
#

# bring in rules for testing
import testing ;

project
    : requirements
        <library>/boost/test//boost_unit_test_framework/
        <library>/boost/regex//boost_regex/
        <link>static
        <threading>multi
    ;

rule range-test ( name : includes * )
{
    return [
        run $(name).cpp /boost/test//boost_unit_test_framework /boost/regex//boost_regex/<link>static
        :
        :
        : <toolset>gcc:<cxxflags>"-Wall -Wunused "
        ] ;
}

test-suite range :
    [ compile-fail compile_fail/iterator_range1.cpp ]
    [ compile-fail compile_fail/adaptor/adjacent_filtered_concept.cpp ]
    [ compile-fail compile_fail/adaptor/adjacent_filtered_concept2.cpp ]
    [ compile-fail compile_fail/adaptor/adjacent_filtered_concept3.cpp ]
    [ compile-fail compile_fail/adaptor/adjacent_filtered_concept4.cpp ]
    [ compile-fail compile_fail/adaptor/copied_concept.cpp ]
    [ compile-fail compile_fail/adaptor/copied_concept2.cpp ]
    [ compile-fail compile_fail/adaptor/copied_concept3.cpp ]
    [ compile-fail compile_fail/adaptor/copied_concept4.cpp ]
    [ compile-fail compile_fail/adaptor/reversed_concept.cpp ]
    [ compile-fail compile_fail/adaptor/reversed_concept2.cpp ]
    [ compile-fail compile_fail/adaptor/reversed_concept3.cpp ]
    [ compile-fail compile_fail/adaptor/reversed_concept4.cpp ]
    [ compile-fail compile_fail/adaptor/sliced_concept.cpp ]
    [ compile-fail compile_fail/adaptor/sliced_concept2.cpp ]
    [ compile-fail compile_fail/adaptor/sliced_concept3.cpp ]
    [ compile-fail compile_fail/adaptor/sliced_concept4.cpp ]
    [ compile-fail compile_fail/adaptor/uniqued_concept.cpp ]
    [ compile-fail compile_fail/adaptor/uniqued_concept2.cpp ]
    [ compile-fail compile_fail/adaptor/uniqued_concept3.cpp ]
    [ compile-fail compile_fail/adaptor/uniqued_concept4.cpp ]
    [ range-test adaptor_test/adjacent_filtered ]
    [ range-test adaptor_test/chained ]
    [ range-test adaptor_test/copied ]
    [ range-test adaptor_test/filtered ]
    [ range-test adaptor_test/indexed ]
    [ range-test adaptor_test/indirected ]
    [ range-test adaptor_test/map ]
    [ range-test adaptor_test/ref_unwrapped ]
    [ range-test adaptor_test/ref_unwrapped_example ]
    [ range-test adaptor_test/replaced ]
    [ range-test adaptor_test/replaced_if ]
    [ range-test adaptor_test/reversed ]
    [ range-test adaptor_test/sliced ]
    [ range-test adaptor_test/strided ]
    [ 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_9519_strided_reversed ]
    [ range-test adaptor_test/tokenized ]
    [ range-test adaptor_test/transformed ]
    [ range-test adaptor_test/type_erased ]
    [ range-test adaptor_test/type_erased_abstract ]
    [ range-test adaptor_test/type_erased_brackets ]
    [ range-test adaptor_test/type_erased_mix_values ]
    [ range-test adaptor_test/type_erased_tparam_conv ]
    [ range-test adaptor_test/type_erased_single_pass ]
    [ range-test adaptor_test/type_erased_forward ]
    [ range-test adaptor_test/type_erased_bidirectional ]
    [ range-test adaptor_test/type_erased_random_access ]
    [ range-test adaptor_test/uniqued ]
    [ range-test adaptor_test/adjacent_filtered_example ]
    [ range-test adaptor_test/copied_example ]
    [ range-test adaptor_test/filtered_example ]
    [ range-test adaptor_test/formatted ]
    [ range-test adaptor_test/formatted_example ]
    [ range-test adaptor_test/indexed_example ]
    [ range-test adaptor_test/indirected_example ]
    [ range-test adaptor_test/map_keys_example ]
    [ range-test adaptor_test/map_values_example ]
    [ range-test adaptor_test/replaced_example ]
    [ range-test adaptor_test/replaced_if_example ]
    [ range-test adaptor_test/reversed_example ]
    [ range-test adaptor_test/sliced_example ]
    [ range-test adaptor_test/strided_example ]
    [ range-test adaptor_test/transformed_example ]
    [ range-test adaptor_test/tokenized_example ]
    [ range-test adaptor_test/type_erased_example ]
    [ range-test adaptor_test/uniqued_example ]
    [ range-test algorithm_test/adjacent_find ]
    [ range-test algorithm_test/binary_search ]
    [ range-test algorithm_test/copy ]
    [ range-test algorithm_test/copy_backward ]
    [ range-test algorithm_test/count ]
    [ range-test algorithm_test/count_if ]
    [ range-test algorithm_test/equal ]
    [ range-test algorithm_test/equal_range ]
    [ range-test algorithm_test/fill ]
    [ range-test algorithm_test/find ]
    [ range-test algorithm_test/find_if ]
    [ range-test algorithm_test/find_end ]
    [ range-test algorithm_test/find_first_of ]
    [ range-test algorithm_test/for_each ]
    [ range-test algorithm_test/generate ]
    [ range-test algorithm_test/heap ]
    [ range-test algorithm_test/includes ]
    [ range-test algorithm_test/inplace_merge ]
    [ range-test algorithm_test/lexicographical_compare ]
    [ range-test algorithm_test/lower_bound ]
    [ range-test algorithm_test/max_element ]
    [ range-test algorithm_test/merge ]
    [ range-test algorithm_test/min_element ]
    [ range-test algorithm_test/mismatch ]
    [ range-test algorithm_test/next_permutation ]
    [ range-test algorithm_test/nth_element ]
    [ range-test algorithm_test/partial_sort ]
    [ range-test algorithm_test/partition ]
    [ range-test algorithm_test/prev_permutation ]
    [ range-test algorithm_test/random_shuffle ]
    [ range-test algorithm_test/remove ]
    [ range-test algorithm_test/remove_copy ]
    [ range-test algorithm_test/remove_copy_if ]
    [ range-test algorithm_test/remove_if ]
    [ range-test algorithm_test/replace ]
    [ range-test algorithm_test/replace_copy ]
    [ range-test algorithm_test/replace_copy_if ]
    [ range-test algorithm_test/replace_if ]
    [ range-test algorithm_test/reverse ]
    [ range-test algorithm_test/reverse_copy ]
    [ range-test algorithm_test/rotate ]
    [ range-test algorithm_test/rotate_copy ]
    [ range-test algorithm_test/search ]
    [ range-test algorithm_test/search_n ]
    [ range-test algorithm_test/set_difference ]
    [ range-test algorithm_test/set_intersection ]
    [ range-test algorithm_test/set_symmetric_difference ]
    [ range-test algorithm_test/set_union ]
    [ range-test algorithm_test/sort ]
    [ range-test algorithm_test/stable_partition ]
    [ range-test algorithm_test/stable_sort ]
    [ range-test algorithm_test/swap_ranges ]
    [ range-test algorithm_test/transform ]
    [ range-test algorithm_test/unique ]
    [ range-test algorithm_test/unique_copy ]
    [ range-test algorithm_test/upper_bound ]
    [ range-test algorithm_ext_test/copy_n ]
    [ range-test algorithm_ext_test/erase ]
    [ range-test algorithm_ext_test/for_each_ext ]
    [ range-test algorithm_ext_test/insert ]
    [ range-test algorithm_ext_test/iota ]
    [ range-test algorithm_ext_test/is_sorted ]
    [ range-test algorithm_ext_test/overwrite ]
    [ range-test algorithm_ext_test/push_back ]
    [ range-test algorithm_ext_test/push_front ]
    [ range-test adl_conformance ]
    [ range-test adl_conformance_no_using ]
    [ range-test algorithm ]
    [ range-test algorithm_example ]
    [ range-test array ]
#    [ range-test atl : <include>$(VC71_ROOT)/atlmfc/include ]
    [ range-test begin ]
    [ range-test category ]
    [ range-test combine ]
    [ range-test compat2 ]
    [ range-test compat3 ]
    [ range-test const_iterator ]
    [ range-test const_ranges ]
    [ range-test const_reverse_iterator ]
    [ range-test counting_range ]
    [ range-test difference_type ]
    [ range-test end ]
    [ range-test extension_mechanism ]
    [ range-test extension_size ]
    [ range-test has_range_iterator ]
    [ range-test irange ]
    [ range-test istream_range ]
    [ range-test iterator ]
    [ range-test iterator_ext ]
    [ range-test iterator_pair ]
    [ range-test iterator_range ]
    [ range-test iterator_range_drop ]
    [ range-test iterator_range_equality_bug ]
    [ range-test iterator_range_hash ]
    [ range-test iterator_range_variant ]
#       [ range-test mfc : <include>$(VC71_ROOT)/atlmfc/include ]
    [ range-test join ]
    [ range-test mutable_iterator ]
    [ range-test partial_workaround ]
    [ range-test pointer ]
    [ range-test pointer_as_iterator ]
    [ range-test reference ]
    [ range-test result_iterator ]
    [ range-test reverse_iterator ]
    [ range-test reverse_result_iterator ]
    [ range-test reversible_range ]
    [ range-test size_type ]
    [ range-test std_container ]
    [ range-test string ]
    [ range-test sub_range ]
    [ range-test ticket_5486 ]
    [ range-test ticket_5544_terminate_irange ]
    [ range-test ticket_5547 ]
    [ range-test ticket_5556_is_sorted_namespace ]
    [ range-test ticket_5811_indirected_optional ]
    [ range-test ticket_6715_iterator_range_equality ]
    [ range-test ticket_6944 ]
    [ range-test ticket_10336 ]
    [ range-test value_type ]
    ;

# `quick` target (for CI)
alias quick : std_container ;