mirror of
				https://github.com/boostorg/smart_ptr.git
				synced 2025-11-03 01:01:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
//
 | 
						|
//  owner_less_test.cpp
 | 
						|
//
 | 
						|
//  A regression test for owner_less
 | 
						|
//
 | 
						|
//  Copyright (c) 2008 Frank Mori Hess
 | 
						|
//
 | 
						|
//  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)
 | 
						|
//
 | 
						|
 | 
						|
#include <boost/core/lightweight_test.hpp>
 | 
						|
#include <boost/smart_ptr/owner_less.hpp>
 | 
						|
#include <boost/shared_ptr.hpp>
 | 
						|
#include <boost/weak_ptr.hpp>
 | 
						|
 | 
						|
int main()
 | 
						|
{
 | 
						|
  boost::owner_less<boost::shared_ptr<int> > comp;
 | 
						|
  {
 | 
						|
    boost::shared_ptr<int> x;
 | 
						|
    boost::shared_ptr<int> y;
 | 
						|
    boost::weak_ptr<int> w;
 | 
						|
    BOOST_TEST(!(comp(x, w) || comp(w, x)));
 | 
						|
  }
 | 
						|
  {
 | 
						|
    boost::shared_ptr<int> z((int*)0);
 | 
						|
    boost::weak_ptr<int> w;
 | 
						|
    BOOST_TEST(comp(z, w) || comp(w, z));
 | 
						|
    {
 | 
						|
      boost::shared_ptr<int> zz(z);
 | 
						|
      w = boost::weak_ptr<int>(zz);
 | 
						|
      BOOST_TEST(!(comp(z, zz) || comp(z, zz)));
 | 
						|
      BOOST_TEST(!(comp(z, w) || comp(z, w)));
 | 
						|
    }
 | 
						|
    BOOST_TEST(!(comp(z, w) || comp(w, z)));
 | 
						|
  }
 | 
						|
  {
 | 
						|
    boost::shared_ptr<int> x;
 | 
						|
    boost::shared_ptr<int> z((int*)0);
 | 
						|
    BOOST_TEST(comp(x, z) || comp(z, x));
 | 
						|
  }
 | 
						|
  {
 | 
						|
    boost::shared_ptr<int> a((int*)0);
 | 
						|
    boost::shared_ptr<int> b((int*)0);
 | 
						|
    BOOST_TEST(comp(a, b) || comp(b, a));
 | 
						|
    boost::weak_ptr<int> w(a);
 | 
						|
    BOOST_TEST(!(comp(a, w) || comp(w, a)));
 | 
						|
    BOOST_TEST(comp(b, w) || comp(w, b));
 | 
						|
  }
 | 
						|
 | 
						|
  boost::owner_less<boost::weak_ptr<int> > weak_comp;
 | 
						|
  {
 | 
						|
    boost::shared_ptr<int> a((int*)0);
 | 
						|
    boost::weak_ptr<int> wa(a);
 | 
						|
    boost::shared_ptr<int> b((int*)0);
 | 
						|
    boost::weak_ptr<int> wb(b);
 | 
						|
    BOOST_TEST(!(weak_comp(a, wa) || weak_comp(wa, a)));
 | 
						|
    BOOST_TEST(!(weak_comp(b, wb) || weak_comp(wb, b)));
 | 
						|
    BOOST_TEST(weak_comp(wa, wb) || weak_comp(wb, wa));
 | 
						|
    BOOST_TEST(weak_comp(wa, b) || weak_comp(b, wa));
 | 
						|
  }
 | 
						|
 | 
						|
  return boost::report_errors();
 | 
						|
}
 |