Quick Links:

bal | bbl | bdl | bsl

Classes | Namespaces | Defines

bslmt_testutil.h File Reference

Provide thread-safe test utilities for multithreaded components. More...

Go to the source code of this file.

Classes

struct  bslmt::TestUtil
class  bslmt::TestUtil_Guard

Namespaces

namespace  bslmt

Defines

#define BSLMT_TESTUTIL_GUARD_NAME_IMPL   bloomberglp_bslmt_tEsTuTiL_GuArD_ ## __LINE__
#define BSLMT_TESTUTIL_GUARD   BloombergLP::bslmt::TestUtil_Guard BSLMT_TESTUTIL_GUARD_NAME_IMPL
#define BSLMT_TESTUTIL_OUTPUT_GUARD   BSLMT_TESTUTIL_GUARD
#define BSLMT_TESTUTIL_NESTED_OUTPUT_GUARD   BSLMT_TESTUTIL_GUARD
#define BSLMT_TESTUTIL_GUARDED_STREAM(STREAM)
#define BSLMT_TESTUTIL_COUT   BSLMT_TESTUTIL_GUARDED_STREAM(bsl::cout)
#define BSLMT_TESTUTIL_CERR   BSLMT_TESTUTIL_GUARDED_STREAM(bsl::cerr)
#define BSLMT_TESTUTIL_LOOP0_ASSERT(X)
#define BSLMT_TESTUTIL_ASSERT(X)   BSLMT_TESTUTIL_LOOP0_ASSERT(X)
#define BSLMT_TESTUTIL_LOOP1_ASSERT(I, X)
#define BSLMT_TESTUTIL_LOOP_ASSERT(X)   BSLMT_TESTUTIL_LOOP1_ASSERT(X)
#define BSLMT_TESTUTIL_LOOP2_ASSERT(I, J, X)
#define BSLMT_TESTUTIL_LOOP3_ASSERT(I, J, K, X)
#define BSLMT_TESTUTIL_LOOP4_ASSERT(I, J, K, L, X)
#define BSLMT_TESTUTIL_LOOP5_ASSERT(I, J, K, L, M, X)
#define BSLMT_TESTUTIL_LOOP6_ASSERT(I, J, K, L, M, N, X)
#define BSLMT_TESTUTIL_EXPAND(X)   X
#define BSLMT_TESTUTIL_NUM_ARGS_IMPL(X6, X5, X4, X3, X2, X1, X0, N,...)   N
#define BSLMT_TESTUTIL_NUM_ARGS(...)
#define BSLMT_TESTUTIL_LOOPN_ASSERT_IMPL(N,...)   BSLMT_TESTUTIL_EXPAND(BSLMT_TESTUTIL_LOOP ## N ## _ASSERT(__VA_ARGS__))
#define BSLMT_TESTUTIL_LOOPN_ASSERT(N,...)   BSLMT_TESTUTIL_LOOPN_ASSERT_IMPL(N, __VA_ARGS__)
#define BSLMT_TESTUTIL_ASSERTV(...)
#define BSLMT_TESTUTIL_Q(X)   BSLMT_TESTUTIL_COUT << "<| " #X " |>" << bsl::endl
#define BSLMT_TESTUTIL_P(X)   BSLMT_TESTUTIL_COUT << #X " = " << (X) << bsl::endl
#define BSLMT_TESTUTIL_P_(X)   BSLMT_TESTUTIL_COUT << #X " = " << (X) << ", " << bsl::flush
#define BSLMT_TESTUTIL_T_   BSLMT_TESTUTIL_COUT << "\t" << bsl::flush;
#define BSLMT_TESTUTIL_L_   __LINE__

Detailed Description


Define Documentation

#define BSLMT_TESTUTIL_GUARD_NAME_IMPL   bloomberglp_bslmt_tEsTuTiL_GuArD_ ## __LINE__
#define BSLMT_TESTUTIL_GUARD   BloombergLP::bslmt::TestUtil_Guard BSLMT_TESTUTIL_GUARD_NAME_IMPL
#define BSLMT_TESTUTIL_OUTPUT_GUARD   BSLMT_TESTUTIL_GUARD
#define BSLMT_TESTUTIL_NESTED_OUTPUT_GUARD   BSLMT_TESTUTIL_GUARD
#define BSLMT_TESTUTIL_GUARDED_STREAM (   STREAM  ) 
Value:
for (BSLMT_TESTUTIL_GUARD; BSLMT_TESTUTIL_GUARD_NAME_IMPL;                \
                               BSLMT_TESTUTIL_GUARD_NAME_IMPL = false)        \
        (STREAM)
#define BSLMT_TESTUTIL_COUT   BSLMT_TESTUTIL_GUARDED_STREAM(bsl::cout)
#define BSLMT_TESTUTIL_CERR   BSLMT_TESTUTIL_GUARDED_STREAM(bsl::cerr)
#define BSLMT_TESTUTIL_LOOP0_ASSERT (   X  ) 
Value:
if (X) ; else do { BSLMT_TESTUTIL_GUARD;                                  \
                       aSsErT(1, #X, __LINE__); } while (false)
#define BSLMT_TESTUTIL_ASSERT (   X  )     BSLMT_TESTUTIL_LOOP0_ASSERT(X)
#define BSLMT_TESTUTIL_LOOP1_ASSERT (   I,
  X 
)
Value:
if (X) ; else do { BSLMT_TESTUTIL_GUARD;                                  \
                       bsl::cout << #I << ": " << (I) << "\n";                \
                       aSsErT(1, #X, __LINE__); } while (false)
#define BSLMT_TESTUTIL_LOOP_ASSERT (   X  )     BSLMT_TESTUTIL_LOOP1_ASSERT(X)
#define BSLMT_TESTUTIL_LOOP2_ASSERT (   I,
  J,
  X 
)
Value:
if (X) ; else do { BSLMT_TESTUTIL_GUARD;                                  \
                       bsl::cout << #I << ": " << (I) << "\t"                 \
                                 << #J << ": " << (J) << "\n";                \
                       aSsErT(1, #X, __LINE__); } while (false)
#define BSLMT_TESTUTIL_LOOP3_ASSERT (   I,
  J,
  K,
  X 
)
Value:
if (X) ; else do { BSLMT_TESTUTIL_GUARD;                                  \
                       bsl::cout << #I << ": " << (I) << "\t"                 \
                                 << #J << ": " << (J) << "\t"                 \
                                 << #K << ": " << (K) << "\n";                \
                       aSsErT(1, #X, __LINE__); } while (false)
#define BSLMT_TESTUTIL_LOOP4_ASSERT (   I,
  J,
  K,
  L,
  X 
)
Value:
if (X) ; else do { BSLMT_TESTUTIL_GUARD;                                  \
                       bsl::cout << #I << ": " << (I) << "\t"                 \
                                 << #J << ": " << (J) << "\t"                 \
                                 << #K << ": " << (K) << "\t"                 \
                                 << #L << ": " << (L) << "\n";                \
                       aSsErT(1, #X, __LINE__); } while (false)
#define BSLMT_TESTUTIL_LOOP5_ASSERT (   I,
  J,
  K,
  L,
  M,
  X 
)
Value:
if (X) ; else do { BSLMT_TESTUTIL_GUARD;                                  \
                       bsl::cout << #I << ": " << (I) << "\t"                 \
                                 << #J << ": " << (J) << "\t"                 \
                                 << #K << ": " << (K) << "\t"                 \
                                 << #L << ": " << (L) << "\t"                 \
                                 << #M << ": " << (M) << "\n";                \
                       aSsErT(1, #X, __LINE__); } while (false)
#define BSLMT_TESTUTIL_LOOP6_ASSERT (   I,
  J,
  K,
  L,
  M,
  N,
  X 
)
Value:
if (X) ; else do { BSLMT_TESTUTIL_GUARD;                                  \
                       bsl::cout << #I << ": " << (I) << "\t"                 \
                                 << #J << ": " << (J) << "\t"                 \
                                 << #K << ": " << (K) << "\t"                 \
                                 << #L << ": " << (L) << "\t"                 \
                                 << #M << ": " << (M) << "\t"                 \
                                 << #N << ": " << (N) << "\n";                \
                       aSsErT(1, #X, __LINE__); } while (false)
#define BSLMT_TESTUTIL_EXPAND (   X  )     X
#define BSLMT_TESTUTIL_NUM_ARGS_IMPL (   X6,
  X5,
  X4,
  X3,
  X2,
  X1,
  X0,
  N,
  ... 
)    N
#define BSLMT_TESTUTIL_NUM_ARGS (   ...  ) 
Value:
BSLMT_TESTUTIL_EXPAND(BSLMT_TESTUTIL_NUM_ARGS_IMPL(                       \
                                         __VA_ARGS__, 6, 5, 4, 3, 2, 1, 0, ""))
#define BSLMT_TESTUTIL_LOOPN_ASSERT_IMPL (   N,
  ... 
)    BSLMT_TESTUTIL_EXPAND(BSLMT_TESTUTIL_LOOP ## N ## _ASSERT(__VA_ARGS__))
#define BSLMT_TESTUTIL_LOOPN_ASSERT (   N,
  ... 
)    BSLMT_TESTUTIL_LOOPN_ASSERT_IMPL(N, __VA_ARGS__)
#define BSLMT_TESTUTIL_ASSERTV (   ...  ) 
Value:
#define BSLMT_TESTUTIL_Q (   X  )     BSLMT_TESTUTIL_COUT << "<| " #X " |>" << bsl::endl
#define BSLMT_TESTUTIL_P (   X  )     BSLMT_TESTUTIL_COUT << #X " = " << (X) << bsl::endl
#define BSLMT_TESTUTIL_P_ (   X  )     BSLMT_TESTUTIL_COUT << #X " = " << (X) << ", " << bsl::flush
#define BSLMT_TESTUTIL_T_   BSLMT_TESTUTIL_COUT << "\t" << bsl::flush;
#define BSLMT_TESTUTIL_L_   __LINE__