37 #ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_ 38 #define GTEST_SRC_GTEST_INTERNAL_INL_H_ 42 #if !GTEST_IMPLEMENTATION_ 44 #error "gtest-internal-inl.h is part of Google Test's internal implementation." 45 #error "It must not be included except by Google Test itself." 46 #endif // GTEST_IMPLEMENTATION_ 63 #endif // GTEST_OS_WINDOWS 124 const unsigned int raw_seed = (random_seed_flag == 0) ?
126 static_cast<unsigned int>(random_seed_flag);
130 const int normalized_seed =
131 static_cast<int>((raw_seed - 1
U) %
132 static_cast<unsigned int>(kMaxRandomSeed)) + 1;
133 return normalized_seed;
141 <<
"Invalid random seed " << seed <<
" - must be in [1, " 142 << kMaxRandomSeed <<
"].";
143 const int next_seed = seed + 1;
144 return (next_seed > kMaxRandomSeed) ? 1 : next_seed;
153 also_run_disabled_tests_ =
GTEST_FLAG(also_run_disabled_tests);
154 break_on_failure_ =
GTEST_FLAG(break_on_failure);
155 catch_exceptions_ =
GTEST_FLAG(catch_exceptions);
157 death_test_style_ =
GTEST_FLAG(death_test_style);
158 death_test_use_fork_ =
GTEST_FLAG(death_test_use_fork);
160 internal_run_death_test_ =
GTEST_FLAG(internal_run_death_test);
167 stack_trace_depth_ =
GTEST_FLAG(stack_trace_depth);
168 throw_on_failure_ =
GTEST_FLAG(throw_on_failure);
173 GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;
174 GTEST_FLAG(break_on_failure) = break_on_failure_;
175 GTEST_FLAG(catch_exceptions) = catch_exceptions_;
177 GTEST_FLAG(death_test_style) = death_test_style_;
178 GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
180 GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
187 GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;
188 GTEST_FLAG(throw_on_failure) = throw_on_failure_;
192 bool also_run_disabled_tests_;
193 bool break_on_failure_;
194 bool catch_exceptions_;
197 bool death_test_use_fork_;
199 String internal_run_death_test_;
207 bool throw_on_failure_;
248 const char* shard_index_str,
249 bool in_subprocess_for_death_test);
261 int total_shards,
int shard_index,
int test_id);
267 template <
class Container,
typename Predicate>
268 inline int CountIf(
const Container&
c, Predicate predicate) {
269 return static_cast<int>(
std::count_if(c.begin(), c.end(), predicate));
273 template <
class Container,
typename Functor>
280 template <
typename E>
282 return (i < 0 || i >= static_cast<int>(v.size())) ? default_value : v[
i];
289 template <
typename E>
292 const int size =
static_cast<int>(v->size());
294 <<
"Invalid shuffle range start " << begin <<
": must be in range [0, " 297 <<
"Invalid shuffle range finish " << end <<
": must be in range [" 298 << begin <<
", " << size <<
"].";
302 for (
int range_width = end - begin; range_width >= 2; range_width--) {
303 const int last_in_range = begin + range_width - 1;
304 const int selected = begin + random->
Generate(range_width);
305 std::swap((*v)[selected], (*v)[last_in_range]);
310 template <
typename E>
312 ShuffleRange(random, 0, static_cast<int>(v->size()), v);
317 template <
typename T>
318 static void Delete(
T*
x) {
335 return String(test_property.key()).Compare(key_) == 0;
344 TestInfoImpl(TestInfo* parent,
const char* test_case_name,
345 const char*
name,
const char* test_case_comment,
346 const char* comment,
TypeId fixture_class_id,
372 const char*
name()
const {
return name_.c_str(); }
378 const char*
comment()
const {
return comment_.c_str(); }
384 TestResult*
result() {
return &result_; }
385 const TestResult*
result()
const {
return &result_; }
396 test_info->impl()->ClearResult();
401 TestInfo*
const parent_;
402 const String test_case_name_;
404 const String test_case_comment_;
406 const TypeId fixture_class_id_;
409 bool matches_filter_;
436 static String GetOutputFormat();
441 static String GetAbsolutePathToOutputFile();
450 static bool PatternMatchesString(
const char *pattern,
const char *str);
454 static bool FilterMatchesTest(
const String &test_case_name,
463 static int GTestShouldProcessSEH(DWORD exception_code);
464 #endif // GTEST_OS_WINDOWS 487 virtual String CurrentStackTrace(
int max_depth,
int skip_count) = 0;
492 virtual void UponLeavingGTest() = 0;
502 virtual String CurrentStackTrace(
int max_depth,
int skip_count);
503 virtual void UponLeavingGTest();
580 void SetGlobalTestPartResultReporter(
587 void SetTestPartResultReporterForCurrentThread(
591 int successful_test_case_count()
const;
594 int failed_test_case_count()
const;
597 int total_test_case_count()
const;
601 int test_case_to_run_count()
const;
604 int successful_test_count()
const;
607 int failed_test_count()
const;
610 int disabled_test_count()
const;
613 int total_test_count()
const;
616 int test_to_run_count()
const;
622 bool Passed()
const {
return !Failed(); }
627 return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed();
634 return index < 0 ?
NULL : test_cases_[
i];
641 return index < 0 ?
NULL : test_cases_[
index];
649 TestResult* current_test_result();
676 String CurrentOsStackTraceExceptTop(
int skip_count);
686 TestCase* GetTestCase(
const char* test_case_name,
700 TestInfo * test_info) {
711 <<
"Failed to get the current working directory.";
714 GetTestCase(test_info->test_case_name(),
715 test_info->test_case_comment(),
717 tear_down_tc)->AddTestInfo(test_info);
720 #if GTEST_HAS_PARAM_TEST 723 internal::ParameterizedTestCaseRegistry& parameterized_test_registry() {
724 return parameterized_test_registry_;
726 #endif // GTEST_HAS_PARAM_TEST 730 current_test_case_ = a_current_test_case;
737 current_test_info_ = a_current_test_info;
746 void RegisterParameterizedTests();
758 ForEach(test_cases_, TestCase::ClearTestCaseResult);
759 ad_hoc_test_result_.Clear();
764 IGNORE_SHARDING_PROTOCOL
776 void ListTestsMatchingFilter();
788 return *(gtest_trace_stack_.pointer());
791 return gtest_trace_stack_.get();
794 #if GTEST_HAS_DEATH_TEST 795 void InitDeathTestSubprocessControlInfo() {
796 internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());
802 const InternalRunDeathTestFlag* internal_run_death_test_flag()
const {
803 return internal_run_death_test_flag_.get();
807 internal::DeathTestFactory* death_test_factory() {
808 return death_test_factory_.get();
811 void SuppressTestEventsIfInSubprocess();
813 friend class ReplaceDeathTestFactory;
814 #endif // GTEST_HAS_DEATH_TEST 818 void ConfigureXmlOutput();
825 void PostFlagParsingInit();
838 void UnshuffleTests();
841 friend class ::testing::UnitTest;
853 default_per_thread_test_part_result_reporter_;
863 per_thread_test_part_result_reporter_;
867 std::vector<Environment*> environments_;
871 std::vector<TestCase*> test_cases_;
877 std::vector<int> test_case_indices_;
879 #if GTEST_HAS_PARAM_TEST 882 internal::ParameterizedTestCaseRegistry parameterized_test_registry_;
885 bool parameterized_tests_registered_;
886 #endif // GTEST_HAS_PARAM_TEST 889 int last_death_test_case_;
901 TestInfo* current_test_info_;
911 TestResult ad_hoc_test_result_;
915 TestEventListeners listeners_;
924 bool post_flag_parse_init_performed_;
935 #if GTEST_HAS_DEATH_TEST 940 #endif // GTEST_HAS_DEATH_TEST 951 return UnitTest::GetInstance()->impl();
967 bool escaped,
char ch,
char repeat,
const char* regex,
const char* str);
975 #if GTEST_HAS_DEATH_TEST 979 String GetLastErrnoDescription();
985 AutoHandle() :
handle_(INVALID_HANDLE_VALUE) {}
988 ~AutoHandle() {
Reset(); }
992 void Reset(HANDLE handle) {
994 if (
handle_ != INVALID_HANDLE_VALUE)
1005 #endif // GTEST_OS_WINDOWS 1011 template <
typename Integer>
1016 if (str.empty() || !isdigit(str[0])) {
1024 #if GTEST_OS_WINDOWS && !defined(__GNUC__) 1026 typedef unsigned __int64 BiggestConvertible;
1027 const BiggestConvertible parsed = _strtoui64(str.c_str(), &
end, 10);
1029 typedef unsigned long long BiggestConvertible;
1030 const BiggestConvertible parsed =
strtoull(str.c_str(), &
end, 10);
1031 #endif // GTEST_OS_WINDOWS && !defined(__GNUC__) 1032 const bool parse_success = *end ==
'\0' && errno == 0;
1038 const Integer
result =
static_cast<Integer
>(parsed);
1039 if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {
1045 #endif // GTEST_HAS_DEATH_TEST 1056 const TestProperty& property) {
1057 test_result->RecordProperty(property);
1061 test_result->ClearTestPartResults();
1065 const TestResult& test_result) {
1066 return test_result.test_part_results();
1073 #endif // GTEST_SRC_GTEST_INTERNAL_INL_H_ void set_current_test_info(TestInfo *a_current_test_info)
Definition: gtest-internal-inl.h:736
GTEST_API_ bool g_help_flag
Definition: gtest.cc:174
class UnitTestImpl * GetUnitTestImpl()
Definition: gtest-internal-inl.h:950
std::vector< TraceInfo > & gtest_trace_stack()
Definition: gtest-internal-inl.h:787
Definition: gtest-internal-inl.h:564
const char kColorFlag[]
Definition: gtest-internal-inl.h:87
const char kAlsoRunDisabledTestsFlag[]
Definition: gtest-internal-inl.h:84
Definition: gtest-test-part.h:143
static void ClearTestPartResults(TestResult *test_result)
Definition: gtest-internal-inl.h:1060
int GetRandomSeedFromFlag(Int32 random_seed_flag)
Definition: gtest-internal-inl.h:123
void Reset()
Definition: metrics_default.cc:285
GTEST_API_ bool IsRepeat(char ch)
EGLStreamKHR EGLint EGLint EGLint size
Definition: eglext.h:984
Definition: testutils.h:40
E GetElementOr(const std::vector< E > &v, int i, E default_value)
Definition: gtest-internal-inl.h:281
Definition: gtest-filepath.h:59
TestInfo * current_test_info()
Definition: gtest-internal-inl.h:779
uint32_t flag
Definition: ssl_lib.c:2732
int c
Definition: cpp_unittests.cpp:275
def Run(command)
Definition: gtest_break_on_failure_unittest.py:86
GLuint GLuint end
Definition: gl2ext.h:323
TypeId fixture_class_id() const
Definition: gtest-internal-inl.h:381
class GTEST_API_ testing::internal::ScopedTrace GTEST_ATTRIBUTE_UNUSED_
long seed
Definition: float-mm.c:84
int GetNextRandomSeed(int seed)
Definition: gtest-internal-inl.h:139
OsStackTraceGetterInterface()
Definition: gtest-internal-inl.h:478
GTEST_API_ bool IsWordChar(char ch)
GTEST_API_ bool ValidateRegex(const char *regex)
GTEST_API_ bool ShouldUseColor(bool stdout_is_tty)
Definition: gtest.cc:2580
Definition: gtest-internal-inl.h:546
std::vector< Environment * > & environments()
Definition: gtest-internal-inl.h:784
Functor for_each(Functor f)
Definition: Brigand.h:1335
GTEST_API_ bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id)
Definition: gtest.cc:4154
void set_matches_filter(bool matches)
Definition: gtest-internal-inl.h:366
void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo *test_info)
Definition: gtest-internal-inl.h:698
void ClearResult()
Definition: gtest-internal-inl.h:757
double U(int64_t x, double alpha)
Definition: metric_recorder.cc:414
Definition: gtest-internal-inl.h:1053
const char kListTestsFlag[]
Definition: gtest-internal-inl.h:89
GTEST_DECLARE_bool_(also_run_disabled_tests)
GTEST_API_ char * CodePointToUtf8(UInt32 code_point, char *str)
Definition: gtest.cc:1456
GTEST_API_ bool IsPunct(char ch)
GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms)
Definition: gtest.cc:3183
typename lazy::count_if< List, Pred >::type count_if
Definition: Brigand.h:529
Definition: gtest-internal-inl.h:763
Definition: gtest-internal-inl.h:530
void set_should_run(bool should)
Definition: gtest-internal-inl.h:354
void ClearResult()
Definition: gtest-internal-inl.h:392
#define GTEST_API_
Definition: gtest-port.h:615
GTEST_API_ bool ShouldShard(const char *total_shards_str, const char *shard_index_str, bool in_subprocess_for_death_test)
Definition: gtest.cc:4091
const char * name() const
Definition: gtest-internal-inl.h:372
const TestCase * GetTestCase(int i) const
Definition: gtest-internal-inl.h:632
virtual ~OsStackTraceGetterInterface()
Definition: gtest-internal-inl.h:479
Definition: gtest-test-part.h:47
GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch)
TypeWithSize< 8 >::Int TimeInMillis
Definition: gtest-port.h:1494
Definition: gtest-internal-inl.h:149
GTEST_API_ bool MatchRegexAnywhere(const char *regex, const char *str)
bool should_run() const
Definition: gtest-internal-inl.h:351
static const std::vector< testing::TestPartResult > & test_part_results(const TestResult &test_result)
Definition: gtest-internal-inl.h:1064
#define GTEST_FLAG(name)
Definition: gtest-port.h:1499
int line
Definition: gtest-internal-inl.h:524
void set_is_disabled(bool is)
Definition: gtest-internal-inl.h:360
TypeWithSize< 4 >::UInt UInt32
Definition: gtest-port.h:1491
const char kRandomSeedFlag[]
Definition: gtest-internal-inl.h:92
const void * TypeId
Definition: gtest-internal.h:490
TypeWithSize< 4 >::Int Int32
Definition: gtest-port.h:1490
#define strtoull
Definition: windows_port.h:121
TestResult * result()
Definition: gtest-internal-inl.h:384
TestSubObjConstructor T
Definition: TestTypedefs.idl:84
EGLSurface EGLint x
Definition: eglext.h:950
GTEST_API_ bool IsDigit(char ch)
rtc::scoped_refptr< PeerConnectionFactoryInterface > factory(webrtc::CreatePeerConnectionFactory(network_thread.get(), worker_thread.get(), signaling_thread.get(), nullptr, encoder_factory, decoder_factory))
Definition: peerconnection_jni.cc:1838
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: gl2ext.h:818
#define GTEST_CHECK_(condition)
Definition: gtest-port.h:810
int RunAllTests()
Definition: gtest_output_test_.cc:314
GLuint index
Definition: gl2.h:383
GLuint color
Definition: gl2ext.h:1371
EGLAttrib * value
Definition: eglext.h:120
~GTestFlagSaver()
Definition: gtest-internal-inl.h:172
GTEST_API_ const TypeId kTestTypeIdInGoogleTest
Definition: gtest.cc:576
const char * file
Definition: gtest-internal-inl.h:523
void(* SetUpTestCaseFunc)()
Definition: gtest-internal.h:576
Definition: gtest-string.h:81
bool Passed() const
Definition: gtest-internal-inl.h:622
void(* TearDownTestCaseFunc)()
Definition: gtest-internal.h:577
const int kMaxRandomSeed
Definition: gtest-internal-inl.h:99
GTEST_API_ bool MatchRegexAtHead(const char *regex, const char *str)
EGLImageKHR EGLint * name
Definition: eglext.h:851
ReactionToSharding
Definition: gtest-internal-inl.h:762
const char * argv[]
Definition: DumpRenderTree.cpp:1631
String message
Definition: gtest-internal-inl.h:525
DOMException E
Definition: TestTypedefs.idl:86
GTEST_API_ FilePath GetCurrentExecutableName()
Definition: gtest.cc:359
static const char *const kElidedFramesMarker
Definition: gtest-internal-inl.h:507
GTEST_API_ TimeInMillis GetTimeInMillis()
Definition: gtest.cc:743
const char * comment() const
Definition: gtest-internal-inl.h:378
internal::Random * random()
Definition: gtest-internal-inl.h:831
GTEST_API_ bool MatchRepetitionAndRegexAtHead(bool escaped, char ch, char repeat, const char *regex, const char *str)
const char kBreakOnFailureFlag[]
Definition: gtest-internal-inl.h:85
const char kRepeatFlag[]
Definition: gtest-internal-inl.h:93
const char * test_case_name() const
Definition: gtest-internal-inl.h:369
GTEST_API_ String WideStringToUtf8(const wchar_t *str, int num_chars)
Definition: gtest.cc:1525
const GLfloat * v
Definition: gl2.h:514
const char kCatchExceptionsFlag[]
Definition: gtest-internal-inl.h:86
const TestCase * current_test_case() const
Definition: gtest-internal-inl.h:778
void set_current_test_case(TestCase *a_current_test_case)
Definition: gtest-internal-inl.h:729
void ShuffleRange(internal::Random *random, int begin, int end, std::vector< E > *v)
Definition: gtest-internal-inl.h:290
OsStackTraceGetter()
Definition: gtest-internal-inl.h:501
TestEventListeners * listeners()
Definition: gtest-internal-inl.h:645
str
Definition: make-dist.py:305
GLsizei const GLchar *const * string
Definition: gl2.h:479
Definition: document.h:393
result
Definition: target-blank-opener-post-window.php:5
boolean repeat
Definition: KeyboardEvent.idl:63
int CountIf(const Container &c, Predicate predicate)
Definition: gtest-internal-inl.h:268
GTEST_API_ bool IsWhiteSpace(char ch)
bool matches_filter() const
Definition: gtest-internal-inl.h:363
Definition: gtest-internal-inl.h:325
const char kFilterFlag[]
Definition: gtest-internal-inl.h:88
static void ClearTestResult(TestInfo *test_info)
Definition: gtest-internal-inl.h:395
bool is(Ref< ArgType > &source)
Definition: Ref.h:220
TestPropertyKeyIs(const char *key)
Definition: gtest-internal-inl.h:330
Definition: gtest-internal-inl.h:431
FilePath original_working_dir_
Definition: gtest-options_test.cc:140
for i
Definition: complexityMeasures.m:24
bool Failed() const
Definition: gtest-internal-inl.h:626
UInt32 Generate(UInt32 range)
Definition: gtest.cc:273
GTEST_API_ void ParseGoogleTestFlagsOnly(int *argc, char **argv)
Definition: gtest.cc:4650
void Shuffle(internal::Random *random, std::vector< E > *v)
Definition: gtest-internal-inl.h:311
const char kStackTraceDepthFlag[]
Definition: gtest-internal-inl.h:95
bool is_disabled() const
Definition: gtest-internal-inl.h:357
const char kPrintTimeFlag[]
Definition: gtest-internal-inl.h:91
Definition: gtest-port.h:1228
const std::vector< TraceInfo > & gtest_trace_stack() const
Definition: gtest-internal-inl.h:790
#define NULL
Definition: common_types.h:41
Definition: gtest-internal-inl.h:499
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)
Definition: gtest-port.h:573
TimeInMillis elapsed_time() const
Definition: gtest-internal-inl.h:619
const char * test_case_comment() const
Definition: gtest-internal-inl.h:375
static FilePath GetCurrentDir()
Definition: gtest-filepath.cc:100
int random_seed() const
Definition: gtest-internal-inl.h:828
Definition: gtest-internal-inl.h:342
Definition: gtest-internal-inl.h:476
TestCase
Definition: gtest_test_utils.py:62
Definition: gtest-port.h:1209
GTEST_API_ bool IsValidEscape(char ch)
const char kThrowOnFailureFlag[]
Definition: gtest-internal-inl.h:96
void ForEach(const Container &c, Functor functor)
Definition: gtest-internal-inl.h:274
Definition: gtest-internal.h:525
GTEST_API_ bool IsInSet(char ch, const char *str)
Definition: gtest-port.h:659
GTEST_API_ Int32 Int32FromEnvOrDie(const char *env_var, Int32 default_val)
Definition: gtest.cc:4136
EGLImageKHR EGLint EGLint * handle
Definition: eglext.h:851
CFArrayRef CFTypeRef key
Definition: AVFoundationCFSoftLinking.h:129
void WriteToShardStatusFileIfNeeded()
Definition: gtest.cc:4069
const char kShuffleFlag[]
Definition: gtest-internal-inl.h:94
TestCase * GetMutableTestCase(int i)
Definition: gtest-internal-inl.h:639
void swap(optional< T > &x, optional< T > &y) __NOEXCEPT_(__NOEXCEPT_(x.swap(y)))
Definition: Optional.h:1047
const TestResult * ad_hoc_test_result() const
Definition: gtest-internal-inl.h:652
const char kOutputFlag[]
Definition: gtest-internal-inl.h:90
const TestResult * result() const
Definition: gtest-internal-inl.h:385
const TestInfo * current_test_info() const
Definition: gtest-internal-inl.h:780
Definition: GetPutInfo.h:232
bool operator()(const TestProperty &test_property) const
Definition: gtest-internal-inl.h:334
Definition: gtest-internal.h:770
void * handle_
Definition: system_delay_unittest.cc:41
GTEST_API_ bool ParseInt32Flag(const char *str, const char *flag, Int32 *value)
Definition: gtest.cc:4429
static void RecordProperty(TestResult *test_result, const TestProperty &property)
Definition: gtest-internal-inl.h:1055
Definition: gtest-internal-inl.h:522
GTestFlagSaver()
Definition: gtest-internal-inl.h:152