{ std::string internalTestMessage; try { \
x; internalTestMessage = std::string (
"expected statement ") + #
x " to throw, but it didn't"; \
} catch (std::exception& e) { \
internalTestMessage = std::string (
"expected statement ") + #
x " to throw message matching " + (regex) +
", but actual message didn't match: " + e.what(); \
} } catch (...) { \
internalTestMessage = std::string (
"statement ") + #
x " threw an exception that didn't derive from std::exception"; } \
if (!internalTestMessage.empty()) \
ADD_FAILURE() << internalTestMessage; \
else SUCCEED(); }
94#define EXPECT_THROW_REGEX(x,regex) \
95 { std::string internalTestMessage; try { \
96 x; internalTestMessage = std::string ("expected statement ") + #x " to throw, but it didn't"; \
97 } catch (std::exception& e) { \
98 if (!::asg::detail::matchesRegex ((regex), e.what())) { \
99 internalTestMessage = std::string ("expected statement ") + #x " to throw message matching " + (regex) + ", but actual message didn't match: " + e.what(); \
100 } } catch (...) { \
101 internalTestMessage = std::string ("statement ") + #x " threw an exception that didn't derive from std::exception"; } \
102 if (!internalTestMessage.empty()) \
103 ADD_FAILURE() << internalTestMessage; \
104 else SUCCEED(); }