blob: 30f54b8b8694a42e9a87595caa9413231521798f [file] [log] [blame]
#pragma once
#include <c10/util/Exception.h>
#include <gtest/gtest.h>
#include <stdexcept>
#include <string>
namespace torch {
namespace test {
#define ASSERT_THROWS_WITH(statement, substring) \
{ \
std::string assert_throws_with_error_message; \
try { \
(void)statement; \
FAIL() << "Expected statement `" #statement \
"` to throw an exception, but it did not"; \
} catch (const c10::Error& e) { \
assert_throws_with_error_message = e.what_without_backtrace(); \
} catch (const std::exception& e) { \
assert_throws_with_error_message = e.what(); \
} \
if (assert_throws_with_error_message.find(substring) == \
std::string::npos) { \
FAIL() << "Error message \"" << assert_throws_with_error_message \
<< "\" did not contain expected substring \"" << substring \
<< "\""; \
} \
}
} // namespace test
} // namespace torch