##==============================================================================
#    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/fold2.cpp :  :  :  : ]
    [ run algorithm/for_each.cpp :  :  :  : ]
    [ run algorithm/insert.cpp :  :  :  : ]
    [ run algorithm/insert_range.cpp :  :  :  : ]
    [ run algorithm/iter_fold.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_fold.cpp :  :  :  : ]
    [ run algorithm/reverse_iter_fold.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/boost_array.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_adt_named.cpp : : : : ]
    [ run sequence/adapt_adt.cpp : : : : ]
    [ run sequence/adapt_assoc_adt_named.cpp : : : : ]
    [ run sequence/adapt_assoc_adt.cpp : : : : ]
    [ run sequence/adapt_assoc_struct_named.cpp : : : : ]
    [ run sequence/adapt_assoc_struct.cpp : : : : ]
    [ run sequence/adapt_assoc_tpl_adt.cpp : : : : ]
    [ run sequence/adapt_assoc_tpl_struct.cpp : : : : ]
    [ run sequence/adapt_struct_named.cpp : : : : ]
    [ run sequence/adapt_struct.cpp : : : : ]
    [ run sequence/adapt_tpl_adt.cpp : : : : ]
    [ run sequence/adapt_tpl_struct.cpp : : : : ]
    [ run sequence/adt_attribute_proxy.cpp : : : : ]
    [ run sequence/define_struct.cpp : : : : ]
    [ run sequence/define_assoc_struct.cpp : : : : ]
    [ run sequence/define_tpl_struct.cpp : : : : ]
    [ run sequence/define_assoc_tpl_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 ;
}
