#//
#// Boost.Pointer Container
#//
#//  Copyright Thorsten Ottosen 2003-2008. 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/ptr_container/
#//

rule sc-test ( name : extra-sources * )
{
    return [ 
      run $(name).cpp /boost/test//boost_unit_test_framework/<link>static $(extra-sources) ]
    ;
}


test-suite ptr_container :
    [ sc-test ptr_inserter ]
    [ sc-test ptr_vector ]
    [ sc-test ptr_list ]
    [ sc-test ptr_deque ]
    [ sc-test ptr_set ]  
    [ sc-test ptr_map ]
    [ sc-test ptr_map_adapter ]
    [ sc-test ptr_array ]
    [ sc-test tree_test ]   
    [ sc-test incomplete_type_test ]
    [ run view_example.cpp ]
    [ sc-test iterator_test ]
    [ run tut1.cpp ]   
    [ sc-test indirect_fun ]  
    [ sc-test serialization : /boost/serialization//boost_serialization ]  
    [ sc-test no_exceptions ]    
    
    [ sc-test ptr_unordered_set ]
    [ sc-test ptr_unordered_map ]        
    [ sc-test ptr_circular_buffer ]    
 #   [ sc-test null_filter_iterator ]    
  
    ;
