# Copyright David Abrahams 2003. Permission to copy, use,
# modify, sell and distribute this software is granted provided this
# copyright notice appears in all copies. This software is provided
# "as is" without express or implied warranty, and with no claim as
# to its suitability for any purpose.

subproject libs/iterator/test ;

import testing ;

rule vc6-stlport-debug-inlining ( toolset variant : non-defaults * )
{
    if [ MATCH (vc-(6[_0-9]*)-stlport) : $(toolset) ]
        && ( <inlining>off in $(non-defaults) )
    {
        non-defaults = [ difference $(non-defaults) : <inlining>off ] 
          <inlining>on ;
    }
    return $(non-defaults) ;
}
  
test-suite iterator
  : 
    # These first two tests will run last, and are expected to fail
    # for many less-capable compilers.
  
    [ compile-fail interoperable_fail.cpp ]
    # test uses expected success, so that we catch unrelated
    # compilation problems.
    [ run is_convertible_fail.cpp ]  

    [ run zip_iterator_test.cpp
        : : : vc6-stlport-debug-inlining
        
        # stlport's debug mode generates long symbols which overwhelm
        # vc6 unless you turn on inlining
#        <msvc-stlport><*><cxxflags>-Ob1
#        <vc-6_5-stlport><*><cxxflags>-Ob1 
    ]
      
    # These tests should work for just about everything.
    [ compile is_lvalue_iterator.cpp ]
    [ compile is_readable_iterator.cpp ]
    [ compile pointee.cpp ]
      
    [ run unit_tests.cpp ]
    [ run concept_tests.cpp ]
    [ run iterator_adaptor_cc.cpp ]
    [ run iterator_adaptor_test.cpp ]
    [ compile iterator_archetype_cc.cpp ]
    [ compile-fail iter_archetype_default_ctor.cpp ]
    [ compile-fail lvalue_concept_fail.cpp ]
    [ run transform_iterator_test.cpp ]
    [ run indirect_iterator_test.cpp ]
    [ compile indirect_iter_member_types.cpp ]
    [ run filter_iterator_test.cpp ]
    [ run iterator_facade.cpp ]
    [ run reverse_iterator_test.cpp ]
    [ run counting_iterator_test.cpp ]
    [ run interoperable.cpp ]
    [ run iterator_traits_test.cpp ]
    [ run permutation_iterator_test.cpp : : : # <stlport-iostream>on 
    ]
      
;
