
# Copyright 2006-2008 Daniel James.
# 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)

import testing ;

project unordered-test/unordered
    : requirements
        <warnings>all
        <toolset>intel:<warnings>on
        # Would be nice to define -Wundef, but I'm getting warnings from
        # Boost.Preprocessor on trunk.
        <toolset>gcc:<cxxflags>"-pedantic -Wstrict-aliasing -fstrict-aliasing -Wextra -Wsign-promo -Wunused-parameter -Wconversion -Wfloat-equal -Wshadow"
        <toolset>darwin:<cxxflags>"-pedantic -Wstrict-aliasing -fstrict-aliasing -Wextra -Wsign-promo -Wunused-parameter -Wconversion -Wfloat-equal -Wshadow"
        <toolset>clang:<cxxflags>"-pedantic -Wstrict-aliasing -fstrict-aliasing -Wextra -Wsign-promo -Wunused-parameter -Wsign-conversion -Wconversion -Wfloat-equal -Wshadow"
        <toolset>msvc:<cxxflags>"/wd4494"
        <toolset>gcc:<c++-template-depth>500
    ;

#alias framework : /boost/test//boost_unit_test_framework ;
alias framework : ;

test-suite unordered
    :
        [ run unordered/fwd_set_test.cpp ]
        [ run unordered/fwd_map_test.cpp ]
        [ run unordered/allocator_traits.cpp ]
        [ run unordered/minimal_allocator.cpp ]
        [ run unordered/compile_set.cpp ]
        [ run unordered/compile_map.cpp ]
        [ run unordered/compile_map.cpp : :
            : <define>BOOST_UNORDERED_USE_ALLOCATOR_TRAITS=0
            : compile_map_unordered_allocator ]
        [ run unordered/noexcept_tests.cpp ]
        [ run unordered/link_test_1.cpp unordered/link_test_2.cpp ]
        [ run unordered/incomplete_test.cpp ]
        [ run unordered/simple_tests.cpp ]
        [ run unordered/equivalent_keys_tests.cpp ]
        [ run unordered/constructor_tests.cpp ]
        [ run unordered/copy_tests.cpp ]
        [ run unordered/move_tests.cpp ]
        [ run unordered/assign_tests.cpp ]
        [ run unordered/insert_tests.cpp ]
        [ run unordered/insert_stable_tests.cpp ]
        [ run unordered/insert_hint_tests.cpp ]
        [ run unordered/emplace_tests.cpp ]
        [ run unordered/unnecessary_copy_tests.cpp ]
        [ run unordered/erase_tests.cpp : : : <define>BOOST_UNORDERED_SUPPRESS_DEPRECATED ]
        [ run unordered/erase_equiv_tests.cpp ]
        [ run unordered/extract_tests.cpp ]
        [ run unordered/node_handle_tests.cpp ]
        [ run unordered/merge_tests.cpp ]
        [ compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_MAP : insert_node_type_fail_map ]
        [ compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_MULTIMAP : insert_node_type_fail_multimap ]
        [ compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_SET : insert_node_type_fail_set ]
        [ compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_MULTISET : insert_node_type_fail_multiset ]
        [ run unordered/find_tests.cpp ]
        [ run unordered/at_tests.cpp ]
        [ run unordered/bucket_tests.cpp ]
        [ run unordered/load_factor_tests.cpp ]
        [ run unordered/rehash_tests.cpp ]
        [ run unordered/equality_tests.cpp ]
        [ run unordered/swap_tests.cpp ]
        [ run unordered/detail_tests.cpp ]
        [ run unordered/deduction_tests.cpp ]

        [ run unordered/compile_set.cpp : :
            : <define>BOOST_UNORDERED_USE_MOVE
            : bmove_compile_set ]
        [ run unordered/compile_map.cpp : :
            : <define>BOOST_UNORDERED_USE_MOVE
            : bmove_compile_map ]
        [ run unordered/copy_tests.cpp : :
            : <define>BOOST_UNORDERED_USE_MOVE
            : bmove_copy ]
        [ run unordered/move_tests.cpp : :
            : <define>BOOST_UNORDERED_USE_MOVE
            : bmove_move ]
        [ run unordered/assign_tests.cpp : :
            : <define>BOOST_UNORDERED_USE_MOVE
            : bmove_assign ]
    ;

test-suite unordered-exception
    :
        [ run exception/constructor_exception_tests.cpp framework ]
        [ run exception/copy_exception_tests.cpp framework ]
        [ run exception/assign_exception_tests.cpp framework ]
        [ run exception/move_assign_exception_tests.cpp framework ]
        [ run exception/insert_exception_tests.cpp framework ]
        [ run exception/erase_exception_tests.cpp framework ]
        [ run exception/rehash_exception_tests.cpp framework ]
        [ run exception/swap_exception_tests.cpp framework : : :
            <define>BOOST_UNORDERED_SWAP_METHOD=2 ]
        [ run exception/merge_exception_tests.cpp framework ]
    ;
