yaml-cpp

FORK: A YAML parser and emitter in C++
git clone https://git.neptards.moe/neptards/yaml-cpp.git
Log | Files | Refs | README | LICENSE

gtest_pred_impl.h (14850B)


      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 01/02/2019 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 // GOOGLETEST_CM0001 DO NOT DELETE
     35 
     36 #ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
     37 #define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
     38 
     39 #include "gtest/gtest.h"
     40 
     41 namespace testing {
     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()
     94          << pred_text << "(" << e1 << ") evaluates to false, where"
     95          << "\n"
     96          << e1 << " evaluates to " << ::testing::PrintToString(v1);
     97 }
     98 
     99 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
    100 // Don't use this in your code.
    101 #define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
    102   GTEST_ASSERT_(pred_format(#v1, v1), \
    103                 on_failure)
    104 
    105 // Internal macro for implementing {EXPECT|ASSERT}_PRED1.  Don't use
    106 // this in your code.
    107 #define GTEST_PRED1_(pred, v1, on_failure)\
    108   GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
    109                                              #v1, \
    110                                              pred, \
    111                                              v1), on_failure)
    112 
    113 // Unary predicate assertion macros.
    114 #define EXPECT_PRED_FORMAT1(pred_format, v1) \
    115   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
    116 #define EXPECT_PRED1(pred, v1) \
    117   GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
    118 #define ASSERT_PRED_FORMAT1(pred_format, v1) \
    119   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
    120 #define ASSERT_PRED1(pred, v1) \
    121   GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
    122 
    123 
    124 
    125 // Helper function for implementing {EXPECT|ASSERT}_PRED2.  Don't use
    126 // this in your code.
    127 template <typename Pred,
    128           typename T1,
    129           typename T2>
    130 AssertionResult AssertPred2Helper(const char* pred_text,
    131                                   const char* e1,
    132                                   const char* e2,
    133                                   Pred pred,
    134                                   const T1& v1,
    135                                   const T2& v2) {
    136   if (pred(v1, v2)) return AssertionSuccess();
    137 
    138   return AssertionFailure()
    139          << pred_text << "(" << e1 << ", " << e2
    140          << ") evaluates to false, where"
    141          << "\n"
    142          << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
    143          << e2 << " evaluates to " << ::testing::PrintToString(v2);
    144 }
    145 
    146 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
    147 // Don't use this in your code.
    148 #define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
    149   GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
    150                 on_failure)
    151 
    152 // Internal macro for implementing {EXPECT|ASSERT}_PRED2.  Don't use
    153 // this in your code.
    154 #define GTEST_PRED2_(pred, v1, v2, on_failure)\
    155   GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
    156                                              #v1, \
    157                                              #v2, \
    158                                              pred, \
    159                                              v1, \
    160                                              v2), on_failure)
    161 
    162 // Binary predicate assertion macros.
    163 #define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
    164   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
    165 #define EXPECT_PRED2(pred, v1, v2) \
    166   GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
    167 #define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
    168   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
    169 #define ASSERT_PRED2(pred, v1, v2) \
    170   GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
    171 
    172 
    173 
    174 // Helper function for implementing {EXPECT|ASSERT}_PRED3.  Don't use
    175 // this in your code.
    176 template <typename Pred,
    177           typename T1,
    178           typename T2,
    179           typename T3>
    180 AssertionResult AssertPred3Helper(const char* pred_text,
    181                                   const char* e1,
    182                                   const char* e2,
    183                                   const char* e3,
    184                                   Pred pred,
    185                                   const T1& v1,
    186                                   const T2& v2,
    187                                   const T3& v3) {
    188   if (pred(v1, v2, v3)) return AssertionSuccess();
    189 
    190   return AssertionFailure()
    191          << pred_text << "(" << e1 << ", " << e2 << ", " << e3
    192          << ") evaluates to false, where"
    193          << "\n"
    194          << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
    195          << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
    196          << e3 << " evaluates to " << ::testing::PrintToString(v3);
    197 }
    198 
    199 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
    200 // Don't use this in your code.
    201 #define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
    202   GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
    203                 on_failure)
    204 
    205 // Internal macro for implementing {EXPECT|ASSERT}_PRED3.  Don't use
    206 // this in your code.
    207 #define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
    208   GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
    209                                              #v1, \
    210                                              #v2, \
    211                                              #v3, \
    212                                              pred, \
    213                                              v1, \
    214                                              v2, \
    215                                              v3), on_failure)
    216 
    217 // Ternary predicate assertion macros.
    218 #define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
    219   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
    220 #define EXPECT_PRED3(pred, v1, v2, v3) \
    221   GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
    222 #define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
    223   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
    224 #define ASSERT_PRED3(pred, v1, v2, v3) \
    225   GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
    226 
    227 
    228 
    229 // Helper function for implementing {EXPECT|ASSERT}_PRED4.  Don't use
    230 // this in your code.
    231 template <typename Pred,
    232           typename T1,
    233           typename T2,
    234           typename T3,
    235           typename T4>
    236 AssertionResult AssertPred4Helper(const char* pred_text,
    237                                   const char* e1,
    238                                   const char* e2,
    239                                   const char* e3,
    240                                   const char* e4,
    241                                   Pred pred,
    242                                   const T1& v1,
    243                                   const T2& v2,
    244                                   const T3& v3,
    245                                   const T4& v4) {
    246   if (pred(v1, v2, v3, v4)) return AssertionSuccess();
    247 
    248   return AssertionFailure()
    249          << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
    250          << ") evaluates to false, where"
    251          << "\n"
    252          << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
    253          << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
    254          << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
    255          << e4 << " evaluates to " << ::testing::PrintToString(v4);
    256 }
    257 
    258 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
    259 // Don't use this in your code.
    260 #define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
    261   GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
    262                 on_failure)
    263 
    264 // Internal macro for implementing {EXPECT|ASSERT}_PRED4.  Don't use
    265 // this in your code.
    266 #define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
    267   GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
    268                                              #v1, \
    269                                              #v2, \
    270                                              #v3, \
    271                                              #v4, \
    272                                              pred, \
    273                                              v1, \
    274                                              v2, \
    275                                              v3, \
    276                                              v4), on_failure)
    277 
    278 // 4-ary predicate assertion macros.
    279 #define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
    280   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
    281 #define EXPECT_PRED4(pred, v1, v2, v3, v4) \
    282   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
    283 #define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
    284   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
    285 #define ASSERT_PRED4(pred, v1, v2, v3, v4) \
    286   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
    287 
    288 
    289 
    290 // Helper function for implementing {EXPECT|ASSERT}_PRED5.  Don't use
    291 // this in your code.
    292 template <typename Pred,
    293           typename T1,
    294           typename T2,
    295           typename T3,
    296           typename T4,
    297           typename T5>
    298 AssertionResult AssertPred5Helper(const char* pred_text,
    299                                   const char* e1,
    300                                   const char* e2,
    301                                   const char* e3,
    302                                   const char* e4,
    303                                   const char* e5,
    304                                   Pred pred,
    305                                   const T1& v1,
    306                                   const T2& v2,
    307                                   const T3& v3,
    308                                   const T4& v4,
    309                                   const T5& v5) {
    310   if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
    311 
    312   return AssertionFailure()
    313          << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
    314          << ", " << e5 << ") evaluates to false, where"
    315          << "\n"
    316          << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
    317          << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
    318          << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
    319          << e4 << " evaluates to " << ::testing::PrintToString(v4) << "\n"
    320          << e5 << " evaluates to " << ::testing::PrintToString(v5);
    321 }
    322 
    323 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
    324 // Don't use this in your code.
    325 #define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
    326   GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
    327                 on_failure)
    328 
    329 // Internal macro for implementing {EXPECT|ASSERT}_PRED5.  Don't use
    330 // this in your code.
    331 #define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
    332   GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
    333                                              #v1, \
    334                                              #v2, \
    335                                              #v3, \
    336                                              #v4, \
    337                                              #v5, \
    338                                              pred, \
    339                                              v1, \
    340                                              v2, \
    341                                              v3, \
    342                                              v4, \
    343                                              v5), on_failure)
    344 
    345 // 5-ary predicate assertion macros.
    346 #define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
    347   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
    348 #define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
    349   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
    350 #define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
    351   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
    352 #define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
    353   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
    354 
    355 
    356 
    357 }  // namespace testing
    358 
    359 #endif  // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_