Home | History | Annotate | Download | only in testing
      1 // Copyright 2014 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef V8_TESTING_GTEST_SUPPORT_H_
      6 #define V8_TESTING_GTEST_SUPPORT_H_
      7 
      8 #include "testing/gtest/include/gtest/gtest.h"
      9 
     10 namespace testing {
     11 namespace internal {
     12 
     13 #define GET_TYPE_NAME(type)                \
     14   template <>                              \
     15   inline std::string GetTypeName<type>() { \
     16     return #type;                          \
     17   }
     18 GET_TYPE_NAME(bool)
     19 GET_TYPE_NAME(signed char)
     20 GET_TYPE_NAME(unsigned char)
     21 GET_TYPE_NAME(short)
     22 GET_TYPE_NAME(unsigned short)
     23 GET_TYPE_NAME(int)
     24 GET_TYPE_NAME(unsigned int)
     25 GET_TYPE_NAME(long)
     26 GET_TYPE_NAME(unsigned long)
     27 GET_TYPE_NAME(long long)
     28 GET_TYPE_NAME(unsigned long long)
     29 GET_TYPE_NAME(float)
     30 GET_TYPE_NAME(double)
     31 #undef GET_TYPE_NAME
     32 
     33 
     34 // TRACED_FOREACH(type, var, container) expands to a loop that assigns |var|
     35 // every item in the |container| and adds a SCOPED_TRACE() message for the
     36 // |var| while inside the loop body.
     37 #define TRACED_FOREACH(_type, _var, _container)                          \
     38   for (_type const _var : _container)                                    \
     39     for (bool _done = false; !_done;)                                    \
     40       for (SCOPED_TRACE(::testing::Message() << #_var << " = " << _var); \
     41            !_done; _done = true)
     42 
     43 
     44 // TRACED_FORRANGE(type, var, low, high) expands to a loop that assigns |var|
     45 // every value in the range |low| to (including) |high| and adds a
     46 // SCOPED_TRACE() message for the |var| while inside the loop body.
     47 // TODO(bmeurer): Migrate to C++11 once we're ready.
     48 #define TRACED_FORRANGE(_type, _var, _low, _high)                          \
     49   for (_type _i = _low; _i <= _high; ++_i)                                 \
     50     for (bool _done = false; !_done;)                                      \
     51       for (_type const _var = _i; !_done;)                                 \
     52         for (SCOPED_TRACE(::testing::Message() << #_var << " = " << _var); \
     53              !_done; _done = true)
     54 
     55 }  // namespace internal
     56 }  // namespace testing
     57 
     58 #endif  // V8_TESTING_GTEST_SUPPORT_H_
     59