expect_test.cxx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //
  2. // expect.t.h
  3. // expect
  4. //
  5. // Created by Sam Jaffe on 1/10/17.
  6. //
  7. #include <gmock/gmock.h>
  8. #include "expect/expect.hpp"
  9. struct my_error : public std::logic_error {
  10. using std::logic_error::logic_error;
  11. };
  12. using ::testing::Eq;
  13. using ::testing::HasSubstr;
  14. using ::testing::StrEq;
  15. TEST(ExpectTest, ExpectTrueIsSafe) {
  16. int i = 1;
  17. EXPECT_NO_THROW(expects(i == 1));
  18. }
  19. TEST(ExpectTest, ExpectFalseThrows) {
  20. int i = 1;
  21. EXPECT_THROW(expects(i == 2), std::logic_error);
  22. }
  23. TEST(ExpectTest, CanProvideCustomErrorType) {
  24. int i = 1;
  25. EXPECT_THROW((expects(i == 2, my_error, "error")), my_error);
  26. }
  27. TEST(ExpectTest, FailsWithErrorMessageContainingExpr) {
  28. int i = 1;
  29. try {
  30. expects(i == 2);
  31. FAIL() << "expected exception";
  32. } catch (std::exception const & e) {
  33. EXPECT_THAT(e.what(), HasSubstr("i == 2"));
  34. }
  35. }
  36. TEST(ExpectTest, CanProvideCustomErrorMessage) {
  37. int i = 1;
  38. try {
  39. expects(i == 2, "example error message");
  40. FAIL() << "expected exception";
  41. } catch (std::exception const & e) {
  42. EXPECT_THAT(e.what(), StrEq("example error message"));
  43. }
  44. }
  45. TEST(ExpectGracefulTest, ReturnsEarly) {
  46. int i = 1;
  47. expects_graceful(i == 2);
  48. FAIL() << "expected return";
  49. }
  50. TEST(ExpectGracefulTest, ReturnValueCanBeControlled) {
  51. auto get_gracefully = [](bool no) {
  52. expects_graceful(no, 7);
  53. return 1;
  54. };
  55. EXPECT_THAT(get_gracefully(true), Eq(1));
  56. EXPECT_THAT(get_gracefully(false), Eq(7));
  57. }
  58. TEST(ReturnEnsureTest, ReturnsFirstExprIfPassesLambda) {
  59. int i = 6;
  60. EXPECT_THAT(return_ensures(i + 1, _ > 5), Eq(7));
  61. }
  62. TEST(ReturnEnsureTest, ThrowsWhenFailingLambda) {
  63. EXPECT_THROW(return_ensures(7, _ < 5), std::runtime_error);
  64. }
  65. TEST(ReturnEnsureTest, FailsWithErrorMessageContainingExprAndLambda) {
  66. try {
  67. int i = 6;
  68. (void) return_ensures(i + 1, _ < 5);
  69. FAIL() << "expected exception";
  70. } catch (std::exception const & e) {
  71. EXPECT_THAT(e.what(), HasSubstr("_ < 5"));
  72. EXPECT_THAT(e.what(), HasSubstr("i + 1"));
  73. }
  74. }
  75. TEST(ReturnEnsureTest, CanProvideCustomErrorMessage) {
  76. try {
  77. (void) return_ensures(7, _ < 5, "example error message");
  78. FAIL() << "expected exception";
  79. } catch (std::exception const & e) {
  80. EXPECT_THAT(e.what(), StrEq("example error message"));
  81. }
  82. }
  83. TEST(ReturnEnsureTest, CanProvideCustomErrorType) {
  84. EXPECT_THROW(return_ensures(7, _ < 5, my_error, "error"), my_error);
  85. }