Turi Create  4.0
test_macros.hpp
1 /* Copyright © 2017 Apple Inc. All rights reserved.
2  *
3  * Use of this source code is governed by a BSD-3-clause license that can
4  * be found in the LICENSE.txt file or at https://opensource.org/licenses/BSD-3-Clause
5  */
6 #ifndef TEST_MACROS_HPP
7 #define TEST_MACROS_HPP
8 
9 #include <mutex>
10 
11 static std::recursive_mutex __b_lock__;
12 #define _TS_ADD_LOCK_GUARD std::lock_guard<std::recursive_mutex> __guard_b__(__b_lock__)
13 
14 #define TS_ASSERT(x) do { _TS_ADD_LOCK_GUARD; BOOST_CHECK(x); } while(0)
15 #define TS_ASSERT_EQUALS(x,y) do { _TS_ADD_LOCK_GUARD; BOOST_TEST((x) == (y)); } while(0)
16 #define TS_ASSERT_DIFFERS(x,y) do { _TS_ADD_LOCK_GUARD; BOOST_TEST((x) != (y)); } while(0)
17 #define TS_ASSERT_LESS_THAN_EQUALS(x,y) do { _TS_ADD_LOCK_GUARD; BOOST_TEST((x) <= (y)); } while(0)
18 #define TS_ASSERT_LESS_THAN(x,y) do { _TS_ADD_LOCK_GUARD; BOOST_TEST((x) < (y)); } while(0)
19 #define TS_ASSERT_DELTA(x,y,e) do { _TS_ADD_LOCK_GUARD; BOOST_TEST(static_cast<double>(x) == static_cast<double>(y), boost::test_tools::tolerance(static_cast<double>(e))); } while(0)
20 #define TS_ASSERT_THROWS_NOTHING(expr) do { _TS_ADD_LOCK_GUARD; BOOST_CHECK_NO_THROW(expr); } while(0)
21 #define TS_ASSERT_THROWS_ANYTHING(expr) \
22 do { \
23  _TS_ADD_LOCK_GUARD; \
24  bool threw=false; \
25  try { \
26  expr; \
27  } catch (...) {\
28  threw=true;\
29  } \
30  BOOST_TEST(threw==true);\
31 } while(0)
32 #define TS_ASSERT_THROWS(expr,type) do { _TS_ADD_LOCK_GUARD; BOOST_CHECK_THROW(expr,type); } while(0)
33 #define TS_FAIL(msg) do { _TS_ADD_LOCK_GUARD; BOOST_FAIL(msg); } while(0)
34 #define TS_WARN(msg) do { _TS_ADD_LOCK_GUARD; BOOST_TEST_MESSAGE(msg); } while(0)
35 #define TS_ASSERT_SAME_DATA(x,y,size) do { _TS_ADD_LOCK_GUARD; BOOST_CHECK_EQUAL_COLLECTIONS(x, x+size, y, y+size); } while(0)
36 
37 #endif