#pragma once #include #include #include #include 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