##==============================================================================
#    Copyright (c) 2003-2006 Joel de Guzman
#
#   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)
#==============================================================================
# bring in rules for testing
import testing ;

{
    test-suite fusion :

    [ run algorithm/all.cpp :  :  :  : ]
    [ run algorithm/any.cpp :  :  :  : ]
    [ run algorithm/clear.cpp :  :  :  : ]
    [ run algorithm/count.cpp :  :  :  : ]
    [ run algorithm/count_if.cpp :  :  :  : ]
    [ run algorithm/erase.cpp :  :  :  : ]
    [ run algorithm/erase_key.cpp :  :  :  : ]
    [ run algorithm/filter.cpp :  :  :  : ]
    [ run algorithm/filter_if.cpp :  :  :  : ]
    [ run algorithm/find.cpp :  :  :  : ]
    [ run algorithm/find_if.cpp :  :  :  : ]
    [ run algorithm/fold.cpp :  :  :  : ]
    [ run algorithm/for_each.cpp :  :  :  : ]
    [ run algorithm/insert.cpp :  :  :  : ]
    [ run algorithm/insert_range.cpp :  :  :  : ]
    [ run algorithm/none.cpp :  :  :  : ]
    [ run algorithm/pop_back.cpp :  :  :  : ]
    [ run algorithm/pop_front.cpp :  :  :  : ]
    [ run algorithm/push_back.cpp :  :  :  : ]
    [ run algorithm/push_front.cpp :  :  :  : ]
    [ run algorithm/remove.cpp :  :  :  : ]
    [ run algorithm/remove_if.cpp :  :  :  : ]
    [ run algorithm/replace.cpp :  :  :  : ]
    [ run algorithm/replace_if.cpp :  :  :  : ]
    [ run algorithm/reverse.cpp :  :  :  : ]
    [ run algorithm/transform.cpp :  :  :  : ]
    [ run algorithm/join.cpp :  :  :  : ]
    [ run algorithm/zip.cpp : : : : ]
    [ run algorithm/zip2.cpp : : : : ]
    [ run algorithm/zip_ignore.cpp : : : : ]

    [ run sequence/as_list.cpp :  :  :  : ]
    [ run sequence/as_map.cpp :  :  :  : ]
    [ run sequence/as_set.cpp :  :  :  : ]
    [ run sequence/as_vector.cpp :  :  :  : ]
    [ run sequence/boost_tuple.cpp :  :  :  : ]
    [ run sequence/cons.cpp :  :  :  : ]
    [ run sequence/filter_view.cpp :  :  :  : ]
    [ run sequence/io.cpp :  :  :  : ]
    [ run sequence/iterator_range.cpp :  :  :  : ]
    [ run sequence/joint_view.cpp :  :  :  : ]
    [ run sequence/list_comparison.cpp :  :  :  : ]
    [ run sequence/list_construction.cpp :  :  :  : ]
    [ run sequence/list_copy.cpp :  :  :  : ]
    [ run sequence/list_iterator.cpp :  :  :  : ]
    [ run sequence/list_make.cpp :  :  :  : ]
    [ run sequence/list_misc.cpp :  :  :  : ]
    [ run sequence/list_mutate.cpp :  :  :  : ]
    [ run sequence/list_tie.cpp :  :  :  : ]
    [ run sequence/list_value_at.cpp :  :  :  : ]
    [ run sequence/deque_comparison.cpp :  :  :  : ]
    [ run sequence/deque_construction.cpp :  :  :  : ]
    [ run sequence/deque_copy.cpp :  :  :  : ]
    [ run sequence/deque_iterator.cpp :  :  :  : ]
    [ run sequence/deque_make.cpp :  :  :  : ]
    [ run sequence/deque_misc.cpp :  :  :  : ]
    [ run sequence/deque_mutate.cpp :  :  :  : ]
    [ run sequence/deque_tie.cpp :  :  :  : ]
    [ run sequence/deque_value_at.cpp :  :  :  : ]
    [ run sequence/front_extended_deque.cpp :  :  :  : ]
    [ run sequence/back_extended_deque.cpp :  :  :  : ]
    [ run sequence/make_list.cpp :  :  :  : ]
    [ run sequence/make_vector.cpp :  :  :  : ]
    [ run sequence/map.cpp :  :  :  : ]
    [ run sequence/map_tie.cpp :  :  :  : ]
    [ run sequence/nview.cpp :  :  :  : ]
    [ run sequence/reverse_view.cpp :  :  :  : ]
    [ run sequence/set.cpp :  :  :  : ]
    [ run sequence/single_view.cpp :  :  :  : ]
    [ run sequence/std_pair.cpp :  :  :  : ]
    [ run sequence/array.cpp :  :  :  : ]
    [ run sequence/tuple_comparison.cpp :  :  :  : ]
    [ run sequence/tuple_construction.cpp :  :  :  : ]
    [ run sequence/tuple_copy.cpp :  :  :  : ]
    [ run sequence/tuple_element.cpp :  :  :  : ]
    [ run sequence/tuple_make.cpp :  :  :  : ]
    [ run sequence/tuple_misc.cpp :  :  :  : ]
    [ run sequence/tuple_mutate.cpp :  :  :  : ]
    [ run sequence/tuple_tie.cpp :  :  :  : ]
    [ run sequence/tr1_tuple_auto_conv.cpp :  :  :  : ]
    [ run sequence/transform_view.cpp :  :  :  : ]
    [ run sequence/vector_comparison.cpp :  :  :  : ]
    [ run sequence/vector_construction.cpp :  :  :  : ]
    [ run sequence/vector_copy.cpp :  :  :  : ]
    [ run sequence/vector_iterator.cpp :  :  :  : ]
    [ run sequence/vector_make.cpp :  :  :  : ]
    [ run sequence/vector_misc.cpp :  :  :  : ]
    [ run sequence/vector_mutate.cpp :  :  :  : ]
    [ run sequence/vector_n.cpp :  :  :  : ]
    [ run sequence/vector_tie.cpp :  :  :  : ]
    [ run sequence/vector_value_at.cpp :  :  :  : ]
    [ run sequence/zip_view.cpp : : : : ]
    [ run sequence/zip_view2.cpp : : : : ]
    [ run sequence/zip_view_ignore.cpp : : : : ]
    [ run sequence/repetitive_view.cpp : : : : ]
    [ run sequence/deduce_sequence.cpp : : : : ]
    [ run sequence/adapt_struct.cpp : : : : ]
    [ run sequence/adapt_assoc_struct.cpp : : : : ]

    [ run functional/fused.cpp : : : : ]
    [ run functional/fused_function_object.cpp : : : : ]
    [ run functional/fused_procedure.cpp : : : : ]
    [ run functional/unfused.cpp : : : : ]
    [ run functional/unfused_typed.cpp : : : : ]
    [ run functional/make_fused.cpp : : : : ]
    [ run functional/make_fused_function_object.cpp : : : : ]
    [ run functional/make_fused_procedure.cpp : : : : ]
    [ run functional/make_unfused.cpp : : : : ]
    [ run functional/invoke.cpp : : : : ]
    [ run functional/invoke_function_object.cpp : : : : ]
    [ run functional/invoke_procedure.cpp : : : : ]
    [ run sequence/swap.cpp :  :  :  : ]

#   [ compile-fail xxx.cpp :  :  :  :  ]

    ;
}

{
    # Text for extension features, must be explicitly specified on the command line to be run
    # TODO these are not in a test-suite because currently test-suites cannot be marked "explicit"

    run algorithm/ext_/for_each_s.cpp ;
    explicit for_each_s ;

    run algorithm/ext_/find_if_s.cpp ;
    explicit find_if_s ;

    run sequence/ext_/iterator_range_s.cpp ;
    explicit iterator_range_s ;
}
