39#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
40#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
51#if GTEST_HAS_EXCEPTIONS
83#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
84#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo##bar
95#define GTEST_STRINGIFY_HELPER_(name, ...) #name
96#define GTEST_STRINGIFY_(...) GTEST_STRINGIFY_HELPER_(__VA_ARGS__, )
106class AssertionResult;
138 template <
typename T,
139 typename std::enable_if<!std::is_convertible<T, Sink>::value,
148#if GTEST_HAS_EXCEPTIONS
159class
GTEST_API_ GoogleTestFailureException : public ::
std::runtime_error {
161 explicit GoogleTestFailureException(
const TestPartResult& failure);
168namespace edit_distance {
176 const std::vector<size_t>& left,
const std::vector<size_t>& right);
180 const std::vector<std::string>& left,
181 const std::vector<std::string>& right);
185 const std::vector<std::string>& right,
206 const char* actual_expression,
207 const std::string& expected_value,
208 const std::string& actual_value,
213 const AssertionResult& assertion_result,
const char* expression_text,
214 const char* actual_predicate_value,
const char* expected_predicate_value);
245template <
typename RawType>
259 std::numeric_limits<RawType>::digits - 1;
342 return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) <=
348 union FloatingPointUnion {
368 static Bits SignAndMagnitudeToBiased(
const Bits& sam) {
380 static Bits DistanceBetweenSignAndMagnitudeNumbers(
const Bits& sam1,
382 const Bits biased1 = SignAndMagnitudeToBiased(sam1);
383 const Bits biased2 = SignAndMagnitudeToBiased(sam2);
384 return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
387 FloatingPointUnion u_;
454template <
class TestClass>
460#ifdef GTEST_OS_WINDOWS
466GTEST_API_ AssertionResult IsHRESULTSuccess(
const char* expr,
468GTEST_API_ AssertionResult IsHRESULTFailure(
const char* expr,
493 return a == def ? nullptr : a;
508#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
515 <<
"Test can not provide both SetUpTestSuite and SetUpTestCase, please "
516 "make sure there is only one present at "
517 << filename <<
":" << line_num;
519 return test_case_fp !=
nullptr ? test_case_fp : test_suite_fp;
523 return &T::SetUpTestSuite;
529#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
536 <<
"Test can not provide both TearDownTestSuite and TearDownTestCase,"
537 " please make sure there is only one present at"
538 << filename <<
":" << line_num;
540 return test_case_fp !=
nullptr ? test_case_fp : test_suite_fp;
544 return &T::TearDownTestSuite;
568 const char* test_suite_name,
const char* name,
const char* type_param,
569 const char* value_param, CodeLocation code_location,
584 TypedTestSuitePState() : registered_(
false) {}
589 bool AddTestName(
const char* file,
int line,
const char* case_name,
590 const char* test_name) {
593 "%s Test %s must be defined before "
594 "REGISTER_TYPED_TEST_SUITE_P(%s, ...).\n",
599 registered_tests_.insert(
604 bool TestExists(
const std::string& test_name)
const {
605 return registered_tests_.count(test_name) > 0;
608 const CodeLocation& GetCodeLocation(
const std::string& test_name)
const {
609 RegisteredTestsMap::const_iterator it = registered_tests_.find(test_name);
617 const char* VerifyRegisteredTestNames(
const char* test_suite_name,
618 const char* file,
int line,
619 const char* registered_tests);
622 typedef ::std::map<std::string, CodeLocation, std::less<>> RegisteredTestsMap;
625 RegisteredTestsMap registered_tests_;
629#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
638 const char* comma = strchr(str,
',');
639 if (comma ==
nullptr) {
650 const char* comma = strchr(str,
',');
651 return comma ==
nullptr ? str : std::string(str, comma);
657 ::std::vector<::std::string>* dest);
662 template <
typename T>
668template <
typename Prov
ided = DefaultNameGenerator>
673template <
typename NameGenerator>
676template <
typename NameGenerator,
typename Types>
678 result->push_back(NameGenerator::template GetName<typename Types::Head>(
i));
683template <
typename NameGenerator,
typename Types>
685 std::vector<std::string> result;
697template <GTEST_TEMPLATE_ Fixture,
class TestSel,
typename Types>
705 const char* case_name,
const char* test_names,
int index,
706 const std::vector<std::string>& type_names =
708 typedef typename Types::Head Type;
710 typedef typename GTEST_BIND_(TestSel, Type) TestClass;
715 (std::string(prefix) + (prefix[0] ==
'\0' ?
"" :
"/") + case_name +
716 "/" + type_names[
static_cast<size_t>(index)])
723 code_location.
file.c_str(), code_location.
line),
725 code_location.
file.c_str(), code_location.
line),
740template <GTEST_TEMPLATE_ Fixture,
class TestSel>
744 const char* ,
const char* ,
746 const std::vector<std::string>& =
747 std::vector<std::string>() ) {
753 CodeLocation code_location);
755 const char* case_name);
761template <GTEST_TEMPLATE_ Fixture,
typename Tests,
typename Types>
765 const TypedTestSuitePState* state,
const char* case_name,
766 const char* test_names,
767 const std::vector<std::string>& type_names =
770 std::string test_name =
772 if (!state->TestExists(test_name)) {
773 fprintf(stderr,
"Failed to get code location for test %s.%s at %s.",
774 case_name, test_name.c_str(),
780 const CodeLocation& test_location = state->GetCodeLocation(test_name);
782 typedef typename Tests::Head Head;
786 prefix, test_location, case_name, test_names, 0, type_names);
798template <GTEST_TEMPLATE_ Fixture,
typename Types>
802 const TypedTestSuitePState* ,
803 const char* ,
const char* ,
804 const std::vector<std::string>& =
805 std::vector<std::string>() ) {
836 operator bool()
const {
return true; }
846 explicit operator bool()
const {
return true; }
857 static const uint32_t kMaxRange = 1u << 31;
859 explicit Random(uint32_t seed) : state_(seed) {}
861 void Reseed(uint32_t seed) { state_ = seed; }
865 uint32_t Generate(uint32_t range);
874#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
875 typename std::remove_const<typename std::remove_reference<T>::type>::type
883 template <
typename C>
884 static auto CheckDebugString(C*) ->
typename std::is_same<
885 std::string,
decltype(std::declval<const C>().DebugString())>::type;
887 static std::false_type CheckDebugString(...);
889 template <
typename C>
890 static auto CheckShortDebugString(C*) ->
typename std::is_same<
891 std::string,
decltype(std::declval<const C>().ShortDebugString())>::type;
893 static std::false_type CheckShortDebugString(...);
895 using HasDebugStringType =
decltype(CheckDebugString<T>(
nullptr));
896 using HasShortDebugStringType =
decltype(CheckShortDebugString<T>(
nullptr));
900 HasDebugStringType::value && HasShortDebugStringType::value;
903#ifdef GTEST_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
934 class Iterator =
decltype(::std::declval<const C&>().begin()),
935 class =
decltype(::std::declval<const C&>().end()),
936 class =
decltype(++::std::declval<Iterator&>()),
937 class =
decltype(*::std::declval<Iterator>()),
938 class =
typename C::const_iterator>
956 template <
typename U>
957 static char test(
typename U::hasher*,
typename U::reverse_iterator*);
958 template <
typename U>
959 static int test(
typename U::hasher*, ...);
960 template <
typename U>
961 static char test(...);
964 static const bool value =
sizeof(test<T>(
nullptr,
nullptr)) ==
sizeof(
int);
983 using value_type =
decltype(*std::declval<typename C::const_iterator>());
985 std::is_same<
typename std::remove_const<
986 typename std::remove_reference<value_type>::type>::type,
1005template <
typename T,
typename U>
1006bool ArrayEq(
const T* lhs,
size_t size,
const U* rhs);
1009template <
typename T,
typename U>
1015template <
typename T,
typename U,
size_t N>
1016inline bool ArrayEq(
const T (&lhs)[N],
const U (&rhs)[N]) {
1023template <
typename T,
typename U>
1025 for (
size_t i = 0;
i != size;
i++) {
1033template <
typename Iter,
typename Element>
1035 for (Iter it = begin; it != end; ++it) {
1045template <
typename T,
typename U>
1046void CopyArray(
const T* from,
size_t size, U* to);
1049template <
typename T,
typename U>
1055template <
typename T,
typename U,
size_t N>
1063template <
typename T,
typename U>
1065 for (
size_t i = 0;
i != size;
i++) {
1085template <
typename Element>
1095 InitRef(array,
count);
1100 InitCopy(array,
count);
1105 (this->*rhs.clone_)(rhs.array_, rhs.size_);
1109 if (clone_ != &NativeArray::InitRef)
delete[] array_;
1113 size_t size()
const {
return size_; }
1121 static_assert(!std::is_const<Element>::value,
"Type must not be const");
1122 static_assert(!std::is_reference<Element>::value,
1123 "Type must not be a reference");
1126 void InitCopy(
const Element* array,
size_t a_size) {
1127 Element*
const copy =
new Element[a_size];
1131 clone_ = &NativeArray::InitCopy;
1135 void InitRef(
const Element* array,
size_t a_size) {
1138 clone_ = &NativeArray::InitRef;
1141 const Element* array_;
1143 void (
NativeArray::*clone_)(const Element*, size_t);
1147template <
size_t... Is>
1153template <
bool plus_one,
typename T,
size_t sizeofT>
1155template <
size_t... I,
size_t sizeofT>
1159template <
size_t... I,
size_t sizeofT>
1168 :
DoubleSequence<N % 2 == 1, typename MakeIndexSequenceImpl<N / 2>::type,
1177template <
typename...
T>
1187template <
size_t... I>
1193 template <
typename R>
1197template <
size_t N,
typename...
T>
1201 static_cast<T (*)()
>(
nullptr)...));
1206template <
typename...
T>
1209template <
typename Derived,
size_t I>
1212template <
typename...
T,
size_t I>
1216 template <
typename Arg>
1222template <
typename Derived,
typename Idx>
1225template <
size_t... Idx,
typename...
T>
1230 template <
typename... Args>
1233 std::forward<Args>(args))... {}
1245 template <
typename F>
1246 auto Apply(F&& f) ->
decltype(std::forward<F>(f)(this->Get<Idx>()...)) {
1247 return std::forward<F>(f)(Get<Idx>()...);
1250 template <
typename F>
1251 auto Apply(F&& f)
const ->
decltype(std::forward<F>(f)(this->Get<Idx>()...)) {
1252 return std::forward<F>(f)(Get<Idx>()...);
1265template <
typename...
T>
1268 typename MakeIndexSequence<sizeof...(T)>::type> {
1274 template <
typename... Args>
1278 using FlatTuple::FlatTupleBase::Apply;
1279 using FlatTuple::FlatTupleBase::Get;
1285 "INSTANTIATE_TEST_CASE_P is deprecated, please use "
1286 "INSTANTIATE_TEST_SUITE_P")
1287constexpr
bool InstantiateTestCase_P_IsDeprecated() {
return true; }
1290 "TYPED_TEST_CASE_P is deprecated, please use "
1291 "TYPED_TEST_SUITE_P")
1292constexpr
bool TypedTestCase_P_IsDeprecated() {
return true; }
1295 "TYPED_TEST_CASE is deprecated, please use "
1297constexpr
bool TypedTestCaseIsDeprecated() {
return true; }
1300 "REGISTER_TYPED_TEST_CASE_P is deprecated, please use "
1301 "REGISTER_TYPED_TEST_SUITE_P")
1302constexpr
bool RegisterTypedTestCase_P_IsDeprecated() {
return true; }
1305 "INSTANTIATE_TYPED_TEST_CASE_P is deprecated, please use "
1306 "INSTANTIATE_TYPED_TEST_SUITE_P")
1307constexpr
bool InstantiateTypedTestCase_P_IsDeprecated() {
return true; }
1317#pragma clang diagnostic push
1318#pragma clang diagnostic ignored "-Wmismatched-tags"
1320template <
typename... Ts>
1321struct tuple_size<
testing::internal::FlatTuple<Ts...>>
1322 : std::integral_constant<size_t, sizeof...(Ts)> {};
1324#pragma clang diagnostic pop
1328#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
1329 ::testing::internal::AssertHelper(result_type, file, line, message) = \
1330 ::testing::Message()
1332#define GTEST_MESSAGE_(message, result_type) \
1333 GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
1335#define GTEST_FATAL_FAILURE_(message) \
1336 return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
1338#define GTEST_NONFATAL_FAILURE_(message) \
1339 GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
1341#define GTEST_SUCCESS_(message) \
1342 GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
1344#define GTEST_SKIP_(message) \
1345 return GTEST_MESSAGE_(message, ::testing::TestPartResult::kSkip)
1352#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
1353 if (::testing::internal::AlwaysTrue()) { \
1356 static_assert(true, "")
1358#if GTEST_HAS_EXCEPTIONS
1365 const char* what()
const noexcept {
1366 return "this exception should never be thrown";
1375#define GTEST_EXCEPTION_TYPE_(e) ::testing::internal::GetTypeName(typeid(e))
1379#define GTEST_EXCEPTION_TYPE_(e) \
1380 std::string { "an std::exception-derived error" }
1384#define GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception) \
1385 catch (typename std::conditional< \
1386 std::is_same<typename std::remove_cv<typename std::remove_reference< \
1387 expected_exception>::type>::type, \
1388 std::exception>::value, \
1389 const ::testing::internal::NeverThrown&, const std::exception&>::type \
1391 gtest_msg.value = "Expected: " #statement \
1392 " throws an exception of type " #expected_exception \
1393 ".\n Actual: it throws "; \
1394 gtest_msg.value += GTEST_EXCEPTION_TYPE_(e); \
1395 gtest_msg.value += " with description \""; \
1396 gtest_msg.value += e.what(); \
1397 gtest_msg.value += "\"."; \
1398 goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
1403#define GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception)
1407#define GTEST_TEST_THROW_(statement, expected_exception, fail) \
1408 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1409 if (::testing::internal::TrueWithString gtest_msg{}) { \
1410 bool gtest_caught_expected = false; \
1412 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
1413 } catch (expected_exception const&) { \
1414 gtest_caught_expected = true; \
1416 GTEST_TEST_THROW_CATCH_STD_EXCEPTION_(statement, expected_exception) \
1418 gtest_msg.value = "Expected: " #statement \
1419 " throws an exception of type " #expected_exception \
1420 ".\n Actual: it throws a different type."; \
1421 goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
1423 if (!gtest_caught_expected) { \
1424 gtest_msg.value = "Expected: " #statement \
1425 " throws an exception of type " #expected_exception \
1426 ".\n Actual: it throws nothing."; \
1427 goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
1430 GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__) \
1431 : fail(gtest_msg.value.c_str())
1433#if GTEST_HAS_EXCEPTIONS
1435#define GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_() \
1436 catch (std::exception const& e) { \
1437 gtest_msg.value = "it throws "; \
1438 gtest_msg.value += GTEST_EXCEPTION_TYPE_(e); \
1439 gtest_msg.value += " with description \""; \
1440 gtest_msg.value += e.what(); \
1441 gtest_msg.value += "\"."; \
1442 goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
1447#define GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_()
1451#define GTEST_TEST_NO_THROW_(statement, fail) \
1452 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1453 if (::testing::internal::TrueWithString gtest_msg{}) { \
1455 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
1457 GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_() \
1459 gtest_msg.value = "it throws."; \
1460 goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
1463 GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__) \
1464 : fail(("Expected: " #statement " doesn't throw an exception.\n" \
1469#define GTEST_TEST_ANY_THROW_(statement, fail) \
1470 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1471 if (::testing::internal::AlwaysTrue()) { \
1472 bool gtest_caught_any = false; \
1474 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
1476 gtest_caught_any = true; \
1478 if (!gtest_caught_any) { \
1479 goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
1482 GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__) \
1483 : fail("Expected: " #statement \
1484 " throws an exception.\n" \
1485 " Actual: it doesn't.")
1490#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
1491 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1492 if (const ::testing::AssertionResult gtest_ar_ = \
1493 ::testing::AssertionResult(expression)) \
1496 fail(::testing::internal::GetBoolAssertionFailureMessage( \
1497 gtest_ar_, text, #actual, #expected) \
1500#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
1501 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1502 if (::testing::internal::AlwaysTrue()) { \
1503 const ::testing::internal::HasNewFatalFailureHelper \
1504 gtest_fatal_failure_checker; \
1505 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
1506 if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
1507 goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
1510 GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__) \
1511 : fail("Expected: " #statement \
1512 " doesn't generate new fatal " \
1513 "failures in the current thread.\n" \
1514 " Actual: it does.")
1517#define GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
1518 test_suite_name##_##test_name##_Test
1521#define GTEST_TEST_(test_suite_name, test_name, parent_class, parent_id) \
1522 static_assert(sizeof(GTEST_STRINGIFY_(test_suite_name)) > 1, \
1523 "test_suite_name must not be empty"); \
1524 static_assert(sizeof(GTEST_STRINGIFY_(test_name)) > 1, \
1525 "test_name must not be empty"); \
1526 class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
1527 : public parent_class { \
1529 GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() = default; \
1530 ~GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() override = default; \
1531 GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
1532 (const GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) &) = delete; \
1533 GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) & operator=( \
1534 const GTEST_TEST_CLASS_NAME_(test_suite_name, \
1535 test_name) &) = delete; \
1536 GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
1537 (GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) &&) noexcept = delete; \
1538 GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) & operator=( \
1539 GTEST_TEST_CLASS_NAME_(test_suite_name, \
1540 test_name) &&) noexcept = delete; \
1543 void TestBody() override; \
1544 static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_; \
1547 ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_suite_name, \
1548 test_name)::test_info_ = \
1549 ::testing::internal::MakeAndRegisterTestInfo( \
1550 #test_suite_name, #test_name, nullptr, nullptr, \
1551 ::testing::internal::CodeLocation(__FILE__, __LINE__), (parent_id), \
1552 ::testing::internal::SuiteApiResolver< \
1553 parent_class>::GetSetUpCaseOrSuite(__FILE__, __LINE__), \
1554 ::testing::internal::SuiteApiResolver< \
1555 parent_class>::GetTearDownCaseOrSuite(__FILE__, __LINE__), \
1556 new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_( \
1557 test_suite_name, test_name)>); \
1558 void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
Definition gtest_skip_test.cc:42
Definition gtest-message.h:101
static void SetUpTestCase()
Definition gtest.h:270
static void TearDownTestSuite()
Definition gtest.h:264
static void SetUpTestSuite()
Definition gtest.h:256
static void TearDownTestCase()
Definition gtest.h:269
Definition gtest-internal.h:1268
FlatTuple(FlatTupleConstructTag tag, Args &&... args)
Definition gtest-internal.h:1275
Definition gtest-internal.h:246
static const Bits kFractionBitMask
Definition gtest-internal.h:268
static const size_t kFractionBitCount
Definition gtest-internal.h:258
FloatingPoint(const RawType &x)
Definition gtest-internal.h:294
static const size_t kExponentBitCount
Definition gtest-internal.h:262
bool is_nan() const
Definition gtest-internal.h:325
static RawType Infinity()
Definition gtest-internal.h:308
static const Bits kExponentBitMask
Definition gtest-internal.h:272
bool AlmostEquals(const FloatingPoint &rhs) const
Definition gtest-internal.h:337
Bits fraction_bits() const
Definition gtest-internal.h:319
static const size_t kBitCount
Definition gtest-internal.h:255
TypeWithSize< sizeof(RawType)>::UInt Bits
Definition gtest-internal.h:250
static RawType ReinterpretBits(const Bits bits)
Definition gtest-internal.h:301
static const Bits kSignBitMask
Definition gtest-internal.h:265
static const uint32_t kMaxUlps
Definition gtest-internal.h:286
const Bits & bits() const
Definition gtest-internal.h:313
Bits exponent_bits() const
Definition gtest-internal.h:316
Bits sign_bit() const
Definition gtest-internal.h:322
Definition gtest-internal.h:881
static constexpr bool value
Definition gtest-internal.h:899
Definition gtest-internal.h:127
IgnoredValue(const T &)
Definition gtest-internal.h:141
Definition gtest-internal.h:1086
Element value_type
Definition gtest-internal.h:1089
const_iterator begin() const
Definition gtest-internal.h:1114
NativeArray(const Element *array, size_t count, RelationToSourceReference)
Definition gtest-internal.h:1094
~NativeArray()
Definition gtest-internal.h:1108
bool operator==(const NativeArray &rhs) const
Definition gtest-internal.h:1116
const Element * const_iterator
Definition gtest-internal.h:1091
NativeArray(const NativeArray &rhs)
Definition gtest-internal.h:1104
Element * iterator
Definition gtest-internal.h:1090
NativeArray(const Element *array, size_t count, RelationToSourceCopy)
Definition gtest-internal.h:1099
const_iterator end() const
Definition gtest-internal.h:1115
size_t size() const
Definition gtest-internal.h:1113
Definition gtest-internal.h:855
Random(uint32_t seed)
Definition gtest-internal.h:859
void Reseed(uint32_t seed)
Definition gtest-internal.h:861
Definition gtest-internal.h:436
virtual ~TestFactoryBase()=default
virtual Test * CreateTest()=0
TestFactoryBase()
Definition gtest-internal.h:445
Definition gtest-internal.h:455
Test * CreateTest() override
Definition gtest-internal.h:457
Definition gtest-internal.h:404
static bool dummy_
Definition gtest-internal.h:409
static bool Register(const char *, const CodeLocation &, const TypedTestSuitePState *, const char *, const char *, const std::vector< std::string > &=std::vector< std::string >())
Definition gtest-internal.h:801
Definition gtest-internal.h:762
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 >())
Definition gtest-internal.h:764
static bool Register(const char *, const CodeLocation &, const char *, const char *, int, const std::vector< std::string > &=std::vector< std::string >())
Definition gtest-internal.h:743
Definition gtest-internal.h:698
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 >())
Definition gtest-internal.h:704
Definition gtest-port.h:2195
pRC::Float<> T
Definition externs_nonTT.hpp:1
int value
Definition gmock-actions_test.cc:1714
int i
Definition gmock-matchers-comparisons_test.cc:603
int x
Definition gmock-matchers-containers_test.cc:376
int * count
Definition gmock_stress_test.cc:90
#define GTEST_INTERNAL_DEPRECATED(message)
Definition gtest-port.h:2336
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
Definition gtest-port.h:360
#define GTEST_API_
Definition gtest-port.h:842
#define GTEST_DISABLE_MSC_WARNINGS_POP_()
Definition gtest-port.h:361
#define GTEST_CHECK_(condition)
Definition gtest-port.h:1078
#define GTEST_BIND_(TmplSel, T)
Definition gtest-type-util.h:160
Definition gmock-internal-utils_test.cc:64
GTEST_API_ std::vector< EditType > CalculateOptimalEdits(const std::vector< size_t > &left, const std::vector< size_t > &right)
Definition gtest.cc:1308
GTEST_API_ std::string CreateUnifiedDiff(const std::vector< std::string > &left, const std::vector< std::string > &right, size_t context=2)
Definition gtest.cc:1483
EditType
Definition gtest-internal.h:174
@ kAdd
Definition gtest-internal.h:174
@ kMatch
Definition gtest-internal.h:174
@ kRemove
Definition gtest-internal.h:174
@ kReplace
Definition gtest-internal.h:174
void Abort()
Definition gtest-port.h:2147
FloatingPoint< float > Float
Definition gtest-internal.h:392
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)
Definition gtest.cc:1593
GTEST_API_ bool SkipPrefix(const char *prefix, const char **pstr)
Definition gtest.cc:6324
void GenerateNamesRecursively(internal::None, std::vector< std::string > *, int)
Definition gtest-internal.h:674
GTEST_API_::std::string FormatFileLocation(const char *file, int line)
Definition gtest-port.cc:977
typename MakeIndexSequenceImpl< N >::type MakeIndexSequence
Definition gtest-internal.h:1175
std::string GetPrefixUntilComma(const char *str)
Definition gtest-internal.h:649
GTEST_API_ void RegisterTypeParameterizedTestSuite(const char *test_suite_name, CodeLocation code_location)
Definition gtest.cc:557
auto Apply(F &&f, Tuple &&args) -> decltype(ApplyImpl(std::forward< F >(f), std::forward< Tuple >(args), MakeIndexSequence< std::tuple_size< typename std::remove_reference< Tuple >::type >::value >()))
Definition gmock-internal-utils.h:431
GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(int skip_count)
Definition gtest.cc:6298
bool AlwaysFalse()
Definition gtest-internal.h:829
GTEST_API_ std::string GetBoolAssertionFailureMessage(const AssertionResult &assertion_result, const char *expression_text, const char *actual_predicate_value, const char *expected_predicate_value)
Definition gtest.cc:1625
TypedTestSuitePState TypedTestCasePState
Definition gtest-internal.h:630
std::string GetTypeName()
Definition gtest-type-util.h:129
void(*)() SetUpTearDownSuiteFuncType
Definition gtest-internal.h:489
FloatingPoint< double > Double
Definition gtest-internal.h:393
TypeId GetTypeId()
Definition gtest-internal.h:419
std::vector< std::string > GenerateNames()
Definition gtest-internal.h:684
IsContainer IsContainerTest(int)
Definition gtest-internal.h:939
GTEST_API_ void RegisterTypeParameterizedTestSuiteInstantiation(const char *case_name)
Definition gtest.cc:563
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)
Definition gtest.cc:2763
GTEST_API_ bool AlwaysTrue()
Definition gtest.cc:6312
Iter ArrayAwareFind(Iter begin, Iter end, const Element &elem)
Definition gtest-internal.h:1034
SetUpTearDownSuiteFuncType GetNotDefaultOrNull(SetUpTearDownSuiteFuncType a, SetUpTearDownSuiteFuncType def)
Definition gtest-internal.h:491
std::string StripTrailingSpaces(std::string str)
Definition gtest-port.h:1975
std::string StreamableToString(const T &streamable)
Definition gtest-message.h:243
const void * TypeId
Definition gtest-internal.h:401
GTEST_API_ const char kStackTraceMarker[]
Definition gtest.cc:201
void SplitString(const ::std::string &str, char delimiter, ::std::vector<::std::string > *dest)
char IsNotContainer
Definition gtest-internal.h:943
void(*)() SetUpTestSuiteFunc
Definition gtest-internal.h:474
GTEST_API_ TypeId GetTestTypeId()
Definition gtest.cc:962
typename MakeIndexSequence< sizeof...(T)>::type IndexSequenceFor
Definition gtest-internal.h:1178
const char * SkipComma(const char *str)
Definition gtest-internal.h:637
int IsContainer
Definition gtest-internal.h:932
GTEST_API_ std::string AppendUserMessage(const std::string >est_msg, const Message &user_msg)
Definition gtest.cc:2235
void(*)() TearDownTestSuiteFunc
Definition gtest-internal.h:475
bool IsSpace(char ch)
Definition gtest-port.h:1941
bool ArrayEq(const T *lhs, size_t size, const U *rhs)
Definition gtest-internal.h:1024
void CopyArray(const T *from, size_t size, U *to)
Definition gtest-internal.h:1064
Definition gmock-actions.h:151
internal::ProxyTypeList< Ts... > Types
Definition gtest-type-util.h:216
::std::string PrintToString(const T &value)
Definition gtest-printers.h:1148
Definition gtest-internal.h:477
int line
Definition gtest-internal.h:482
CodeLocation(const std::string &a_file, int a_line)
Definition gtest-internal.h:478
std::string file
Definition gtest-internal.h:481
Definition gtest-internal.h:834
const char * value
Definition gtest-internal.h:837
ConstCharPtr(const char *str)
Definition gtest-internal.h:835
Definition gtest-internal.h:661
static std::string GetName(int i)
Definition gtest-internal.h:663
Definition gtest-internal.h:1154
static R Apply(Ignore< 0 *I >..., R(*)(),...)
Definition gtest-internal.h:1186
Definition gtest-internal.h:1198
decltype(ElemFromListImpl< typename MakeIndexSequence< N >::type >::Apply( static_cast< T(*)()>(nullptr)...)) type
Definition gtest-internal.h:1199
const ElemFromList< I, T... >::type & Get() const
Definition gtest-internal.h:1236
auto Apply(F &&f) const -> decltype(std::forward< F >(f)(this->Get< Idx >()...))
Definition gtest-internal.h:1251
auto Apply(F &&f) -> decltype(std::forward< F >(f)(this->Get< Idx >()...))
Definition gtest-internal.h:1246
FlatTupleBase(FlatTupleConstructTag, Args &&... args)
Definition gtest-internal.h:1231
ElemFromList< I, T... >::type & Get()
Definition gtest-internal.h:1241
Definition gtest-internal.h:1223
Definition gtest-internal.h:1204
FlatTupleElemBase()=default
FlatTupleElemBase(FlatTupleConstructTag, Arg &&t)
Definition gtest-internal.h:1217
typename ElemFromList< I, T... >::type value_type
Definition gtest-internal.h:1214
value_type value
Definition gtest-internal.h:1219
Definition gtest-internal.h:1210
Definition gtest-internal.h:1181
Definition gtest-internal.h:1148
Definition gtest-internal.h:954
decltype(*std::declval< typename C::const_iterator >()) value_type
Definition gtest-internal.h:983
std::is_same< typename std::remove_const< typename std::remove_reference< value_type >::type >::type, C > type
Definition gtest-internal.h:984
Definition gtest-internal.h:972
Definition gtest-internal.h:997
Definition gtest-internal.h:1169
Definition gtest-internal.h:669
Provided type
Definition gtest-internal.h:670
Definition gtest-type-util.h:138
Definition gtest-internal.h:1075
Definition gtest-internal.h:1074
Definition gtest-internal.h:500
static SetUpTearDownSuiteFuncType GetTearDownCaseOrSuite(const char *filename, int line_num)
Definition gtest-internal.h:527
static SetUpTearDownSuiteFuncType GetSetUpCaseOrSuite(const char *filename, int line_num)
Definition gtest-internal.h:506
typename std::conditional< sizeof(T) !=0, ::testing::Test, void >::type Test
Definition gtest-internal.h:503
Definition gtest-internal.h:842
TrueWithString(const std::string &str)
Definition gtest-internal.h:845
std::string value
Definition gtest-internal.h:847
TrueWithString(const char *str)
Definition gtest-internal.h:844
Definition gtest-type-util.h:176