diff options
author | tkhanipov <tkhanipov@yandex-team.ru> | 2022-02-10 16:49:46 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:46 +0300 |
commit | 60a6df6d382906cd4ca6cd885920b3c20820170e (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/testing/unittest | |
parent | 60c0dade397b9b2f9a22f5daa5b2ea5e433e6e40 (diff) | |
download | ydb-60a6df6d382906cd4ca6cd885920b3c20820170e.tar.gz |
Restoring authorship annotation for <tkhanipov@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/testing/unittest')
-rw-r--r-- | library/cpp/testing/unittest/registar.h | 112 | ||||
-rw-r--r-- | library/cpp/testing/unittest/registar_ut.cpp | 34 |
2 files changed, 73 insertions, 73 deletions
diff --git a/library/cpp/testing/unittest/registar.h b/library/cpp/testing/unittest/registar.h index 743c3ff091..44517a0092 100644 --- a/library/cpp/testing/unittest/registar.h +++ b/library/cpp/testing/unittest/registar.h @@ -563,68 +563,68 @@ public: \ #define UNIT_CHECK_GENERATED_NO_EXCEPTION(A, E) UNIT_CHECK_GENERATED_NO_EXCEPTION_C(A, E, "and exception message is:\n" << CurrentExceptionMessage()) -// Same as UNIT_ASSERT_EXCEPTION_SATISFIES but prints additional string C when nothing was thrown -#define UNIT_ASSERT_EXCEPTION_SATISFIES_C(A, E, pred, C) \ - do { \ - bool _thrown = false; \ - try { \ - (void)(A); \ - } catch (const ::NUnitTest::TAssertException&) { \ - throw; \ - } catch (const E& e) { \ - _thrown = true; \ - UNIT_ASSERT_C(pred(e), "Exception does not satisfy predicate '" \ - << #pred << "'"); \ - } catch (...) { \ - _thrown = true; \ - UNIT_FAIL_IMPL("exception assertion failed", \ - #A << " did not throw " << #E \ - << ", but threw other exception " \ - << "with message:\n" \ - << CurrentExceptionMessage()); \ - } \ - if (!_thrown) { \ - UNIT_FAIL_IMPL("exception assertion failed", \ - #A << " did not throw any exception" \ - << " (expected " << #E << ") " << C); \ - } \ +// Same as UNIT_ASSERT_EXCEPTION_SATISFIES but prints additional string C when nothing was thrown +#define UNIT_ASSERT_EXCEPTION_SATISFIES_C(A, E, pred, C) \ + do { \ + bool _thrown = false; \ + try { \ + (void)(A); \ + } catch (const ::NUnitTest::TAssertException&) { \ + throw; \ + } catch (const E& e) { \ + _thrown = true; \ + UNIT_ASSERT_C(pred(e), "Exception does not satisfy predicate '" \ + << #pred << "'"); \ + } catch (...) { \ + _thrown = true; \ + UNIT_FAIL_IMPL("exception assertion failed", \ + #A << " did not throw " << #E \ + << ", but threw other exception " \ + << "with message:\n" \ + << CurrentExceptionMessage()); \ + } \ + if (!_thrown) { \ + UNIT_FAIL_IMPL("exception assertion failed", \ + #A << " did not throw any exception" \ + << " (expected " << #E << ") " << C); \ + } \ } while (false) -// Assert that a specific exception is thrown and satisfies predicate pred(e), where e is the exception instance. -// Example: -// UNIT_ASSERT_EXCEPTION_SATISFIES(MakeRequest(invalidData), TError, -// [](const TError& e){ return e.Status == HTTP_BAD_REQUEST; }) -// This code validates that MakeRequest with invalidData throws TError with code 400. -#define UNIT_ASSERT_EXCEPTION_SATISFIES(A, E, pred) \ - UNIT_ASSERT_EXCEPTION_SATISFIES_C(A, E, pred, "") - -// Same as UNIT_ASSERT_EXCEPTION_CONTAINS but prints additional string C when nothing was thrown -#define UNIT_ASSERT_EXCEPTION_CONTAINS_C(A, E, substr, C) \ - do { \ - const TString _substr{substr}; \ - UNIT_ASSERT_EXCEPTION_SATISFIES_C(A, E, \ - [&_substr](const E&){ \ - if (!_substr.empty()) { \ - UNIT_ASSERT_C(CurrentExceptionMessage() \ - .Contains(_substr), \ - "Exception message does not contain \"" \ - << _substr << "\".\n" \ - << "Exception message: " \ - << CurrentExceptionMessage()); \ - } \ - return true; \ - }, \ - C); \ - } while (false) - -// Assert that a specific exception is thrown and CurrentExceptionMessage() contains substr +// Assert that a specific exception is thrown and satisfies predicate pred(e), where e is the exception instance. +// Example: +// UNIT_ASSERT_EXCEPTION_SATISFIES(MakeRequest(invalidData), TError, +// [](const TError& e){ return e.Status == HTTP_BAD_REQUEST; }) +// This code validates that MakeRequest with invalidData throws TError with code 400. +#define UNIT_ASSERT_EXCEPTION_SATISFIES(A, E, pred) \ + UNIT_ASSERT_EXCEPTION_SATISFIES_C(A, E, pred, "") + +// Same as UNIT_ASSERT_EXCEPTION_CONTAINS but prints additional string C when nothing was thrown +#define UNIT_ASSERT_EXCEPTION_CONTAINS_C(A, E, substr, C) \ + do { \ + const TString _substr{substr}; \ + UNIT_ASSERT_EXCEPTION_SATISFIES_C(A, E, \ + [&_substr](const E&){ \ + if (!_substr.empty()) { \ + UNIT_ASSERT_C(CurrentExceptionMessage() \ + .Contains(_substr), \ + "Exception message does not contain \"" \ + << _substr << "\".\n" \ + << "Exception message: " \ + << CurrentExceptionMessage()); \ + } \ + return true; \ + }, \ + C); \ + } while (false) + +// Assert that a specific exception is thrown and CurrentExceptionMessage() contains substr #define UNIT_ASSERT_EXCEPTION_CONTAINS(A, E, substr) \ UNIT_ASSERT_EXCEPTION_CONTAINS_C(A, E, substr, "") -// Same as UNIT_ASSERT_EXCEPTION but prints additional string C when nothing was thrown -#define UNIT_ASSERT_EXCEPTION_C(A, E, C) UNIT_ASSERT_EXCEPTION_SATISFIES_C(A, E, [](const E&){ return true; }, C) +// Same as UNIT_ASSERT_EXCEPTION but prints additional string C when nothing was thrown +#define UNIT_ASSERT_EXCEPTION_C(A, E, C) UNIT_ASSERT_EXCEPTION_SATISFIES_C(A, E, [](const E&){ return true; }, C) -// Assert that a specific exception is thrown +// Assert that a specific exception is thrown #define UNIT_ASSERT_EXCEPTION(A, E) UNIT_ASSERT_EXCEPTION_C(A, E, "") #define UNIT_ASSERT_NO_EXCEPTION_RESULT_C(A, C) \ diff --git a/library/cpp/testing/unittest/registar_ut.cpp b/library/cpp/testing/unittest/registar_ut.cpp index 81827e7571..1f36d53abb 100644 --- a/library/cpp/testing/unittest/registar_ut.cpp +++ b/library/cpp/testing/unittest/registar_ut.cpp @@ -301,15 +301,15 @@ Y_UNIT_TEST_SUITE(TUnitTestMacroTest) { UNIT_ASSERT_EXCEPTION_CONTAINS(Throw(), TExpectedException, substr); } - template <class TExpectedException, class P> - void AssertExceptionSatisfies(const P& predicate) { - UNIT_ASSERT_EXCEPTION_SATISFIES(Throw(), TExpectedException, predicate); - } - - int GetValue() const { - return 5; // just some value for predicate testing - } - + template <class TExpectedException, class P> + void AssertExceptionSatisfies(const P& predicate) { + UNIT_ASSERT_EXCEPTION_SATISFIES(Throw(), TExpectedException, predicate); + } + + int GetValue() const { + return 5; // just some value for predicate testing + } + bool ThrowMe; }; @@ -362,12 +362,12 @@ Y_UNIT_TEST_SUITE(TUnitTestMacroTest) { UNIT_ASSERT_EXCEPTION_CONTAINS(TTestException("abc").Throw(), TTestException, "a"); } - - Y_UNIT_TEST(ExceptionSatisfies) { - const auto goodPredicate = [](const TTestException& e) { return e.GetValue() == 5; }; - const auto badPredicate = [](const TTestException& e) { return e.GetValue() != 5; }; - UNIT_ASSERT_NO_EXCEPTION(TTestException().AssertExceptionSatisfies<TTestException>(goodPredicate)); - UNIT_ASSERT_TEST_FAILS(TTestException().AssertExceptionSatisfies<TTestException>(badPredicate)); - UNIT_ASSERT_TEST_FAILS(TTestException().AssertExceptionSatisfies<TOtherTestException>(goodPredicate)); - } + + Y_UNIT_TEST(ExceptionSatisfies) { + const auto goodPredicate = [](const TTestException& e) { return e.GetValue() == 5; }; + const auto badPredicate = [](const TTestException& e) { return e.GetValue() != 5; }; + UNIT_ASSERT_NO_EXCEPTION(TTestException().AssertExceptionSatisfies<TTestException>(goodPredicate)); + UNIT_ASSERT_TEST_FAILS(TTestException().AssertExceptionSatisfies<TTestException>(badPredicate)); + UNIT_ASSERT_TEST_FAILS(TTestException().AssertExceptionSatisfies<TOtherTestException>(goodPredicate)); + } } |