Go to the documentation of this file.
39 #ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
40 #define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
42 #include "gtest/internal/gtest-port.h"
46 # include <sys/types.h>
47 # include <sys/wait.h>
49 #endif // GTEST_OS_LINUX
51 #if GTEST_HAS_EXCEPTIONS
64 #include <type_traits>
67 #include "gtest/gtest-message.h"
68 #include "gtest/internal/gtest-filepath.h"
69 #include "gtest/internal/gtest-string.h"
70 #include "gtest/internal/gtest-type-util.h"
80 #define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
81 #define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
92 #define GTEST_STRINGIFY_HELPER_(name, ...) #name
93 #define GTEST_STRINGIFY_(...) GTEST_STRINGIFY_HELPER_(__VA_ARGS__, )
103 class AssertionResult;
107 class TestPartResult;
110 template <
typename T>
134 template <
typename T,
144 #if GTEST_HAS_EXCEPTIONS
155 class
GTEST_API_ GoogleTestFailureException : public ::
std::runtime_error {
157 explicit GoogleTestFailureException(
const TestPartResult& failure);
162 #endif // GTEST_HAS_EXCEPTIONS
164 namespace edit_distance {
172 const std::vector<size_t>& left,
const std::vector<size_t>& right);
176 const std::vector<std::string>& left,
177 const std::vector<std::string>& right);
181 const std::vector<std::string>& right,
192 size_t* total_line_count);
210 const char* actual_expression,
218 const char* expression_text,
219 const char* actual_predicate_value,
220 const char* expected_predicate_value);
251 template <
typename RawType>
252 class FloatingPoint {
261 static const size_t kBitCount = 8*
sizeof(RawType);
265 std::numeric_limits<RawType>::digits - 1;
319 static RawType
Max();
351 if (
is_nan() || rhs.is_nan())
return false;
359 union FloatingPointUnion {
395 return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
398 FloatingPointUnion
u_;
419 typedef const void*
TypeId;
421 template <
typename T>
430 template <
typename T>
436 template <
typename T>
454 class TestFactoryBase {
471 template <
class TestClass>
472 class TestFactoryImpl :
public TestFactoryBase {
488 #endif // GTEST_OS_WINDOWS
494 struct CodeLocation {
510 return a ==
def ? nullptr :
a;
513 template <
typename T>
517 struct SuiteApiResolver :
T {
525 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
532 <<
"Test can not provide both SetUpTestSuite and SetUpTestCase, please "
533 "make sure there is only one present at "
536 return test_case_fp !=
nullptr ? test_case_fp : test_suite_fp;
540 return &T::SetUpTestSuite;
546 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
553 <<
"Test can not provide both TearDownTestSuite and TearDownTestCase,"
554 " please make sure there is only one present at"
557 return test_case_fp !=
nullptr ? test_case_fp : test_suite_fp;
561 return &T::TearDownTestSuite;
585 const char* test_suite_name,
const char*
name,
const char* type_param,
586 const char* value_param, CodeLocation code_location,
601 TypedTestSuitePState() : registered_(
false) {}
606 bool AddTestName(
const char*
file,
int line,
const char* case_name,
607 const char* test_name) {
610 "%s Test %s must be defined before "
611 "REGISTER_TYPED_TEST_SUITE_P(%s, ...).\n",
616 registered_tests_.insert(
621 bool TestExists(
const std::string& test_name)
const {
622 return registered_tests_.count(test_name) > 0;
626 RegisteredTestsMap::const_iterator
it = registered_tests_.find(test_name);
634 const char* VerifyRegisteredTestNames(
const char* test_suite_name,
636 const char* registered_tests);
639 typedef ::std::map<std::string, CodeLocation> RegisteredTestsMap;
642 RegisteredTestsMap registered_tests_;
646 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
648 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
655 const char* comma = strchr(
str,
',');
656 if (comma ==
nullptr) {
666 const char* comma = strchr(
str,
',');
673 ::std::vector< ::std::string>*
dest);
678 template <
typename T>
684 template <
typename Prov
ided = DefaultNameGenerator>
689 template <
typename NameGenerator>
692 template <
typename NameGenerator,
typename Types>
699 template <
typename NameGenerator,
typename Types>
701 std::vector<std::string>
result;
702 GenerateNamesRecursively<NameGenerator>(
Types(), &
result, 0);
713 template <GTEST_TEMPLATE_ Fixture,
class TestSel,
typename Types>
721 const char* case_name,
const char* test_names,
int index,
722 const std::vector<std::string>& type_names =
723 GenerateNames<DefaultNameGenerator, Types>()) {
732 "/" + type_names[
static_cast<size_t>(
index)])
735 GetTypeName<Type>().
c_str(),
737 code_location, GetTypeId<FixtureClass>(),
739 code_location.file.c_str(), code_location.line),
741 code_location.file.c_str(), code_location.line),
756 template <GTEST_TEMPLATE_ Fixture,
class TestSel>
760 const char* ,
const char* ,
762 const std::vector<std::string>& =
763 std::vector<std::string>() ) {
769 CodeLocation code_location);
771 const char* case_name);
777 template <GTEST_TEMPLATE_ Fixture,
typename Tests,
typename Types>
781 const TypedTestSuitePState*
state,
const char* case_name,
782 const char* test_names,
783 const std::vector<std::string>& type_names =
784 GenerateNames<DefaultNameGenerator, Types>()) {
788 if (!
state->TestExists(test_name)) {
789 fprintf(
stderr,
"Failed to get code location for test %s.%s at %s.",
790 case_name, test_name.c_str(),
792 code_location.line).c_str());
798 typedef typename Tests::Head Head;
802 prefix, test_location, case_name, test_names, 0, type_names);
808 SkipComma(test_names),
814 template <GTEST_TEMPLATE_ Fixture,
typename Types>
818 const TypedTestSuitePState* ,
819 const char* ,
const char* ,
820 const std::vector<std::string>& =
821 std::vector<std::string>() ) {
837 UnitTest* unit_test,
int skip_count);
853 operator bool()
const {
return true; }
859 struct TrueWithString {
863 explicit operator bool()
const {
return true; }
874 static const uint32_t kMaxRange = 1
u << 31;
890 #define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
891 typename std::remove_const<typename std::remove_reference<T>::type>::type
896 template <
typename T>
897 class HasDebugStringAndShortDebugString {
899 template <
typename C>
905 template <
typename C>
915 static constexpr
bool value =
919 template <
typename T>
948 class Iterator = decltype(::std::declval<const C&>().
begin()),
949 class = decltype(::std::declval<const C&>().
end()),
950 class = decltype(++::std::declval<Iterator&>()),
951 class = decltype(*::std::declval<Iterator>()),
952 class =
typename C::const_iterator>
965 template <
typename T>
968 template <
typename U>
969 static char test(
typename U::hasher*,
typename U::reverse_iterator*);
970 template <
typename U>
972 template <
typename U>
973 static char test(...);
976 static const bool value =
sizeof(
test<T>(
nullptr,
nullptr)) ==
sizeof(
int);
979 template <
typename T>
982 template <
typename C,
983 bool =
sizeof(IsContainerTest<C>(0)) ==
sizeof(
IsContainer)>
984 struct IsRecursiveContainerImpl;
986 template <
typename C>
993 template <
typename C>
994 struct IsRecursiveContainerImpl<
C,
true> {
995 using value_type = decltype(*std::declval<typename C::const_iterator>());
997 std::is_same<
typename std::remove_const<
1008 template <
typename C>
1017 template <
typename T,
typename U>
1021 template <
typename T,
typename U>
1022 inline bool ArrayEq(
const T& lhs,
const U& rhs) {
return lhs == rhs; }
1025 template <
typename T,
typename U,
size_t N>
1026 inline bool ArrayEq(
const T(&lhs)[
N],
const U(&rhs)[
N]) {
1033 template <
typename T,
typename U>
1034 bool ArrayEq(
const T* lhs,
size_t size,
const U* rhs) {
1035 for (
size_t i = 0;
i !=
size;
i++) {
1044 template <
typename Iter,
typename Element>
1057 template <
typename T,
typename U>
1061 template <
typename T,
typename U>
1065 template <
typename T,
typename U,
size_t N>
1073 template <
typename T,
typename U>
1075 for (
size_t i = 0;
i !=
size;
i++) {
1084 struct RelationToSourceReference {};
1085 struct RelationToSourceCopy {};
1095 template <
typename Element>
1115 (this->*rhs.clone_)(rhs.array_, rhs.size_);
1128 return size() == rhs.size() &&
1135 "Type must not be a reference");
1139 Element*
const copy =
new Element[a_size];
1159 template <
size_t... Is>
1160 struct IndexSequence {
1165 template <
bool plus_one,
typename T,
size_t sizeofT>
1167 template <
size_t...
I,
size_t sizeofT>
1171 template <
size_t...
I,
size_t sizeofT>
1180 :
DoubleSequence<N % 2 == 1, typename MakeIndexSequenceImpl<N / 2>::type,
1184 struct MakeIndexSequenceImpl<0> : IndexSequence<> {};
1189 template <
typename...
T>
1198 struct ElemFromListImpl;
1199 template <
size_t...
I>
1200 struct ElemFromListImpl<IndexSequence<
I...>> {
1205 template <
typename R>
1206 static R
Apply(Ignore<0 * I>..., R (*)(), ...);
1209 template <
size_t N,
typename...
T>
1210 struct ElemFromList {
1213 static_cast<T (*)()
>(
nullptr)...));
1218 template <
typename...
T>
1221 template <
typename Derived,
size_t I>
1222 struct FlatTupleElemBase;
1224 template <
typename...
T,
size_t I>
1225 struct FlatTupleElemBase<FlatTuple<
T...>,
I> {
1228 template <
typename Arg>
1234 template <
typename Derived,
typename Idx>
1235 struct FlatTupleBase;
1237 template <
size_t... Idx,
typename...
T>
1238 struct FlatTupleBase<FlatTuple<
T...>, IndexSequence<Idx...>>
1239 : FlatTupleElemBase<FlatTuple<T...>, Idx>... {
1242 template <
typename...
Args>
1245 std::forward<Args>(
args))... {}
1257 template <
typename F>
1258 auto Apply(F&& f) -> decltype(std::forward<F>(f)(this->Get<Idx>()...)) {
1259 return std::forward<F>(f)(Get<Idx>()...);
1262 template <
typename F>
1263 auto Apply(F&& f)
const -> decltype(std::forward<F>(f)(this->Get<Idx>()...)) {
1264 return std::forward<F>(f)(Get<Idx>()...);
1277 template <
typename...
T>
1279 :
private FlatTupleBase<FlatTuple<T...>,
1280 typename MakeIndexSequence<sizeof...(T)>::type> {
1281 using Indices =
typename FlatTupleBase<
1286 template <
typename...
Args>
1297 "INSTANTIATE_TEST_CASE_P is deprecated, please use "
1298 "INSTANTIATE_TEST_SUITE_P")
1299 constexpr
bool InstantiateTestCase_P_IsDeprecated() {
return true; }
1302 "TYPED_TEST_CASE_P is deprecated, please use "
1303 "TYPED_TEST_SUITE_P")
1304 constexpr
bool TypedTestCase_P_IsDeprecated() {
return true; }
1307 "TYPED_TEST_CASE is deprecated, please use "
1309 constexpr
bool TypedTestCaseIsDeprecated() {
return true; }
1312 "REGISTER_TYPED_TEST_CASE_P is deprecated, please use "
1313 "REGISTER_TYPED_TEST_SUITE_P")
1314 constexpr
bool RegisterTypedTestCase_P_IsDeprecated() {
return true; }
1317 "INSTANTIATE_TYPED_TEST_CASE_P is deprecated, please use "
1318 "INSTANTIATE_TYPED_TEST_SUITE_P")
1319 constexpr
bool InstantiateTypedTestCase_P_IsDeprecated() {
return true; }
1329 #pragma clang diagnostic push
1330 #pragma clang diagnostic ignored "-Wmismatched-tags"
1332 template <
typename... Ts>
1333 struct tuple_size<
testing::internal::FlatTuple<Ts...>>
1334 : std::integral_constant<size_t, sizeof...(Ts)> {};
1336 #pragma clang diagnostic pop
1340 #define GTEST_MESSAGE_AT_(file, line, message, result_type) \
1341 ::testing::internal::AssertHelper(result_type, file, line, message) \
1342 = ::testing::Message()
1344 #define GTEST_MESSAGE_(message, result_type) \
1345 GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
1347 #define GTEST_FATAL_FAILURE_(message) \
1348 return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
1350 #define GTEST_NONFATAL_FAILURE_(message) \
1351 GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
1353 #define GTEST_SUCCESS_(message) \
1354 GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
1356 #define GTEST_SKIP_(message) \
1357 return GTEST_MESSAGE_(message, ::testing::TestPartResult::kSkip)
1364 #define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
1365 if (::testing::internal::AlwaysTrue()) { \
1368 static_assert(true, "") // User must have a semicolon after expansion.
1370 #if GTEST_HAS_EXCEPTIONS
1377 const char* what()
const noexcept {
1378 return "this exception should never be thrown";
1387 #define GTEST_EXCEPTION_TYPE_(e) ::testing::internal::GetTypeName(typeid(e))
1389 #else // GTEST_HAS_RTTI
1391 #define GTEST_EXCEPTION_TYPE_(e) \
1392 std::string { "an std::exception-derived error" }
1394 #endif // GTEST_HAS_RTTI
1396 #define GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception) \
1397 catch (typename std::conditional< \
1398 std::is_same<typename std::remove_cv<typename std::remove_reference< \
1399 expected_exception>::type>::type, \
1400 std::exception>::value, \
1401 const ::testing::internal::NeverThrown&, const std::exception&>::type \
1403 gtest_msg.value = "Expected: " #statement \
1404 " throws an exception of type " #expected_exception \
1405 ".\n Actual: it throws "; \
1406 gtest_msg.value += GTEST_EXCEPTION_TYPE_(e); \
1407 gtest_msg.value += " with description \""; \
1408 gtest_msg.value += e.what(); \
1409 gtest_msg.value += "\"."; \
1410 goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
1413 #else // GTEST_HAS_EXCEPTIONS
1415 #define GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception)
1417 #endif // GTEST_HAS_EXCEPTIONS
1419 #define GTEST_TEST_THROW_(statement, expected_exception, fail) \
1420 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1421 if (::testing::internal::TrueWithString gtest_msg{}) { \
1422 bool gtest_caught_expected = false; \
1424 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
1425 } catch (expected_exception const&) { \
1426 gtest_caught_expected = true; \
1428 GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception) \
1430 gtest_msg.value = "Expected: " #statement \
1431 " throws an exception of type " #expected_exception \
1432 ".\n Actual: it throws a different type."; \
1433 goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
1435 if (!gtest_caught_expected) { \
1436 gtest_msg.value = "Expected: " #statement \
1437 " throws an exception of type " #expected_exception \
1438 ".\n Actual: it throws nothing."; \
1439 goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
1442 GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__) \
1443 : fail(gtest_msg.value.c_str())
1445 #if GTEST_HAS_EXCEPTIONS
1447 #define GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_() \
1448 catch (std::exception const& e) { \
1449 gtest_msg.value = "it throws "; \
1450 gtest_msg.value += GTEST_EXCEPTION_TYPE_(e); \
1451 gtest_msg.value += " with description \""; \
1452 gtest_msg.value += e.what(); \
1453 gtest_msg.value += "\"."; \
1454 goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
1457 #else // GTEST_HAS_EXCEPTIONS
1459 #define GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_()
1461 #endif // GTEST_HAS_EXCEPTIONS
1463 #define GTEST_TEST_NO_THROW_(statement, fail) \
1464 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1465 if (::testing::internal::TrueWithString gtest_msg{}) { \
1467 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
1469 GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_() \
1471 gtest_msg.value = "it throws."; \
1472 goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
1475 GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
1476 fail(("Expected: " #statement " doesn't throw an exception.\n" \
1477 " Actual: " + gtest_msg.value).c_str())
1479 #define GTEST_TEST_ANY_THROW_(statement, fail) \
1480 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1481 if (::testing::internal::AlwaysTrue()) { \
1482 bool gtest_caught_any = false; \
1484 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
1487 gtest_caught_any = true; \
1489 if (!gtest_caught_any) { \
1490 goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
1493 GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
1494 fail("Expected: " #statement " throws an exception.\n" \
1495 " Actual: it doesn't.")
1501 #define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
1502 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1503 if (const ::testing::AssertionResult gtest_ar_ = \
1504 ::testing::AssertionResult(expression)) \
1507 fail(::testing::internal::GetBoolAssertionFailureMessage(\
1508 gtest_ar_, text, #actual, #expected).c_str())
1510 #define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
1511 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1512 if (::testing::internal::AlwaysTrue()) { \
1513 ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
1514 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
1515 if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
1516 goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
1519 GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
1520 fail("Expected: " #statement " doesn't generate new fatal " \
1521 "failures in the current thread.\n" \
1522 " Actual: it does.")
1525 #define GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
1526 test_suite_name##_##test_name##_Test
1529 #define GTEST_TEST_(test_suite_name, test_name, parent_class, parent_id) \
1530 static_assert(sizeof(GTEST_STRINGIFY_(test_suite_name)) > 1, \
1531 "test_suite_name must not be empty"); \
1532 static_assert(sizeof(GTEST_STRINGIFY_(test_name)) > 1, \
1533 "test_name must not be empty"); \
1534 class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
1535 : public parent_class { \
1537 GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() = default; \
1538 ~GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() override = default; \
1539 GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
1541 GTEST_DISALLOW_MOVE_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
1545 void TestBody() override; \
1546 static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_; \
1549 ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_suite_name, \
1550 test_name)::test_info_ = \
1551 ::testing::internal::MakeAndRegisterTestInfo( \
1552 #test_suite_name, #test_name, nullptr, nullptr, \
1553 ::testing::internal::CodeLocation(__FILE__, __LINE__), (parent_id), \
1554 ::testing::internal::SuiteApiResolver< \
1555 parent_class>::GetSetUpCaseOrSuite(__FILE__, __LINE__), \
1556 ::testing::internal::SuiteApiResolver< \
1557 parent_class>::GetTearDownCaseOrSuite(__FILE__, __LINE__), \
1558 new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_( \
1559 test_suite_name, test_name)>); \
1560 void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
1562 #endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
NativeArray(const Element *array, size_t count, RelationToSourceCopy)
void SplitString(const ::std::string &str, char delimiter, ::std::vector< ::std::string > *dest)
#define GTEST_BIND_(TmplSel, T)
NativeArray(const NativeArray &rhs)
static SetUpTearDownSuiteFuncType GetTearDownCaseOrSuite(const char *filename, int line_num)
void GenerateNamesRecursively(internal::None, std::vector< std::string > *, int)
Apply(StreamingPingPongArgs)
static const Bits kSignBitMask
std::string StripTrailingSpaces(std::string str)
const_iterator begin() const
void(*)() TearDownTestSuiteFunc
static const size_t kBitCount
GTEST_API_ ::std::string FormatFileLocation(const char *file, int line)
static int copy(grpc_slice_buffer *input, grpc_slice_buffer *output)
static const uint8_t seed[20]
bool operator==(const NativeArray &rhs) const
const typedef void * TypeId
IsContainer IsContainerTest(int)
integral_constant< bool, false > false_type
static void SetUpTestSuite()
PHP_PROTO_OBJECT_FREE_END PHP_PROTO_OBJECT_DTOR_END intern array
static char test(typename U::hasher *, typename U::reverse_iterator *)
std::string DebugString(const google::protobuf::Message &message)
static const Bits kExponentBitMask
GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase)
static constexpr auto CheckDebugString(C *) -> typename std::is_same< std::string, decltype(std::declval< const C >().DebugString())>::type
GTEST_API_ std::vector< EditType > CalculateOptimalEdits(const std::vector< size_t > &left, const std::vector< size_t > &right)
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
OPENSSL_EXPORT pem_password_cb void * u
static const size_t kMaxUlps
static bool Register(const char *prefix, const CodeLocation &code_location, const char *case_name, const char *test_names, int index, const std::vector< std::string > &type_names=GenerateNames< DefaultNameGenerator, Types >())
const Bits & bits() const
GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(UnitTest *unit_test, int skip_count)
static void SetUpTestCase()
const typedef Element * const_iterator
Arg(64) -> Arg(128) ->Arg(256) ->Arg(512) ->Arg(1024) ->Arg(1536) ->Arg(2048) ->Arg(3072) ->Arg(4096) ->Arg(5120) ->Arg(6144) ->Arg(7168)
void InitCopy(const Element *array, size_t a_size)
#define T(upbtypeconst, upbtype, ctype, default_value)
static bool Register(const char *, const CodeLocation &, const TypedTestSuitePState *, const char *, const char *, const std::vector< std::string > &=std::vector< std::string >())
FloatingPoint(const RawType &x)
FlatTupleElemBase(FlatTupleConstructTag, Arg &&t)
static GraphId Get(const IdMap &id, int num)
std::string GetPrefixUntilComma(const char *str)
std::string StreamableToString(const T &streamable)
def Iter(n, format, sep='')
hash_default_hash< T > hasher
internal::ProxyTypeList< Ts... > Types
Bits fraction_bits() const
Bits exponent_bits() const
def c_str(s, encoding='ascii')
static void * tag(intptr_t t)
void RegisterTypeParameterizedTestSuiteInstantiation(const char *case_name)
static SetUpTearDownSuiteFuncType GetSetUpCaseOrSuite(const char *filename, int line_num)
Test * CreateTest() override
GTEST_API_ bool SkipPrefix(const char *prefix, const char **pstr)
TrueWithString(const std::string &str)
GRPC_CUSTOM_MESSAGELITE MessageLite
FloatingPoint< float > Float
int def(FILE *source, FILE *dest, int level)
static std::string GetName(int i)
typename ElemFromList< I, typename MakeIndexSequence< sizeof...(T)>::type, T... >::type value_type
static const Bits kFractionBitMask
void Reseed(uint32_t seed)
GTEST_API_ bool AlwaysTrue()
GTEST_DISABLE_MSC_WARNINGS_POP_() inline const char *SkipComma(const char *str)
typename MakeIndexSequence< sizeof...(T)>::type IndexSequenceFor
static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1, const Bits &sam2)
virtual ~TestFactoryBase()
decltype(CheckDebugString< T >(nullptr)) HasDebugStringType
CodeLocation(const std::string &a_file, int a_line)
bool ArrayEq(const T *lhs, size_t size, const U *rhs)
typename MakeIndexSequenceImpl< N >::type MakeIndexSequence
void(*)() SetUpTearDownSuiteFuncType
GTEST_API_ std::string DiffStrings(const std::string &left, const std::string &right, size_t *total_line_count)
ElemFromList< I, T... >::type & Get()
GTEST_API_ TypeId GetTestTypeId()
bool AlmostEquals(const FloatingPoint &rhs) const
auto Apply(F &&f, Tuple &&args) -> decltype(ApplyImpl(std::forward< F >(f), std::forward< Tuple >(args), MakeIndexSequence< std::tuple_size< Tuple >::value >()))
FlatTupleBase(FlatTupleConstructTag, Args &&... args)
const ElemFromList< I, T... >::type & Get() const
static const size_t kExponentBitCount
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251) class GTEST_API_ TypedTestSuitePState
static constexpr auto CheckShortDebugString(C *) -> typename std::is_same< std::string, decltype(std::declval< const C >().ShortDebugString())>::type
GTEST_API_ TestInfo * MakeAndRegisterTestInfo(const char *test_suite_name, const char *name, const char *type_param, const char *value_param, CodeLocation code_location, TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc, TearDownTestSuiteFunc tear_down_tc, TestFactoryBase *factory)
std::is_same< typename std::remove_const< typename std::remove_reference< value_type >::type >::type, C > type
GTEST_API_ std::string AppendUserMessage(const std::string >est_msg, const Message &user_msg)
auto Apply(F &&f) const -> decltype(std::forward< F >(f)(this->Get< Idx >()...))
GTEST_API_ AssertionResult EqFailure(const char *expected_expression, const char *actual_expression, const std::string &expected_value, const std::string &actual_value, bool ignoring_case)
#define GTEST_CHECK_(condition)
ConstCharPtr(const char *str)
static void TearDownTestSuite()
static void TearDownTestCase()
virtual Test * CreateTest()=0
GTEST_API_ std::string GetBoolAssertionFailureMessage(const AssertionResult &assertion_result, const char *expression_text, const char *actual_predicate_value, const char *expected_predicate_value)
void(NativeArray::* clone_)(const Element *, size_t)
const_iterator end() const
SetUpTearDownSuiteFuncType GetNotDefaultOrNull(SetUpTearDownSuiteFuncType a, SetUpTearDownSuiteFuncType def)
decltype(CheckShortDebugString< T >(nullptr)) HasShortDebugStringType
Iter ArrayAwareFind(Iter begin, Iter end, const Element &elem)
void(*)() SetUpTestSuiteFunc
decltype(*std::declval< typename C::const_iterator >()) value_type
static Bits SignAndMagnitudeToBiased(const Bits &sam)
static bool Register(const char *, const CodeLocation &, const char *, const char *, int, const std::vector< std::string > &=std::vector< std::string >())
FloatingPoint< double > Double
void CopyArray(const T *from, size_t size, U *to)
static const char prefix[]
TypedTestSuitePState TypedTestCasePState
GTEST_INTERNAL_DEPRECATED("INSTANTIATE_TEST_CASE_P is deprecated, please use " "INSTANTIATE_TEST_SUITE_P") const expr bool InstantiateTestCase_P_IsDeprecated()
static constexpr bool value
TypeWithSize< sizeof(RawType)>::UInt Bits
grpc_connectivity_state state_
static int Random(uint32_t *state)
std::vector< std::string > GenerateNames()
void InitRef(const Element *array, size_t a_size)
const GTEST_API_ char kStackTraceMarker[]
GTEST_API_ std::string CreateUnifiedDiff(const std::vector< std::string > &left, const std::vector< std::string > &right, size_t context=2)
static bool Register(const char *prefix, CodeLocation code_location, const TypedTestSuitePState *state, const char *case_name, const char *test_names, const std::vector< std::string > &type_names=GenerateNames< DefaultNameGenerator, Types >())
static const size_t kFractionBitCount
typename FlatTuple::FlatTupleBase::Indices Indices
grpc::ClientContext context
constexpr T && forward(absl::remove_reference_t< T > &t) noexcept
static RawType Infinity()
auto Apply(F &&f) -> decltype(std::forward< F >(f)(this->Get< Idx >()...))
TrueWithString(const char *str)
void RegisterTypeParameterizedTestSuite(const char *test_suite_name, CodeLocation code_location)
NativeArray(const Element *array, size_t count, RelationToSourceReference)
decltype(ElemFromListImpl< typename MakeIndexSequence< N >::type >::Apply(static_cast< T(*)()>(nullptr)...)) type
static RawType ReinterpretBits(const Bits bits)
FlatTuple(FlatTupleConstructTag tag, Args &&... args)
::std::string PrintToString(const T &value)
void Ignore(T...) noexcept
grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:46