Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r64872 - in sandbox/chrono/libs/chrono: build example test
From: vicente.botet_at_[hidden]
Date: 2010-08-17 16:28:42


Author: viboes
Date: 2010-08-17 16:28:39 EDT (Tue, 17 Aug 2010)
New Revision: 64872
URL: http://svn.boost.org/trac/boost/changeset/64872

Log:
Added some tests
Added:
   sandbox/chrono/libs/chrono/test/common_type_fails.cpp (contents, props changed)
Text files modified:
   sandbox/chrono/libs/chrono/build/Jamfile.v2 | 2 ++
   sandbox/chrono/libs/chrono/example/function_stopclock_example.cpp | 6 +++---
   sandbox/chrono/libs/chrono/example/scoped_stopclock_example.cpp | 6 +++---
   sandbox/chrono/libs/chrono/example/stopclock_accumulator_example.cpp | 15 ++++++++-------
   sandbox/chrono/libs/chrono/example/stopclock_example.cpp | 6 +++---
   sandbox/chrono/libs/chrono/test/Jamfile.v2 | 7 ++++---
   sandbox/chrono/libs/chrono/test/common_type_test.cpp | 29 +++++++++++++++++++++++------
   7 files changed, 46 insertions(+), 25 deletions(-)

Modified: sandbox/chrono/libs/chrono/build/Jamfile.v2
==============================================================================
--- sandbox/chrono/libs/chrono/build/Jamfile.v2 (original)
+++ sandbox/chrono/libs/chrono/build/Jamfile.v2 2010-08-17 16:28:39 EDT (Tue, 17 Aug 2010)
@@ -31,6 +31,7 @@
         #<define>BOOST_CHRONO_USES_MPL_ASSERT
         #<define>BOOST_RATIO_USES_ARRAY_ASSERT
         #<define>BOOST_CHRONO_USES_ARRAY_ASSERT
+ <define>BOOST_COMMON_TYPE_DONT_USE_TYPEOF
         #<toolset>gcc:<linkflags>--enable-auto-import
     : usage-requirements # pass these requirement to dependents (i.e. users)
         #<os>LINUX:<threading>multi
@@ -44,6 +45,7 @@
         #<define>BOOST_COMMON_TYPE_USES_ARRAY_ASSERT
         #<define>BOOST_RATIO_USES_ARRAY_ASSERT
         #<define>BOOST_CHRONO_USES_ARRAY_ASSERT
+ <define>BOOST_COMMON_TYPE_DONT_USE_TYPEOF
         <link>shared:<define>BOOST_CHRONO_DYN_LINK=1
         <link>static:<define>BOOST_CHRONO_STATIC_LINK=1
     ;

Modified: sandbox/chrono/libs/chrono/example/function_stopclock_example.cpp
==============================================================================
--- sandbox/chrono/libs/chrono/example/function_stopclock_example.cpp (original)
+++ sandbox/chrono/libs/chrono/example/function_stopclock_example.cpp 2010-08-17 16:28:39 EDT (Tue, 17 Aug 2010)
@@ -24,8 +24,8 @@
 {
   function_stopclock<> _(BOOST_CURRENT_FUNCTION);
 
- f1(100000);
- f1(200000);
- f1(300000);
+ f1(1000);
+ f1(2000);
+ f1(3000);
   return 0;
 }

Modified: sandbox/chrono/libs/chrono/example/scoped_stopclock_example.cpp
==============================================================================
--- sandbox/chrono/libs/chrono/example/scoped_stopclock_example.cpp (original)
+++ sandbox/chrono/libs/chrono/example/scoped_stopclock_example.cpp 2010-08-17 16:28:39 EDT (Tue, 17 Aug 2010)
@@ -24,8 +24,8 @@
 {
   scoped_stopclock<> _(BOOST_CURRENT_FUNCTION);
 
- f1(100000);
- f1(200000);
- f1(300000);
+ f1(1000);
+ f1(2000);
+ f1(3000);
   return 0;
 }

Modified: sandbox/chrono/libs/chrono/example/stopclock_accumulator_example.cpp
==============================================================================
--- sandbox/chrono/libs/chrono/example/stopclock_accumulator_example.cpp (original)
+++ sandbox/chrono/libs/chrono/example/stopclock_accumulator_example.cpp 2010-08-17 16:28:39 EDT (Tue, 17 Aug 2010)
@@ -15,10 +15,11 @@
 #include "sleep_for.hpp"
 
 using namespace boost::chrono;
+template <typename Clock>
 int f1(long j)
 {
- static stopclock_accumulator<> acc(BOOST_CHRONO_ACCUMULATOR_FUNCTION_FORMAT);
- stopclock_accumulator<>::scoped_run _(acc);
+ static stopclock_accumulator<Clock> acc(BOOST_CHRONO_ACCUMULATOR_FUNCTION_FORMAT);
+ typename stopclock_accumulator<Clock>::scoped_run _(acc);
 
   for ( long i = 0; i < j; ++i )
     std::sqrt( 123.456L ); // burn some time
@@ -29,11 +30,11 @@
 }
 int main()
 {
- static stopclock_accumulator<> acc(BOOST_CHRONO_ACCUMULATOR_FUNCTION_FORMAT);
- stopclock_accumulator<>::scoped_run _(acc);
+ static stopclock_accumulator<process_cpu_clock> acc(BOOST_CHRONO_ACCUMULATOR_FUNCTION_FORMAT);
+ stopclock_accumulator<process_cpu_clock>::scoped_run _(acc);
 
- f1(100000);
- f1(200000);
- f1(300000);
+ f1<high_resolution_clock>(1000);
+ f1<high_resolution_clock>(2000);
+ f1<high_resolution_clock>(3000);
   return 0;
 }

Modified: sandbox/chrono/libs/chrono/example/stopclock_example.cpp
==============================================================================
--- sandbox/chrono/libs/chrono/example/stopclock_example.cpp (original)
+++ sandbox/chrono/libs/chrono/example/stopclock_example.cpp 2010-08-17 16:28:39 EDT (Tue, 17 Aug 2010)
@@ -24,8 +24,8 @@
 {
   stopclock<> _(BOOST_CHRONO_TIME_FUNCTION_FORMAT);
 
- f1(100000);
- f1(200000);
- f1(300000);
+ f1(1000);
+ f1(2000);
+ f1(3000);
   return 0;
 }

Modified: sandbox/chrono/libs/chrono/test/Jamfile.v2
==============================================================================
--- sandbox/chrono/libs/chrono/test/Jamfile.v2 (original)
+++ sandbox/chrono/libs/chrono/test/Jamfile.v2 2010-08-17 16:28:39 EDT (Tue, 17 Aug 2010)
@@ -31,9 +31,10 @@
     ;
 
    test-suite "common_type"
- :
- [ run common_type_test.cpp ]
- ;
+ :
+ [ run common_type_test.cpp ]
+ [ compile-fail common_type_fails.cpp ]
+ ;
 
     test-suite "ratio"
         :

Added: sandbox/chrono/libs/chrono/test/common_type_fails.cpp
==============================================================================
--- (empty file)
+++ sandbox/chrono/libs/chrono/test/common_type_fails.cpp 2010-08-17 16:28:39 EDT (Tue, 17 Aug 2010)
@@ -0,0 +1,41 @@
+// common_type_test.cpp ----------------------------------------------------//
+
+// Copyright 2010 Beman Dawes
+
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+#define _CRT_SECURE_NO_WARNINGS // disable VC++ foolishness
+
+#define STD2
+#ifndef STD
+#include <boost/type_traits/common_type.hpp>
+#else
+#include <type_traits>
+#endif
+#include <iostream>
+
+
+#include <boost/test/minimal.hpp>
+
+struct C1 {
+ //~ private:
+ //~ C1();
+};
+
+struct C2 {};
+
+
+
+#ifndef STD
+typedef boost::common_type<C1, C2>::type AC;
+#else
+typedef std::common_type<C1, C2>::type AC;
+#endif
+//~ AC* ac;
+
+
+int test_main( int argc, char * argv[] )
+{
+ return 0;
+}
\ No newline at end of file

Modified: sandbox/chrono/libs/chrono/test/common_type_test.cpp
==============================================================================
--- sandbox/chrono/libs/chrono/test/common_type_test.cpp (original)
+++ sandbox/chrono/libs/chrono/test/common_type_test.cpp 2010-08-17 16:28:39 EDT (Tue, 17 Aug 2010)
@@ -16,6 +16,8 @@
     
 struct C2 {};
 
+
+struct C3 : C2 {};
 struct C1C2 {
     C1C2() {}
     C1C2(C1 const&) {}
@@ -47,11 +49,7 @@
 
 template <typename C, typename A, typename B>
 void assignation_3() {
-#if 0
-typedef typename boost::common_type<A, B, C>::type ABC; // DO not compile
-#else
 typedef typename boost::common_type<C, A, B>::type ABC;
-#endif
     A a;
     B b;
     C c;
@@ -66,10 +64,29 @@
     f3<C, A, B>(c);
 }
 
+C1C2 c1c2;
+C1 c1;
+
+int f(C1C2 ) { return 1;}
+int f(C1 ) { return 2;}
+template <typename OSTREAM>
+OSTREAM& operator<<(OSTREAM& os, C1 const&) {return os;}
+
+C1C2& declval_C1C2() {return c1c2;}
+C1& declval_C1(){return c1;}
+bool declval_bool(){return true;}
+
 int test_main( int argc, char * argv[] )
 {
- //~ assignation_2<C1, C2>(); // fails
     assignation_2<C1C2, C1>();
+ //~ typedef boost::common_type<C1C2&, C1&>::type T1; // fails if BOOST_COMMON_TYPE_DONT_USE_TYPEOF
+ std::cout << f(declval_bool()?declval_C1C2():declval_C1()) << std::endl;
+ typedef boost::common_type<C3*, C2*>::type T2;
+ typedef boost::common_type<int*, int const*>::type T3;
+ //~ typedef boost::common_type<int volatile*, int const*>::type T4; // fails if BOOST_COMMON_TYPE_DONT_USE_TYPEOF
+ typedef boost::common_type<int*, int volatile*>::type T5;
+ //~ typedef boost::common_type<short volatile*, int const*>::type T5; // fails
+
     assignation_2<C1, C1C2>();
     assignation_2<C1C2, C2>();
     assignation_2<C2, C1C2>();
@@ -77,6 +94,6 @@
     assignation_3<C1C2, C1, C2>();
     assignation_3<C2, C1C2, C1>();
     assignation_3<C1C2, C2, C1>();
- //~ assignation_3<C1, C2, C1C2>(); // fails
+ //~ assignation_3<C1, C2, C1C2>(); // fails because the common type is the third
     return 0;
 }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk