| 
									
										
										
										
											2006-05-21 17:14:11 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-18 20:00:59 +00:00
										 |  |  | // Copyright 2006-2007 Daniel James.
 | 
					
						
							| 
									
										
										
										
											2006-07-01 22:31:26 +00:00
										 |  |  | // 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)
 | 
					
						
							| 
									
										
										
										
											2006-05-21 17:14:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include "./containers.hpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define BOOST_TEST_MAIN
 | 
					
						
							|  |  |  | #include <boost/test/unit_test.hpp>
 | 
					
						
							|  |  |  | #include <boost/test/exception_safety.hpp>
 | 
					
						
							|  |  |  | #include "../helpers/random_values.hpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-06 11:42:28 +00:00
										 |  |  | test::seed_t seed(73041); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-05-21 17:14:11 +00:00
										 |  |  | template <class T> | 
					
						
							|  |  |  | struct copy_test1 : public test::exception_base | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     T x; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void run() const { | 
					
						
							|  |  |  |         T y(x); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | template <class T> | 
					
						
							|  |  |  | struct copy_test2 : public test::exception_base | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     test::random_values<T> values; | 
					
						
							|  |  |  |     T x; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     copy_test2() : values(5), x(values.begin(), values.end()) {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void run() const { | 
					
						
							|  |  |  |         T y(x); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | template <class T> | 
					
						
							|  |  |  | struct copy_test3 : public test::exception_base | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     test::random_values<T> values; | 
					
						
							|  |  |  |     T x; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     copy_test3() : values(100), x(values.begin(), values.end()) {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void run() const { | 
					
						
							|  |  |  |         T y(x); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RUN_EXCEPTION_TESTS( | 
					
						
							|  |  |  |     (copy_test1)(copy_test2)(copy_test3), | 
					
						
							|  |  |  |     CONTAINER_SEQ) |