Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. // Copyright 2006, Google Inc.
  2. // All rights reserved.
  3. //
  4. // Redistribution and use in source and binary forms, with or without
  5. // modification, are permitted provided that the following conditions are
  6. // met:
  7. //
  8. //     * Redistributions of source code must retain the above copyright
  9. // notice, this list of conditions and the following disclaimer.
  10. //     * Redistributions in binary form must reproduce the above
  11. // copyright notice, this list of conditions and the following disclaimer
  12. // in the documentation and/or other materials provided with the
  13. // distribution.
  14. //     * Neither the name of Google Inc. nor the names of its
  15. // contributors may be used to endorse or promote products derived from
  16. // this software without specific prior written permission.
  17. //
  18. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  19. // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  20. // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  21. // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  22. // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  23. // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  24. // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  25. // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  26. // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27. // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  28. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29.  
  30. // This file is AUTOMATICALLY GENERATED on 09/24/2010 by command
  31. // 'gen_gtest_pred_impl.py 5'.  DO NOT EDIT BY HAND!
  32. //
  33. // Implements a family of generic predicate assertion macros.
  34.  
  35. #ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
  36. #define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
  37.  
  38. // Makes sure this header is not included before gtest.h.
  39. #ifndef GTEST_INCLUDE_GTEST_GTEST_H_
  40. # error Do not include gtest_pred_impl.h directly.  Include gtest.h instead.
  41. #endif  // GTEST_INCLUDE_GTEST_GTEST_H_
  42.  
  43. // This header implements a family of generic predicate assertion
  44. // macros:
  45. //
  46. //   ASSERT_PRED_FORMAT1(pred_format, v1)
  47. //   ASSERT_PRED_FORMAT2(pred_format, v1, v2)
  48. //   ...
  49. //
  50. // where pred_format is a function or functor that takes n (in the
  51. // case of ASSERT_PRED_FORMATn) values and their source expression
  52. // text, and returns a testing::AssertionResult.  See the definition
  53. // of ASSERT_EQ in gtest.h for an example.
  54. //
  55. // If you don't care about formatting, you can use the more
  56. // restrictive version:
  57. //
  58. //   ASSERT_PRED1(pred, v1)
  59. //   ASSERT_PRED2(pred, v1, v2)
  60. //   ...
  61. //
  62. // where pred is an n-ary function or functor that returns bool,
  63. // and the values v1, v2, ..., must support the << operator for
  64. // streaming to std::ostream.
  65. //
  66. // We also define the EXPECT_* variations.
  67. //
  68. // For now we only support predicates whose arity is at most 5.
  69. // Please email googletestframework@googlegroups.com if you need
  70. // support for higher arities.
  71.  
  72. // GTEST_ASSERT_ is the basic statement to which all of the assertions
  73. // in this file reduce.  Don't use this in your code.
  74.  
  75. #define GTEST_ASSERT_(expression, on_failure) \
  76.   GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
  77.   if (const ::testing::AssertionResult gtest_ar = (expression)) \
  78.     ; \
  79.   else \
  80.     on_failure(gtest_ar.failure_message())
  81.  
  82.  
  83. // Helper function for implementing {EXPECT|ASSERT}_PRED1.  Don't use
  84. // this in your code.
  85. template <typename Pred,
  86.           typename T1>
  87. AssertionResult AssertPred1Helper(const char* pred_text,
  88.                                   const char* e1,
  89.                                   Pred pred,
  90.                                   const T1& v1) {
  91.   if (pred(v1)) return AssertionSuccess();
  92.  
  93.   return AssertionFailure() << pred_text << "("
  94.                             << e1 << ") evaluates to false, where"
  95.                             << "\n" << e1 << " evaluates to " << v1;
  96. }
  97.  
  98. // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
  99. // Don't use this in your code.
  100. #define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
  101.   GTEST_ASSERT_(pred_format(#v1, v1),\
  102.                 on_failure)
  103.  
  104. // Internal macro for implementing {EXPECT|ASSERT}_PRED1.  Don't use
  105. // this in your code.
  106. #define GTEST_PRED1_(pred, v1, on_failure)\
  107.   GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
  108.                                              #v1, \
  109.                                              pred, \
  110.                                              v1), on_failure)
  111.  
  112. // Unary predicate assertion macros.
  113. #define EXPECT_PRED_FORMAT1(pred_format, v1) \
  114.   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
  115. #define EXPECT_PRED1(pred, v1) \
  116.   GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
  117. #define ASSERT_PRED_FORMAT1(pred_format, v1) \
  118.   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
  119. #define ASSERT_PRED1(pred, v1) \
  120.   GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
  121.  
  122.  
  123.  
  124. // Helper function for implementing {EXPECT|ASSERT}_PRED2.  Don't use
  125. // this in your code.
  126. template <typename Pred,
  127.           typename T1,
  128.           typename T2>
  129. AssertionResult AssertPred2Helper(const char* pred_text,
  130.                                   const char* e1,
  131.                                   const char* e2,
  132.                                   Pred pred,
  133.                                   const T1& v1,
  134.                                   const T2& v2) {
  135.   if (pred(v1, v2)) return AssertionSuccess();
  136.  
  137.   return AssertionFailure() << pred_text << "("
  138.                             << e1 << ", "
  139.                             << e2 << ") evaluates to false, where"
  140.                             << "\n" << e1 << " evaluates to " << v1
  141.                             << "\n" << e2 << " evaluates to " << v2;
  142. }
  143.  
  144. // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
  145. // Don't use this in your code.
  146. #define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
  147.   GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2),\
  148.                 on_failure)
  149.  
  150. // Internal macro for implementing {EXPECT|ASSERT}_PRED2.  Don't use
  151. // this in your code.
  152. #define GTEST_PRED2_(pred, v1, v2, on_failure)\
  153.   GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
  154.                                              #v1, \
  155.                                              #v2, \
  156.                                              pred, \
  157.                                              v1, \
  158.                                              v2), on_failure)
  159.  
  160. // Binary predicate assertion macros.
  161. #define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
  162.   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
  163. #define EXPECT_PRED2(pred, v1, v2) \
  164.   GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
  165. #define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
  166.   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
  167. #define ASSERT_PRED2(pred, v1, v2) \
  168.   GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
  169.  
  170.  
  171.  
  172. // Helper function for implementing {EXPECT|ASSERT}_PRED3.  Don't use
  173. // this in your code.
  174. template <typename Pred,
  175.           typename T1,
  176.           typename T2,
  177.           typename T3>
  178. AssertionResult AssertPred3Helper(const char* pred_text,
  179.                                   const char* e1,
  180.                                   const char* e2,
  181.                                   const char* e3,
  182.                                   Pred pred,
  183.                                   const T1& v1,
  184.                                   const T2& v2,
  185.                                   const T3& v3) {
  186.   if (pred(v1, v2, v3)) return AssertionSuccess();
  187.  
  188.   return AssertionFailure() << pred_text << "("
  189.                             << e1 << ", "
  190.                             << e2 << ", "
  191.                             << e3 << ") evaluates to false, where"
  192.                             << "\n" << e1 << " evaluates to " << v1
  193.                             << "\n" << e2 << " evaluates to " << v2
  194.                             << "\n" << e3 << " evaluates to " << v3;
  195. }
  196.  
  197. // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
  198. // Don't use this in your code.
  199. #define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
  200.   GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3),\
  201.                 on_failure)
  202.  
  203. // Internal macro for implementing {EXPECT|ASSERT}_PRED3.  Don't use
  204. // this in your code.
  205. #define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
  206.   GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
  207.                                              #v1, \
  208.                                              #v2, \
  209.                                              #v3, \
  210.                                              pred, \
  211.                                              v1, \
  212.                                              v2, \
  213.                                              v3), on_failure)
  214.  
  215. // Ternary predicate assertion macros.
  216. #define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
  217.   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
  218. #define EXPECT_PRED3(pred, v1, v2, v3) \
  219.   GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
  220. #define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
  221.   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
  222. #define ASSERT_PRED3(pred, v1, v2, v3) \
  223.   GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
  224.  
  225.  
  226.  
  227. // Helper function for implementing {EXPECT|ASSERT}_PRED4.  Don't use
  228. // this in your code.
  229. template <typename Pred,
  230.           typename T1,
  231.           typename T2,
  232.           typename T3,
  233.           typename T4>
  234. AssertionResult AssertPred4Helper(const char* pred_text,
  235.                                   const char* e1,
  236.                                   const char* e2,
  237.                                   const char* e3,
  238.                                   const char* e4,
  239.                                   Pred pred,
  240.                                   const T1& v1,
  241.                                   const T2& v2,
  242.                                   const T3& v3,
  243.                                   const T4& v4) {
  244.   if (pred(v1, v2, v3, v4)) return AssertionSuccess();
  245.  
  246.   return AssertionFailure() << pred_text << "("
  247.                             << e1 << ", "
  248.                             << e2 << ", "
  249.                             << e3 << ", "
  250.                             << e4 << ") evaluates to false, where"
  251.                             << "\n" << e1 << " evaluates to " << v1
  252.                             << "\n" << e2 << " evaluates to " << v2
  253.                             << "\n" << e3 << " evaluates to " << v3
  254.                             << "\n" << e4 << " evaluates to " << v4;
  255. }
  256.  
  257. // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
  258. // Don't use this in your code.
  259. #define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
  260.   GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4),\
  261.                 on_failure)
  262.  
  263. // Internal macro for implementing {EXPECT|ASSERT}_PRED4.  Don't use
  264. // this in your code.
  265. #define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
  266.   GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
  267.                                              #v1, \
  268.                                              #v2, \
  269.                                              #v3, \
  270.                                              #v4, \
  271.                                              pred, \
  272.                                              v1, \
  273.                                              v2, \
  274.                                              v3, \
  275.                                              v4), on_failure)
  276.  
  277. // 4-ary predicate assertion macros.
  278. #define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
  279.   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
  280. #define EXPECT_PRED4(pred, v1, v2, v3, v4) \
  281.   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
  282. #define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
  283.   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
  284. #define ASSERT_PRED4(pred, v1, v2, v3, v4) \
  285.   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
  286.  
  287.  
  288.  
  289. // Helper function for implementing {EXPECT|ASSERT}_PRED5.  Don't use
  290. // this in your code.
  291. template <typename Pred,
  292.           typename T1,
  293.           typename T2,
  294.           typename T3,
  295.           typename T4,
  296.           typename T5>
  297. AssertionResult AssertPred5Helper(const char* pred_text,
  298.                                   const char* e1,
  299.                                   const char* e2,
  300.                                   const char* e3,
  301.                                   const char* e4,
  302.                                   const char* e5,
  303.                                   Pred pred,
  304.                                   const T1& v1,
  305.                                   const T2& v2,
  306.                                   const T3& v3,
  307.                                   const T4& v4,
  308.                                   const T5& v5) {
  309.   if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
  310.  
  311.   return AssertionFailure() << pred_text << "("
  312.                             << e1 << ", "
  313.                             << e2 << ", "
  314.                             << e3 << ", "
  315.                             << e4 << ", "
  316.                             << e5 << ") evaluates to false, where"
  317.                             << "\n" << e1 << " evaluates to " << v1
  318.                             << "\n" << e2 << " evaluates to " << v2
  319.                             << "\n" << e3 << " evaluates to " << v3
  320.                             << "\n" << e4 << " evaluates to " << v4
  321.                             << "\n" << e5 << " evaluates to " << v5;
  322. }
  323.  
  324. // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
  325. // Don't use this in your code.
  326. #define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
  327.   GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5),\
  328.                 on_failure)
  329.  
  330. // Internal macro for implementing {EXPECT|ASSERT}_PRED5.  Don't use
  331. // this in your code.
  332. #define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
  333.   GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
  334.                                              #v1, \
  335.                                              #v2, \
  336.                                              #v3, \
  337.                                              #v4, \
  338.                                              #v5, \
  339.                                              pred, \
  340.                                              v1, \
  341.                                              v2, \
  342.                                              v3, \
  343.                                              v4, \
  344.                                              v5), on_failure)
  345.  
  346. // 5-ary predicate assertion macros.
  347. #define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
  348.   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
  349. #define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
  350.   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
  351. #define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
  352.   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
  353. #define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
  354.   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
  355.  
  356.  
  357.  
  358. #endif  // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
  359.