57TEST(IsXDigitTest, WorksForNarrowAscii) {
70TEST(IsXDigitTest, ReturnsFalseForNarrowNonAscii) {
75TEST(IsXDigitTest, WorksForWideAscii) {
88TEST(IsXDigitTest, ReturnsFalseForWideNonAscii) {
97 explicit Base(
int n) : member_(n) {}
98 Base(
const Base&) =
default;
107class Derived :
public Base {
112TEST(ImplicitCastTest, ConvertsPointers) {
117TEST(ImplicitCastTest, CanUseInheritance) {
120 EXPECT_EQ(derived.member(), base.member());
125 explicit Castable(
bool* converted) : converted_(converted) {}
135TEST(ImplicitCastTest, CanUseNonConstCastOperator) {
136 bool converted =
false;
145 operator Base()
const {
154TEST(ImplicitCastTest, CanUseConstCastOperatorOnConstValues) {
155 bool converted =
false;
164 : converted_(converted), const_converted_(const_converted) {}
169 operator Base()
const {
170 *const_converted_ =
true;
176 bool* const_converted_;
179TEST(ImplicitCastTest, CanSelectBetweenConstAndNonConstCasrAppropriately) {
180 bool converted =
false;
181 bool const_converted =
false;
188 const_converted =
false;
197 To(
bool* converted) { *converted =
true; }
200TEST(ImplicitCastTest, CanUseImplicitConstructor) {
201 bool converted =
false;
209#pragma GCC diagnostic push
210#pragma GCC diagnostic ignored "-Wdangling-else"
211#pragma GCC diagnostic ignored "-Wempty-body"
212#pragma GCC diagnostic ignored "-Wpragmas"
214TEST(GtestCheckSyntaxTest, BehavesLikeASingleStatement) {
216 GTEST_CHECK_(
false) <<
"This should never be executed; "
217 "It's a compilation test only.";
230#pragma GCC diagnostic pop
233TEST(GtestCheckSyntaxTest, WorksWithSwitch) {
247TEST(FormatFileLocationTest, FormatsFileLocation) {
252TEST(FormatFileLocationTest, FormatsUnknownFile) {
258TEST(FormatFileLocationTest, FormatsUknownLine) {
262TEST(FormatFileLocationTest, FormatsUknownFileAndLine) {
267TEST(FormatCompilerIndependentFileLocationTest, FormatsFileLocation) {
271TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownFile) {
276TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownLine) {
280TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownFileAndLine) {
284#if defined(GTEST_OS_LINUX) || defined(GTEST_OS_MAC) || \
285 defined(GTEST_OS_QNX) || defined(GTEST_OS_FUCHSIA) || \
286 defined(GTEST_OS_DRAGONFLY) || defined(GTEST_OS_FREEBSD) || \
287 defined(GTEST_OS_GNU_KFREEBSD) || defined(GTEST_OS_NETBSD) || \
288 defined(GTEST_OS_OPENBSD) || defined(GTEST_OS_GNU_HURD)
289void* ThreadFunc(
void* data) {
296TEST(GetThreadCountTest, ReturnsCorrectValue) {
297 size_t starting_count;
298 size_t thread_count_after_create;
299 size_t thread_count_after_join;
305 for (
int attempt = 0; attempt < 20; ++attempt) {
309 internal::Mutex mutex;
314 ASSERT_EQ(0, pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE));
316 const int status = pthread_create(&thread_id, &attr, &ThreadFunc, &mutex);
317 ASSERT_EQ(0, pthread_attr_destroy(&attr));
324 ASSERT_EQ(0, pthread_join(thread_id, &dummy));
328 if (thread_count_after_create != starting_count + 1)
continue;
333 bool thread_count_matches =
false;
334 for (
int i = 0;
i < 5; ++
i) {
336 if (thread_count_after_join == starting_count) {
337 thread_count_matches =
true;
341 std::this_thread::sleep_for(std::chrono::milliseconds(100));
345 if (!thread_count_matches)
continue;
350 EXPECT_EQ(thread_count_after_create, starting_count + 1);
351 EXPECT_EQ(thread_count_after_join, starting_count);
354TEST(GetThreadCountTest, ReturnsZeroWhenUnableToCountThreads) {
359TEST(GtestCheckDeathTest, DiesWithCorrectOutputOnFailure) {
360 const bool a_false_condition =
false;
363 "googletest-port-test\\.cc\\(\\d+\\):"
364#elif defined(GTEST_USES_POSIX_RE)
365 "googletest-port-test\\.cc:[0-9]+"
367 "googletest-port-test\\.cc:\\d+"
369 ".*a_false_condition.*Extra info.*";
375#ifdef GTEST_HAS_DEATH_TEST
377TEST(GtestCheckDeathTest, LivesSilentlyOnSuccess) {
381 ::std::cerr <<
"Success\n";
384 ::testing::ExitedWithCode(0),
"Success");
392TEST(RegexEngineSelectionTest, SelectsCorrectRegexEngine) {
395#elif GTEST_HAS_POSIX_RE
402#ifdef GTEST_USES_POSIX_RE
404template <
typename Str>
415 const RE empty(TypeParam(
""));
418 const RE simple(TypeParam(
"hello"));
421 const RE normal(TypeParam(
".*(\\w+)"));
428 {
const RE invalid(TypeParam(
"?")); },
429 "\"?\" is not a valid POSIX Extended regular expression.");
434 const RE empty(TypeParam(
""));
438 const RE re(TypeParam(
"a.*z"));
447 const RE empty(TypeParam(
""));
448 EXPECT_TRUE(RE::PartialMatch(TypeParam(
""), empty));
449 EXPECT_TRUE(RE::PartialMatch(TypeParam(
"a"), empty));
451 const RE re(TypeParam(
"a.*z"));
452 EXPECT_TRUE(RE::PartialMatch(TypeParam(
"az"), re));
453 EXPECT_TRUE(RE::PartialMatch(TypeParam(
"axyz"), re));
454 EXPECT_TRUE(RE::PartialMatch(TypeParam(
"baz"), re));
455 EXPECT_TRUE(RE::PartialMatch(TypeParam(
"azy"), re));
459#elif defined(GTEST_USES_SIMPLE_RE)
461TEST(IsInSetTest, NulCharIsNotInAnySet) {
467TEST(IsInSetTest, WorksForNonNulChars) {
475TEST(IsAsciiDigitTest, IsFalseForNonDigit) {
484TEST(IsAsciiDigitTest, IsTrueForDigit) {
491TEST(IsAsciiPunctTest, IsFalseForNonPunct) {
499TEST(IsAsciiPunctTest, IsTrueForPunct) {
500 for (
const char*
p =
"^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"; *
p;
p++) {
505TEST(IsRepeatTest, IsFalseForNonRepeatChar) {
513TEST(IsRepeatTest, IsTrueForRepeatChar) {
519TEST(IsAsciiWhiteSpaceTest, IsFalseForNonWhiteSpace) {
527TEST(IsAsciiWhiteSpaceTest, IsTrueForWhiteSpace) {
536TEST(IsAsciiWordCharTest, IsFalseForNonWordChar) {
544TEST(IsAsciiWordCharTest, IsTrueForLetter) {
551TEST(IsAsciiWordCharTest, IsTrueForDigit) {
558TEST(IsAsciiWordCharTest, IsTrueForUnderscore) {
562TEST(IsValidEscapeTest, IsFalseForNonPrintable) {
567TEST(IsValidEscapeTest, IsFalseForDigit) {
572TEST(IsValidEscapeTest, IsFalseForWhiteSpace) {
577TEST(IsValidEscapeTest, IsFalseForSomeLetter) {
582TEST(IsValidEscapeTest, IsTrueForPunct) {
593TEST(IsValidEscapeTest, IsTrueForSomeLetter) {
602TEST(AtomMatchesCharTest, EscapedPunct) {
614TEST(AtomMatchesCharTest, Escaped_d) {
623TEST(AtomMatchesCharTest, Escaped_D) {
632TEST(AtomMatchesCharTest, Escaped_s) {
643TEST(AtomMatchesCharTest, Escaped_S) {
652TEST(AtomMatchesCharTest, Escaped_w) {
664TEST(AtomMatchesCharTest, Escaped_W) {
675TEST(AtomMatchesCharTest, EscapedWhiteSpace) {
694TEST(AtomMatchesCharTest, UnescapedDot) {
703TEST(AtomMatchesCharTest, UnescapedChar) {
713TEST(ValidateRegexTest, GeneratesFailureAndReturnsFalseForInvalid) {
715 "NULL is not a valid simple regular expression");
718 "Syntax error at index 1 in simple regular expression \"a\\\": ");
720 "'\\' cannot appear at the end");
722 "'\\' cannot appear at the end");
724 "invalid escape sequence \"\\h\"");
726 "'^' can only appear at the beginning");
728 "'^' can only appear at the beginning");
730 "'$' can only appear at the end");
732 "'$' can only appear at the end");
734 "'(' is unsupported");
736 "')' is unsupported");
738 "'[' is unsupported");
740 "'{' is unsupported");
742 "'?' can only follow a repeatable token");
744 "'*' can only follow a repeatable token");
746 "'+' can only follow a repeatable token");
749TEST(ValidateRegexTest, ReturnsTrueForValid) {
757 EXPECT_TRUE(ValidateRegex(
"a\\^Z\\$\\(\\)\\|\\[\\]\\{\\}"));
760TEST(MatchRepetitionAndRegexAtHeadTest, WorksForZeroOrOne) {
761 EXPECT_FALSE(MatchRepetitionAndRegexAtHead(
false,
'a',
'?',
"a",
"ba"));
763 EXPECT_FALSE(MatchRepetitionAndRegexAtHead(
false,
'a',
'?',
"b",
"aab"));
766 EXPECT_TRUE(MatchRepetitionAndRegexAtHead(
false,
'a',
'?',
"b",
"ba"));
768 EXPECT_TRUE(MatchRepetitionAndRegexAtHead(
false,
'a',
'?',
"b",
"ab"));
769 EXPECT_TRUE(MatchRepetitionAndRegexAtHead(
false,
'#',
'?',
".",
"##"));
772TEST(MatchRepetitionAndRegexAtHeadTest, WorksForZeroOrMany) {
773 EXPECT_FALSE(MatchRepetitionAndRegexAtHead(
false,
'.',
'*',
"a$",
"baab"));
776 EXPECT_TRUE(MatchRepetitionAndRegexAtHead(
false,
'.',
'*',
"b",
"bc"));
778 EXPECT_TRUE(MatchRepetitionAndRegexAtHead(
false,
'.',
'*',
"b",
"abc"));
780 EXPECT_TRUE(MatchRepetitionAndRegexAtHead(
true,
'w',
'*',
"-",
"ab_1-g"));
783TEST(MatchRepetitionAndRegexAtHeadTest, WorksForOneOrMany) {
784 EXPECT_FALSE(MatchRepetitionAndRegexAtHead(
false,
'.',
'+',
"a$",
"baab"));
786 EXPECT_FALSE(MatchRepetitionAndRegexAtHead(
false,
'.',
'+',
"b",
"bc"));
789 EXPECT_TRUE(MatchRepetitionAndRegexAtHead(
false,
'.',
'+',
"b",
"abc"));
791 EXPECT_TRUE(MatchRepetitionAndRegexAtHead(
true,
'w',
'+',
"-",
"ab_1-g"));
794TEST(MatchRegexAtHeadTest, ReturnsTrueForEmptyRegex) {
799TEST(MatchRegexAtHeadTest, WorksWhenDollarIsInRegex) {
806TEST(MatchRegexAtHeadTest, WorksWhenRegexStartsWithEscapeSequence) {
814TEST(MatchRegexAtHeadTest, WorksWhenRegexStartsWithRepetition) {
823TEST(MatchRegexAtHeadTest, WorksWhenRegexStartsWithRepetionOfEscapeSequence) {
833TEST(MatchRegexAtHeadTest, MatchesSequentially) {
839TEST(MatchRegexAnywhereTest, ReturnsFalseWhenStringIsNull) {
843TEST(MatchRegexAnywhereTest, WorksWhenRegexStartsWithCaret) {
852TEST(MatchRegexAnywhereTest, ReturnsFalseWhenNoMatch) {
854 EXPECT_FALSE(MatchRegexAnywhere(
"a.+a",
"--aa88888888"));
857TEST(MatchRegexAnywhereTest, ReturnsTrueWhenMatchingPrefix) {
858 EXPECT_TRUE(MatchRegexAnywhere(
"\\w+",
"ab1_ - 5"));
860 EXPECT_TRUE(MatchRegexAnywhere(
"x.*ab?.*bc",
"xaaabc"));
863TEST(MatchRegexAnywhereTest, ReturnsTrueWhenMatchingNonPrefix) {
864 EXPECT_TRUE(MatchRegexAnywhere(
"\\w+",
"$$$ ab1_ - 5"));
865 EXPECT_TRUE(MatchRegexAnywhere(
"\\.+=",
"= ...="));
869TEST(RETest, ImplicitConstructorWorks) {
873 const RE simple(
"hello");
878TEST(RETest, RejectsInvalidRegex) {
880 "NULL is not a valid simple regular expression");
883 "'(' is unsupported");
886 "'?' can only follow a repeatable token");
890TEST(RETest, FullMatchWorks) {
906TEST(RETest, PartialMatchWorks) {
921#ifndef GTEST_OS_WINDOWS_MOBILE
923TEST(CaptureTest, CapturesStdout) {
925 fprintf(stdout,
"abc");
929 fprintf(stdout,
"def%cghi",
'\0');
933TEST(CaptureTest, CapturesStderr) {
935 fprintf(stderr,
"jkl");
939 fprintf(stderr,
"jkl%cmno",
'\0');
944TEST(CaptureTest, CapturesStdoutAndStderr) {
947 fprintf(stdout,
"pqr");
948 fprintf(stderr,
"stu");
953TEST(CaptureDeathTest, CannotReenterStdoutCapture) {
956 "Only one stdout capturer can exist at a time");
965TEST(ThreadLocalTest, DefaultConstructorInitializesToDefaultValues) {
973TEST(ThreadLocalTest, SingleParamConstructorInitializesToParam) {
988TEST(ThreadLocalTest, ValueDefaultContructorIsNotRequiredForParamVersion) {
993TEST(ThreadLocalTest, GetAndPointerReturnSameValue) {
999 thread_local_string.
set(
"foo");
1003TEST(ThreadLocalTest, PointerAndConstPointerReturnSameValue) {
1006 thread_local_string;
1010 thread_local_string.
set(
"foo");
1014#ifdef GTEST_IS_THREADSAFE
1016void AddTwo(
int* param) { *param += 2; }
1018TEST(ThreadWithParamTest, ConstructorExecutesThreadFunc) {
1020 ThreadWithParam<int*> thread(&AddTwo, &
i,
nullptr);
1025TEST(MutexDeathTest, AssertHeldShouldAssertWhenNotLocked) {
1037TEST(MutexTest, AssertHeldShouldNotAssertWhenLocked) {
1043class AtomicCounterWithMutex {
1045 explicit AtomicCounterWithMutex(Mutex* mutex)
1046 : value_(0), mutex_(mutex), random_(42) {}
1055#if GTEST_HAS_PTHREAD
1059 pthread_mutex_t memory_barrier_mutex;
1061 pthread_mutex_init(&memory_barrier_mutex,
nullptr));
1064 std::this_thread::sleep_for(
1065 std::chrono::milliseconds(random_.Generate(30)));
1069#elif defined(GTEST_OS_WINDOWS)
1071 volatile LONG dummy = 0;
1072 ::InterlockedIncrement(&dummy);
1073 std::this_thread::sleep_for(
1074 std::chrono::milliseconds(random_.Generate(30)));
1075 ::InterlockedIncrement(&dummy);
1077#error "Memory barrier not implemented on this platform."
1082 int value()
const {
return value_; }
1085 volatile int value_;
1086 Mutex*
const mutex_;
1090void CountingThreadFunc(pair<AtomicCounterWithMutex*, int> param) {
1091 for (
int i = 0;
i < param.second; ++
i) param.first->Increment();
1095TEST(MutexTest, OnlyOneThreadCanLockAtATime) {
1097 AtomicCounterWithMutex locked_counter(&mutex);
1099 typedef ThreadWithParam<pair<AtomicCounterWithMutex*, int> > ThreadType;
1100 const int kCycleCount = 20;
1101 const int kThreadCount = 7;
1102 std::unique_ptr<ThreadType> counting_threads[kThreadCount];
1103 Notification threads_can_start;
1106 for (
int i = 0;
i < kThreadCount; ++
i) {
1107 counting_threads[
i] = std::make_unique<ThreadType>(
1108 &CountingThreadFunc, make_pair(&locked_counter, kCycleCount),
1109 &threads_can_start);
1111 threads_can_start.Notify();
1112 for (
int i = 0;
i < kThreadCount; ++
i) counting_threads[
i]->Join();
1118 EXPECT_EQ(kCycleCount * kThreadCount, locked_counter.value());
1121template <
typename T>
1122void RunFromThread(
void(func)(
T),
T param) {
1123 ThreadWithParam<T> thread(func, param,
nullptr);
1127void RetrieveThreadLocalValue(
1128 pair<ThreadLocal<std::string>*, std::string*> param) {
1129 *param.second = param.first->get();
1132TEST(ThreadLocalTest, ParameterizedConstructorSetsDefault) {
1133 ThreadLocal<std::string> thread_local_string(
"foo");
1134 EXPECT_STREQ(
"foo", thread_local_string.get().c_str());
1136 thread_local_string.set(
"bar");
1137 EXPECT_STREQ(
"bar", thread_local_string.get().c_str());
1140 RunFromThread(&RetrieveThreadLocalValue,
1141 make_pair(&thread_local_string, &result));
1147class DestructorCall {
1151#ifdef GTEST_OS_WINDOWS
1152 wait_event_.Reset(::CreateEvent(NULL, TRUE, FALSE, NULL));
1157 bool CheckDestroyed()
const {
1158#ifdef GTEST_OS_WINDOWS
1159 if (::WaitForSingleObject(wait_event_.Get(), 1000) != WAIT_OBJECT_0)
1165 void ReportDestroyed() {
1167#ifdef GTEST_OS_WINDOWS
1168 ::SetEvent(wait_event_.Get());
1172 static std::vector<DestructorCall*>& List() {
return *list_; }
1174 static void ResetList() {
1175 for (
size_t i = 0;
i < list_->size(); ++
i) {
1176 delete list_->at(
i);
1183#ifdef GTEST_OS_WINDOWS
1184 AutoHandle wait_event_;
1186 static std::vector<DestructorCall*>*
const list_;
1188 DestructorCall(
const DestructorCall&) =
delete;
1189 DestructorCall& operator=(
const DestructorCall&) =
delete;
1192std::vector<DestructorCall*>*
const DestructorCall::list_ =
1193 new std::vector<DestructorCall*>;
1197class DestructorTracker {
1199 DestructorTracker() : index_(GetNewIndex()) {}
1200 DestructorTracker(
const DestructorTracker& )
1201 : index_(GetNewIndex()) {}
1202 ~DestructorTracker() {
1205 DestructorCall::List()[index_]->ReportDestroyed();
1209 static size_t GetNewIndex() {
1210 DestructorCall::List().push_back(
new DestructorCall);
1211 return DestructorCall::List().size() - 1;
1213 const size_t index_;
1216typedef ThreadLocal<DestructorTracker>* ThreadParam;
1218void CallThreadLocalGet(ThreadParam thread_local_param) {
1219 thread_local_param->get();
1224TEST(ThreadLocalTest, DestroysManagedObjectForOwnThreadWhenDying) {
1225 DestructorCall::ResetList();
1228 ThreadLocal<DestructorTracker> thread_local_tracker;
1229 ASSERT_EQ(0U, DestructorCall::List().size());
1232 thread_local_tracker.get();
1233 ASSERT_EQ(1U, DestructorCall::List().size());
1234 ASSERT_FALSE(DestructorCall::List()[0]->CheckDestroyed());
1238 ASSERT_EQ(1U, DestructorCall::List().size());
1239 EXPECT_TRUE(DestructorCall::List()[0]->CheckDestroyed());
1241 DestructorCall::ResetList();
1246TEST(ThreadLocalTest, DestroysManagedObjectAtThreadExit) {
1247 DestructorCall::ResetList();
1250 ThreadLocal<DestructorTracker> thread_local_tracker;
1251 ASSERT_EQ(0U, DestructorCall::List().size());
1254 ThreadWithParam<ThreadParam> thread(&CallThreadLocalGet,
1255 &thread_local_tracker,
nullptr);
1260 ASSERT_EQ(1U, DestructorCall::List().size());
1264 ASSERT_EQ(1U, DestructorCall::List().size());
1265 EXPECT_TRUE(DestructorCall::List()[0]->CheckDestroyed());
1267 DestructorCall::ResetList();
1270TEST(ThreadLocalTest, ThreadLocalMutationsAffectOnlyCurrentThread) {
1271 ThreadLocal<std::string> thread_local_string;
1272 thread_local_string.set(
"Foo");
1273 EXPECT_STREQ(
"Foo", thread_local_string.get().c_str());
1276 RunFromThread(&RetrieveThreadLocalValue,
1277 make_pair(&thread_local_string, &result));
1283#ifdef GTEST_OS_WINDOWS
1284TEST(WindowsTypesTest, HANDLEIsVoidStar) {
1288#if defined(GTEST_OS_WINDOWS_MINGW) && !defined(__MINGW64_VERSION_MAJOR)
1289TEST(WindowsTypesTest, _CRITICAL_SECTIONIs_CRITICAL_SECTION) {
1293TEST(WindowsTypesTest, CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION) {
Base(int n)
Definition googletest-port-test.cc:97
Base()
Definition googletest-port-test.cc:96
Base(const Base &)=default
int member()
Definition googletest-port-test.cc:101
Base & operator=(const Base &)=default
Definition googletest-port-test.cc:123
Castable(bool *converted)
Definition googletest-port-test.cc:125
Definition googletest-port-test.cc:161
ConstAndNonConstCastable(bool *converted, bool *const_converted)
Definition googletest-port-test.cc:163
Definition googletest-port-test.cc:142
ConstCastable(bool *converted)
Definition googletest-port-test.cc:144
Derived(int n)
Definition googletest-port-test.cc:109
Definition gtest-port.h:1869
void Unlock()
Definition gtest-port.h:1873
void Lock()
Definition gtest-port.h:1872
Definition googletest-port-test.cc:982
NoDefaultConstructor(const char *)
Definition googletest-port-test.cc:984
NoDefaultConstructor(const NoDefaultConstructor &)=default
Definition gtest-port.h:1895
T * pointer()
Definition gtest-port.h:1899
void set(const T &value)
Definition gtest-port.h:1902
const T & get() const
Definition gtest-port.h:1901
Definition googletest-port-test.cc:195
To(bool *converted)
Definition googletest-port-test.cc:197
int value
Definition gmock-actions_test.cc:1714
int i
Definition gmock-matchers-comparisons_test.cc:603
const char * p
Definition gmock-matchers-containers_test.cc:379
#define EXPECT_DEATH_IF_SUPPORTED(statement, regex)
Definition gtest-death-test.h:337
#define GTEST_CHECK_POSIX_SUCCESS_(posix_call)
Definition gtest-port.h:1091
#define GTEST_CHECK_(condition)
Definition gtest-port.h:1078
#define GTEST_USES_POSIX_RE
Definition gtest-port.h:438
#define EXPECT_NONFATAL_FAILURE(statement, substr)
Definition gtest-spi.h:217
#define TYPED_TEST(CaseName, TestName)
Definition gtest-typed-test.h:197
#define TYPED_TEST_SUITE(CaseName, Types,...)
Definition gtest-typed-test.h:191
#define ASSERT_EQ(val1, val2)
Definition gtest.h:1898
#define EXPECT_EQ(val1, val2)
Definition gtest.h:1868
#define ASSERT_FALSE(condition)
Definition gtest.h:1819
#define TEST(test_suite_name, test_name)
Definition gtest.h:2176
#define EXPECT_TRUE(condition)
Definition gtest.h:1807
#define EXPECT_STREQ(s1, s2)
Definition gtest.h:1937
#define EXPECT_FALSE(condition)
Definition gtest.h:1811
#define EXPECT_PRED1(pred, v1)
Definition gtest_pred_impl.h:110
#define EXPECT_PRED_FORMAT2(pred_format, v1, v2)
Definition gtest_pred_impl.h:143
Definition googletest-output-test_.cc:485
std::mutex Mutex
Definition lock.hpp:10
GTestMutexLock MutexLock
Definition gtest-port.h:1892
GTEST_API_::std::string FormatCompilerIndependentFileLocation(const char *file, int line)
Definition gtest-port.cc:995
GTEST_API_::std::string FormatFileLocation(const char *file, int line)
Definition gtest-port.cc:977
GTEST_API_ std::string GetCapturedStderr()
GTEST_API_ size_t GetThreadCount()
Definition gtest-port.cc:265
bool AlwaysFalse()
Definition gtest-internal.h:829
GTEST_API_ void CaptureStderr()
GTEST_API_ bool AlwaysTrue()
Definition gtest.cc:6312
To ImplicitCast_(To x)
Definition gtest-port.h:1140
bool IsXDigit(char ch)
Definition gtest-port.h:1947
GTEST_API_ void CaptureStdout()
GTEST_API_ std::string GetCapturedStdout()
Definition gmock-actions.h:151
constexpr bool StaticAssertTypeEq() noexcept
Definition gtest.h:2139
Definition gtest-type-util.h:190