Quick Links: |
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__ |
#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 | ) |
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 | ) |
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 | ||||
) |
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 | ||||
) |
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 | ||||
) |
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 | ||||
) |
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 | ||||
) |
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 | ||||
) |
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 | ( | ... | ) |
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 | ( | ... | ) |
BSLMT_TESTUTIL_LOOPN_ASSERT( \ BSLMT_TESTUTIL_NUM_ARGS(__VA_ARGS__), __VA_ARGS__)
#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__ |