56#define GTEST_IMPLEMENTATION_ 1
58#undef GTEST_IMPLEMENTATION_
73TEST(JoinAsKeyValueTupleTest, JoinsEmptyTuple) {
77TEST(JoinAsKeyValueTupleTest, JoinsOneTuple) {
81TEST(JoinAsKeyValueTupleTest, JoinsTwoTuple) {
85TEST(JoinAsKeyValueTupleTest, JoinsTenTuple) {
87 "(a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10)",
88 JoinAsKeyValueTuple({
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j"},
89 {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"}));
92TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsNoWord) {
98TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsDigits) {
105TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsCamelCaseWords) {
113TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContains_SeparatedWords) {
120TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameIsMixture) {
126TEST(GetRawPointerTest, WorksForSmartPointers) {
127 const char*
const raw_p1 =
new const char(
'a');
128 const std::unique_ptr<const char> p1(raw_p1);
130 double*
const raw_p2 =
new double(2.5);
131 const std::shared_ptr<double> p2(raw_p2);
135TEST(GetRawPointerTest, WorksForRawPointers) {
142TEST(GetRawPointerTest, WorksForStdReferenceWrapper) {
151class Derived :
public Base {};
157TEST(KindOfTest, Integer) {
171#if defined(GTEST_OS_LINUX) || defined(GTEST_OS_MAC) || defined(GTEST_OS_CYGWIN)
177TEST(KindOfTest, FloatingPoint) {
183TEST(KindOfTest, Other) {
191TEST(LosslessArithmeticConvertibleTest, BoolToBool) {
192 EXPECT_TRUE((LosslessArithmeticConvertible<bool, bool>::value));
195TEST(LosslessArithmeticConvertibleTest, BoolToInteger) {
196 EXPECT_TRUE((LosslessArithmeticConvertible<bool, char>::value));
197 EXPECT_TRUE((LosslessArithmeticConvertible<bool, int>::value));
199 (LosslessArithmeticConvertible<bool, unsigned long>::value));
202TEST(LosslessArithmeticConvertibleTest, BoolToFloatingPoint) {
203 EXPECT_TRUE((LosslessArithmeticConvertible<bool, float>::value));
204 EXPECT_TRUE((LosslessArithmeticConvertible<bool, double>::value));
207TEST(LosslessArithmeticConvertibleTest, IntegerToBool) {
208 EXPECT_FALSE((LosslessArithmeticConvertible<unsigned char, bool>::value));
209 EXPECT_FALSE((LosslessArithmeticConvertible<int, bool>::value));
212TEST(LosslessArithmeticConvertibleTest, IntegerToInteger) {
214 EXPECT_TRUE((LosslessArithmeticConvertible<unsigned char, int>::value));
222 (LosslessArithmeticConvertible<short, uint64_t>::value));
228 (LosslessArithmeticConvertible<unsigned char, unsigned char>::value));
229 EXPECT_TRUE((LosslessArithmeticConvertible<int, int>::value));
230 EXPECT_TRUE((LosslessArithmeticConvertible<wchar_t, wchar_t>::value));
236 (LosslessArithmeticConvertible<unsigned char, signed char>::value));
237 EXPECT_FALSE((LosslessArithmeticConvertible<int, unsigned int>::value));
238 EXPECT_FALSE((LosslessArithmeticConvertible<uint64_t, int64_t>::value));
241 EXPECT_FALSE((LosslessArithmeticConvertible<long, char>::value));
242 EXPECT_FALSE((LosslessArithmeticConvertible<int, signed char>::value));
243 EXPECT_FALSE((LosslessArithmeticConvertible<int64_t, unsigned int>::value));
246TEST(LosslessArithmeticConvertibleTest, IntegerToFloatingPoint) {
249 EXPECT_FALSE((LosslessArithmeticConvertible<char, float>::value));
250 EXPECT_FALSE((LosslessArithmeticConvertible<int, double>::value));
252 (LosslessArithmeticConvertible<short, long double>::value));
255TEST(LosslessArithmeticConvertibleTest, FloatingPointToBool) {
256 EXPECT_FALSE((LosslessArithmeticConvertible<float, bool>::value));
257 EXPECT_FALSE((LosslessArithmeticConvertible<double, bool>::value));
260TEST(LosslessArithmeticConvertibleTest, FloatingPointToInteger) {
261 EXPECT_FALSE((LosslessArithmeticConvertible<float, long>::value));
262 EXPECT_FALSE((LosslessArithmeticConvertible<double, int64_t>::value));
263 EXPECT_FALSE((LosslessArithmeticConvertible<long double, int>::value));
266TEST(LosslessArithmeticConvertibleTest, FloatingPointToFloatingPoint) {
268 EXPECT_TRUE((LosslessArithmeticConvertible<float, double>::value));
269 EXPECT_TRUE((LosslessArithmeticConvertible<float, long double>::value));
270 EXPECT_TRUE((LosslessArithmeticConvertible<double, long double>::value));
273 EXPECT_TRUE((LosslessArithmeticConvertible<float, float>::value));
274 EXPECT_TRUE((LosslessArithmeticConvertible<double, double>::value));
277 EXPECT_FALSE((LosslessArithmeticConvertible<double, float>::value));
279 if (sizeof(
double) == sizeof(
long double)) {
285 EXPECT_FALSE((LosslessArithmeticConvertible<long double, double>::value));
291TEST(TupleMatchesTest, WorksForSize0) {
292 std::tuple<> matchers;
298TEST(TupleMatchesTest, WorksForSize1) {
299 std::tuple<Matcher<int>> matchers(Eq(1));
300 std::tuple<int> values1(1), values2(2);
306TEST(TupleMatchesTest, WorksForSize2) {
307 std::tuple<Matcher<int>, Matcher<char>> matchers(Eq(1), Eq(
'a'));
308 std::tuple<int, char> values1(1,
'a'), values2(1,
'b'), values3(2,
'a'),
317TEST(TupleMatchesTest, WorksForSize5) {
318 std::tuple<Matcher<int>, Matcher<char>, Matcher<bool>,
320 Matcher<std::string>>
321 matchers(Eq(1), Eq(
'a'), Eq(
true), Eq(2L), Eq(
"hi"));
322 std::tuple<int, char, bool, long, std::string>
323 values1(1,
'a',
true, 2L,
"hi"), values2(1,
'a',
true, 2L,
"hello"),
324 values3(2,
'a',
true, 2L,
"hi");
332TEST(AssertTest, SucceedsOnTrue) {
333 Assert(
true, __FILE__, __LINE__,
"This should succeed.");
334 Assert(
true, __FILE__, __LINE__);
338TEST(AssertTest, FailsFatallyOnFalse) {
340 {
Assert(
false, __FILE__, __LINE__,
"This should fail."); },
"");
346TEST(ExpectTest, SucceedsOnTrue) {
347 Expect(
true, __FILE__, __LINE__,
"This should succeed.");
348 Expect(
true, __FILE__, __LINE__);
352TEST(ExpectTest, FailsNonfatallyOnFalse) {
355 Expect(
false, __FILE__, __LINE__,
"This should fail.");
361 Expect(
false, __FILE__, __LINE__);
363 "Expectation failed");
372 void TearDown()
override {
GMOCK_FLAG_SET(verbose, original_verbose_); }
377TEST_F(LogIsVisibleTest, AlwaysReturnsTrueIfVerbosityIsInfo) {
383TEST_F(LogIsVisibleTest, AlwaysReturnsFalseIfVerbosityIsError) {
389TEST_F(LogIsVisibleTest, WorksWhenVerbosityIsWarning) {
395#if GTEST_HAS_STREAM_REDIRECTION
401void TestLogWithSeverity(
const std::string& verbosity,
LogSeverity severity,
406 Log(severity,
"Test log.\n", 0);
411 ?
"^\nGMOCK WARNING:\nTest log\\.\nStack trace:\n"
412 :
"^\nTest log\\.\nStack trace:\n"));
421TEST(LogTest, NoStackTraceWhenStackFramesToSkipIsNegative) {
431 std::string CurrentStackTrace(
int max_depth,
int skip_count)
override {
435 void UponLeavingGTest()
override {}
440TEST(LogTest, NoSkippingStackFrameInOptMode) {
441 MockStackTraceGetter* mock_os_stack_trace_getter =
new MockStackTraceGetter;
448 std::string expected_trace =
451 std::string expected_message =
457 int skip_count = atoi(log.substr(expected_message.size()).c_str());
461 const int expected_skip_count = 0;
464 const int expected_skip_count = 100;
471 AllOf(Ge(expected_skip_count), Le(expected_skip_count + 10)));
479TEST(LogTest, AllLogsArePrintedWhenVerbosityIsInfo) {
486TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsWarning) {
493TEST(LogTest, NoLogsArePrintedWhenVerbosityIsError) {
500TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsInvalid) {
501 TestLogWithSeverity(
"invalid",
kInfo,
false);
502 TestLogWithSeverity(
"invalid",
kWarning,
true);
507std::string GrabOutput(
void (*logger)(),
const char* verbosity) {
522void ExpectCallLogger() {
529TEST(ExpectCallTest, LogsWhenVerbosityIsInfo) {
531 HasSubstr(
"EXPECT_CALL(mock, TestMethod())"));
536TEST(ExpectCallTest, DoesNotLogWhenVerbosityIsWarning) {
542TEST(ExpectCallTest, DoesNotLogWhenVerbosityIsError) {
552TEST(OnCallTest, LogsWhenVerbosityIsInfo) {
554 HasSubstr(
"ON_CALL(mock, TestMethod())"));
559TEST(OnCallTest, DoesNotLogWhenVerbosityIsWarning) {
565TEST(OnCallTest, DoesNotLogWhenVerbosityIsError) {
569void OnCallAnyArgumentLogger() {
571 ON_CALL(mock, TestMethodArg(_));
575TEST(OnCallTest, LogsAnythingArgument) {
577 HasSubstr(
"ON_CALL(mock, TestMethodArg(_)"));
584TEST(StlContainerViewTest, WorksForStlContainer) {
585 StaticAssertTypeEq<std::vector<int>,
586 StlContainerView<std::vector<int>>::type>();
587 StaticAssertTypeEq<const std::vector<double>&,
588 StlContainerView<std::vector<double>>::const_reference>();
590 typedef std::vector<char> Chars;
600TEST(StlContainerViewTest, WorksForStaticNativeArray) {
602 StaticAssertTypeEq<NativeArray<double>,
604 StaticAssertTypeEq<NativeArray<char[3]>,
607 StaticAssertTypeEq<const NativeArray<int>,
610 int a1[3] = {0, 1, 2};
626TEST(StlContainerViewTest, WorksForDynamicNativeArray) {
627 StaticAssertTypeEq<NativeArray<int>,
628 StlContainerView<std::tuple<const int*, size_t>>::type>();
631 StlContainerView<std::tuple<std::shared_ptr<double>,
int>>::type>();
634 const NativeArray<int>,
635 StlContainerView<std::tuple<const int*, int>>::const_reference>();
637 int a1[3] = {0, 1, 2};
638 const int*
const p1 = a1;
639 NativeArray<int> a2 =
640 StlContainerView<std::tuple<const int*, int>>::ConstReference(
641 std::make_tuple(p1, 3));
645 const NativeArray<int> a3 = StlContainerView<std::tuple<int*, size_t>>::Copy(
646 std::make_tuple(
static_cast<int*
>(a1), 3));
659TEST(FunctionTest, Nullary) {
660 typedef Function<int()> F;
662 EXPECT_TRUE((std::is_same<int, F::Result>::value));
669TEST(FunctionTest, Unary) {
670 typedef Function<int(
bool)> F;
672 EXPECT_TRUE((std::is_same<int, F::Result>::value));
676 std::is_same<std::tuple<Matcher<bool>>, F::ArgumentMatcherTuple>
::value));
679 F::MakeResultIgnoredValue>
::value));
682TEST(FunctionTest, Binary) {
683 typedef Function<int(
bool,
const long&)> F;
685 EXPECT_TRUE((std::is_same<int, F::Result>::value));
688 EXPECT_TRUE((std::is_same<std::tuple<bool, const long&>,
691 (std::is_same<std::tuple<Matcher<bool>, Matcher<const long&>>,
692 F::ArgumentMatcherTuple>
::value));
695 EXPECT_TRUE((std::is_same<IgnoredValue(
bool,
const long&),
696 F::MakeResultIgnoredValue>
::value));
699TEST(FunctionTest, LongArgumentList) {
700 typedef Function<char(
bool,
int,
char*,
int&,
const long&)> F;
702 EXPECT_TRUE((std::is_same<char, F::Result>::value));
709 (std::is_same<std::tuple<bool, int, char*, int&, const long&>,
713 std::tuple<Matcher<bool>, Matcher<int>, Matcher<char*>, Matcher<int&>,
714 Matcher<const long&>>,
715 F::ArgumentMatcherTuple>
::value));
717 (std::is_same<
void(
bool,
int,
char*,
int&,
const long&),
720 std::is_same<IgnoredValue(
bool,
int,
char*,
int&,
const long&),
721 F::MakeResultIgnoredValue>
::value));
725 std::string unescaped;
730 std::string unescaped;
736 std::string unescaped;
742 std::string unescaped;
748 std::string escaped =
749 R
"(TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
750 IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
751 dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
752 dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
753 ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=)";
754 std::string expected =
755 "Man is distinguished, not only by his reason, but by this singular "
756 "passion from other animals, which is a lust of the mind, that by a "
757 "perseverance of delight in the continued and indefatigable generation "
758 "of knowledge, exceeds the short vehemence of any carnal pleasure.";
759 std::string unescaped;
Definition gtest_unittest.cc:5120
Definition gtest-message.h:101
Definition gtest-internal-inl.h:408
RawContainer type
Definition gmock-internal-utils.h:344
static const_reference ConstReference(const RawContainer &container)
Definition gmock-internal-utils.h:347
static type Copy(const RawContainer &container)
Definition gmock-internal-utils.h:352
const type & const_reference
Definition gmock-internal-utils.h:345
void set_os_stack_trace_getter(OsStackTraceGetterInterface *getter)
Definition gtest.cc:6227
int value
Definition gmock-actions_test.cc:1714
#define MOCK_METHOD0(m,...)
Definition gmock-function-mocker.h:356
#define MOCK_METHOD1(m,...)
Definition gmock-function-mocker.h:357
#define GMOCK_KIND_OF_(type)
Definition gmock-internal-utils.h:169
std::string original_verbose_
Definition gmock-internal-utils_test.cc:374
const char * p
Definition gmock-matchers-containers_test.cc:379
#define EXPECT_THAT(value, matcher)
#define GMOCK_FLAG_GET(name)
Definition gmock-port.h:134
#define GMOCK_FLAG_SET(name, value)
Definition gmock-port.h:135
#define EXPECT_CALL(obj, call)
Definition gmock-spec-builders.h:2145
#define ON_CALL(obj, call)
Definition gmock-spec-builders.h:2142
#define EXPECT_DEATH_IF_SUPPORTED(statement, regex)
Definition gtest-death-test.h:337
#define GTEST_INTENTIONAL_CONST_COND_PUSH_()
Definition gtest-port.h:787
#define GTEST_INTENTIONAL_CONST_COND_POP_()
Definition gtest-port.h:789
#define GTEST_FLAG_GET(name)
Definition gtest-port.h:2293
#define EXPECT_NONFATAL_FAILURE(statement, substr)
Definition gtest-spi.h:217
#define TEST_F(test_fixture, test_name)
Definition gtest.h:2208
#define ASSERT_EQ(val1, val2)
Definition gtest.h:1898
#define EXPECT_EQ(val1, val2)
Definition gtest.h:1868
#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
Definition gmock-internal-utils_test.cc:64
GTEST_API_ std::string ConvertIdentifierNameToWords(const char *id_name)
Definition gmock-internal-utils.cc:80
::std::vector<::std::string > Strings
Definition gtest-printers.h:1115
LogSeverity
Definition gmock-internal-utils.h:267
@ kInfo
Definition gmock-internal-utils.h:267
@ kWarning
Definition gmock-internal-utils.h:267
const char kErrorVerbosity[]
Definition gmock-internal-utils.h:276
GTEST_API_ bool LogIsVisible(LogSeverity severity)
Definition gmock-internal-utils.cc:132
bool Base64Unescape(const std::string &encoded, std::string *decoded)
Definition gmock-internal-utils.cc:228
GTEST_API_ void Log(LogSeverity severity, const std::string &message, int stack_frames_to_skip)
Definition gmock-internal-utils.cc:153
const char kInfoVerbosity[]
Definition gmock-internal-utils.h:272
class UnitTestImpl * GetUnitTestImpl()
Definition gtest-internal-inl.h:966
void Assert(bool condition, const char *file, int line, const std::string &msg)
Definition gmock-internal-utils.h:242
@ kBool
Definition gmock-internal-utils.h:127
@ kInteger
Definition gmock-internal-utils.h:127
@ kFloatingPoint
Definition gmock-internal-utils.h:127
@ kOther
Definition gmock-internal-utils.h:127
GTEST_API_ std::string JoinAsKeyValueTuple(const std::vector< const char * > &names, const Strings &values)
Definition gmock-internal-utils.cc:58
GTEST_API_ void CaptureStdout()
const Pointer::element_type * GetRawPointer(const Pointer &p)
Definition gmock-internal-utils.h:78
void Expect(bool condition, const char *file, int line, const std::string &msg)
Definition gmock-internal-utils.h:255
const char kWarningVerbosity[]
Definition gmock-internal-utils.h:274
LosslessArithmeticConvertibleImpl< GMOCK_KIND_OF_(From), From, GMOCK_KIND_OF_(To), To > LosslessArithmeticConvertible
Definition gmock-internal-utils.h:216
GTEST_API_ std::string GetCapturedStdout()
Definition gmock-actions.h:151
Definition gtest_pred_impl_unittest.cc:54