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 "include/v8stdint.h"
      9 #include "testing/gtest/include/gtest/gtest.h"
     10 
     11 namespace testing {
     12 namespace internal {
     13 
     14 #define GET_TYPE_NAME(type)                \
     15   template <>                              \
     16   inline std::string GetTypeName<type>() { \
     17     return #type;                          \
     18   }
     19 GET_TYPE_NAME(int8_t)
     20 GET_TYPE_NAME(uint8_t)
     21 GET_TYPE_NAME(int16_t)
     22 GET_TYPE_NAME(uint16_t)
     23 GET_TYPE_NAME(int32_t)
     24 GET_TYPE_NAME(uint32_t)
     25 GET_TYPE_NAME(int64_t)
     26 GET_TYPE_NAME(uint64_t)
     27 GET_TYPE_NAME(float)
     28 GET_TYPE_NAME(double)
     29 #undef GET_TYPE_NAME
     30 
     31 
     32 // TRACED_FOREACH(type, var, array) expands to a loop that assigns |var| every
     33 // item in the |array| and adds a SCOPED_TRACE() message for the |var| while
     34 // inside the loop body.
     35 // TODO(bmeurer): Migrate to C++11 once we're ready.
     36 #define TRACED_FOREACH(_type, _var, _array)                                \
     37   for (size_t _i = 0; _i < arraysize(_array); ++_i)                        \
     38     for (bool _done = false; !_done;)                                      \
     39       for (_type const _var = _array[_i]; !_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