45#include "gtest/gtest.h"
46#include "gtest/gtest-spi.h"
53#define GTEST_IMPLEMENTATION_ 1
54#include "src/gtest-internal-inl.h"
55#undef GTEST_IMPLEMENTATION_
58# include <sys/types.h>
72TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsNoWord) {
78TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsDigits) {
85TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsCamelCaseWords) {
93TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContains_SeparatedWords) {
100TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameIsMixture) {
106TEST(PointeeOfTest, WorksForSmartPointers) {
107 CompileAssertTypesEqual<
const char,
108 PointeeOf<internal::linked_ptr<const char> >::type>();
109#if GTEST_HAS_STD_UNIQUE_PTR_
110 CompileAssertTypesEqual<int, PointeeOf<std::unique_ptr<int> >::type>();
112#if GTEST_HAS_STD_SHARED_PTR_
113 CompileAssertTypesEqual<std::string,
114 PointeeOf<std::shared_ptr<std::string> >::type>();
118TEST(PointeeOfTest, WorksForRawPointers) {
119 CompileAssertTypesEqual<int, PointeeOf<int*>::type>();
120 CompileAssertTypesEqual<const char, PointeeOf<const char*>::type>();
121 CompileAssertTypesEqual<void, PointeeOf<void*>::type>();
124TEST(GetRawPointerTest, WorksForSmartPointers) {
125#if GTEST_HAS_STD_UNIQUE_PTR_
126 const char*
const raw_p1 =
new const char(
'a');
127 const std::unique_ptr<const char> p1(raw_p1);
130#if GTEST_HAS_STD_SHARED_PTR_
131 double*
const raw_p2 =
new double(2.5);
132 const std::shared_ptr<double> p2(raw_p2);
136 const char*
const raw_p4 =
new const char(
'a');
137 const internal::linked_ptr<const char> p4(raw_p4);
141TEST(GetRawPointerTest, WorksForRawPointers) {
152class Derived :
public Base {};
158TEST(KindOfTest, Integer) {
172#if GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN
178TEST(KindOfTest, FloatingPoint) {
184TEST(KindOfTest, Other) {
192TEST(LosslessArithmeticConvertibleTest, BoolToBool) {
193 EXPECT_TRUE((LosslessArithmeticConvertible<bool, bool>::value));
196TEST(LosslessArithmeticConvertibleTest, BoolToInteger) {
197 EXPECT_TRUE((LosslessArithmeticConvertible<bool, char>::value));
198 EXPECT_TRUE((LosslessArithmeticConvertible<bool, int>::value));
200 (LosslessArithmeticConvertible<bool, unsigned long>::value));
203TEST(LosslessArithmeticConvertibleTest, BoolToFloatingPoint) {
204 EXPECT_TRUE((LosslessArithmeticConvertible<bool, float>::value));
205 EXPECT_TRUE((LosslessArithmeticConvertible<bool, double>::value));
208TEST(LosslessArithmeticConvertibleTest, IntegerToBool) {
209 EXPECT_FALSE((LosslessArithmeticConvertible<unsigned char, bool>::value));
210 EXPECT_FALSE((LosslessArithmeticConvertible<int, bool>::value));
213TEST(LosslessArithmeticConvertibleTest, IntegerToInteger) {
215 EXPECT_TRUE((LosslessArithmeticConvertible<unsigned char, int>::value));
219 (LosslessArithmeticConvertible<unsigned short, UInt64>::value));
222 EXPECT_FALSE((LosslessArithmeticConvertible<short, UInt64>::value));
224 signed char,
unsigned int>
::value));
228 unsigned char,
unsigned char>
::value));
229 EXPECT_TRUE((LosslessArithmeticConvertible<int, int>::value));
230 EXPECT_TRUE((LosslessArithmeticConvertible<wchar_t, wchar_t>::value));
232 unsigned long,
unsigned long>
::value));
236 unsigned char,
signed char>
::value));
237 EXPECT_FALSE((LosslessArithmeticConvertible<int, unsigned int>::value));
238 EXPECT_FALSE((LosslessArithmeticConvertible<UInt64, Int64>::value));
241 EXPECT_FALSE((LosslessArithmeticConvertible<long, char>::value));
242 EXPECT_FALSE((LosslessArithmeticConvertible<int, signed char>::value));
243 EXPECT_FALSE((LosslessArithmeticConvertible<Int64, unsigned int>::value));
246TEST(LosslessArithmeticConvertibleTest, IntegerToFloatingPoint) {
249 EXPECT_FALSE((LosslessArithmeticConvertible<char, float>::value));
250 EXPECT_FALSE((LosslessArithmeticConvertible<int, 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>::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) {
298TEST(TupleMatchesTest, WorksForSize1) {
299 tuple<Matcher<int> > matchers(
Eq(1));
300 tuple<int> values1(1),
307TEST(TupleMatchesTest, WorksForSize2) {
308 tuple<Matcher<int>, Matcher<char> > matchers(
Eq(1),
Eq(
'a'));
309 tuple<int, char> values1(1,
'a'),
320TEST(TupleMatchesTest, WorksForSize5) {
321 tuple<Matcher<int>, Matcher<char>, Matcher<bool>, Matcher<long>,
323 matchers(
Eq(1),
Eq(
'a'),
Eq(
true),
Eq(2L),
Eq(
"hi"));
324 tuple<int, char, bool, long, string>
325 values1(1,
'a',
true, 2L,
"hi"),
326 values2(1,
'a',
true, 2L,
"hello"),
327 values3(2,
'a',
true, 2L,
"hi");
335TEST(AssertTest, SucceedsOnTrue) {
336 Assert(
true, __FILE__, __LINE__,
"This should succeed.");
337 Assert(
true, __FILE__, __LINE__);
341TEST(AssertTest, FailsFatallyOnFalse) {
343 Assert(
false, __FILE__, __LINE__,
"This should fail.");
347 Assert(
false, __FILE__, __LINE__);
352TEST(ExpectTest, SucceedsOnTrue) {
353 Expect(
true, __FILE__, __LINE__,
"This should succeed.");
354 Expect(
true, __FILE__, __LINE__);
358TEST(ExpectTest, FailsNonfatallyOnFalse) {
360 Expect(
false, __FILE__, __LINE__,
"This should fail.");
361 },
"This should fail");
364 Expect(
false, __FILE__, __LINE__);
365 },
"Expectation failed");
372 virtual void SetUp() {
381TEST_F(LogIsVisibleTest, AlwaysReturnsTrueIfVerbosityIsInfo) {
387TEST_F(LogIsVisibleTest, AlwaysReturnsFalseIfVerbosityIsError) {
393TEST_F(LogIsVisibleTest, WorksWhenVerbosityIsWarning) {
399#if GTEST_HAS_STREAM_REDIRECTION
405void TestLogWithSeverity(
const string& verbosity,
LogSeverity severity,
410 Log(severity,
"Test log.\n", 0);
415 "^\nGMOCK WARNING:\nTest log\\.\nStack trace:\n" :
416 "^\nTest log\\.\nStack trace:\n"));
425TEST(LogTest, NoStackTraceWhenStackFramesToSkipIsNegative) {
426 const string saved_flag =
GMOCK_FLAG(verbose);
430 EXPECT_STREQ(
"\nTest log.\n", GetCapturedStdout().c_str());
435 virtual string CurrentStackTrace(
int max_depth,
int skip_count) {
439 virtual void UponLeavingGTest() {}
444TEST(LogTest, NoSkippingStackFrameInOptMode) {
445 MockStackTraceGetter* mock_os_stack_trace_getter =
new MockStackTraceGetter;
450 const string log = GetCapturedStdout();
452 string expected_trace =
454 string expected_message =
460 int skip_count = atoi(
log.substr(expected_message.size()).c_str());
464 const int expected_skip_count = 0;
467 const int expected_skip_count = 100;
474 AllOf(
Ge(expected_skip_count),
Le(expected_skip_count + 10)));
482TEST(LogTest, AllLogsArePrintedWhenVerbosityIsInfo) {
483 TestLogWithSeverity(kInfoVerbosity,
kInfo,
true);
484 TestLogWithSeverity(kInfoVerbosity,
kWarning,
true);
489TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsWarning) {
490 TestLogWithSeverity(kWarningVerbosity,
kInfo,
false);
491 TestLogWithSeverity(kWarningVerbosity,
kWarning,
true);
496TEST(LogTest, NoLogsArePrintedWhenVerbosityIsError) {
497 TestLogWithSeverity(kErrorVerbosity,
kInfo,
false);
498 TestLogWithSeverity(kErrorVerbosity,
kWarning,
false);
503TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsInvalid) {
504 TestLogWithSeverity(
"invalid",
kInfo,
false);
505 TestLogWithSeverity(
"invalid",
kWarning,
true);
510TEST(TypeTraitsTest, true_type) {
518TEST(TypeTraitsTest, is_reference) {
524TEST(TypeTraitsTest, is_pointer) {
530TEST(TypeTraitsTest, type_equals) {
537TEST(TypeTraitsTest, remove_reference) {
545#if GTEST_HAS_STREAM_REDIRECTION
549std::string GrabOutput(
void(*logger)(),
const char* verbosity) {
550 const string saved_flag =
GMOCK_FLAG(verbose);
555 return GetCapturedStdout();
564void ExpectCallLogger() {
571TEST(ExpectCallTest, LogsWhenVerbosityIsInfo) {
572 EXPECT_THAT(std::string(GrabOutput(ExpectCallLogger, kInfoVerbosity)),
573 HasSubstr(
"EXPECT_CALL(mock, TestMethod())"));
578TEST(ExpectCallTest, DoesNotLogWhenVerbosityIsWarning) {
579 EXPECT_STREQ(
"", GrabOutput(ExpectCallLogger, kWarningVerbosity).c_str());
584TEST(ExpectCallTest, DoesNotLogWhenVerbosityIsError) {
585 EXPECT_STREQ(
"", GrabOutput(ExpectCallLogger, kErrorVerbosity).c_str());
594TEST(OnCallTest, LogsWhenVerbosityIsInfo) {
595 EXPECT_THAT(std::string(GrabOutput(OnCallLogger, kInfoVerbosity)),
596 HasSubstr(
"ON_CALL(mock, TestMethod())"));
601TEST(OnCallTest, DoesNotLogWhenVerbosityIsWarning) {
602 EXPECT_STREQ(
"", GrabOutput(OnCallLogger, kWarningVerbosity).c_str());
607TEST(OnCallTest, DoesNotLogWhenVerbosityIsError) {
608 EXPECT_STREQ(
"", GrabOutput(OnCallLogger, kErrorVerbosity).c_str());
611void OnCallAnyArgumentLogger() {
613 ON_CALL(mock, TestMethodArg(_));
617TEST(OnCallTest, LogsAnythingArgument) {
618 EXPECT_THAT(std::string(GrabOutput(OnCallAnyArgumentLogger, kInfoVerbosity)),
619 HasSubstr(
"ON_CALL(mock, TestMethodArg(_)"));
626TEST(StlContainerViewTest, WorksForStlContainer) {
627 StaticAssertTypeEq<std::vector<int>,
628 StlContainerView<std::vector<int> >::type>();
629 StaticAssertTypeEq<const std::vector<double>&,
630 StlContainerView<std::vector<double> >::const_reference>();
632 typedef std::vector<char> Chars;
642TEST(StlContainerViewTest, WorksForStaticNativeArray) {
643 StaticAssertTypeEq<NativeArray<int>,
645 StaticAssertTypeEq<NativeArray<double>,
647 StaticAssertTypeEq<NativeArray<char[3]>,
650 StaticAssertTypeEq<const NativeArray<int>,
653 int a1[3] = { 0, 1, 2 };
669TEST(StlContainerViewTest, WorksForDynamicNativeArray) {
670 StaticAssertTypeEq<NativeArray<int>,
671 StlContainerView<tuple<const int*, size_t> >::type>();
672 StaticAssertTypeEq<NativeArray<double>,
673 StlContainerView<tuple<linked_ptr<double>,
int> >::type>();
675 StaticAssertTypeEq<const NativeArray<int>,
676 StlContainerView<tuple<const int*, int> >::const_reference>();
678 int a1[3] = { 0, 1, 2 };
679 const int*
const p1 = a1;
680 NativeArray<int> a2 = StlContainerView<tuple<const int*, int> >::
681 ConstReference(make_tuple(p1, 3));
685 const NativeArray<int> a3 = StlContainerView<tuple<int*, size_t> >::
686 Copy(make_tuple(
static_cast<int*
>(a1), 3));
#define v3(p)
Definition aesb.c:119
#define v1(p)
Definition aesb.c:117
#define v2(p)
Definition aesb.c:118
Definition gtest-message.h:85
Definition gtest-internal-inl.h:418
RawContainer type
Definition gmock-internal-utils.h:408
static const_reference ConstReference(const RawContainer &container)
Definition gmock-internal-utils.h:411
static type Copy(const RawContainer &container)
Definition gmock-internal-utils.h:417
const type & const_reference
Definition gmock-internal-utils.h:409
void set_os_stack_trace_getter(OsStackTraceGetterInterface *getter)
Definition gtest.cc:4907
#define EXPECT_DEATH_IF_SUPPORTED(statement, regex)
Definition gtest-death-test.h:286
#define EXPECT_NONFATAL_FAILURE(statement, substr)
Definition gtest-spi.h:204
#define TEST_F(test_fixture, test_name)
Definition gtest.h:2216
#define ASSERT_EQ(val1, val2)
Definition gtest.h:1956
#define EXPECT_EQ(val1, val2)
Definition gtest.h:1922
#define EXPECT_TRUE(condition)
Definition gtest.h:1859
#define EXPECT_STREQ(s1, s2)
Definition gtest.h:1995
#define TEST(test_case_name, test_name)
Definition gtest.h:2187
#define EXPECT_FALSE(condition)
Definition gtest.h:1862
#define GTEST_INTENTIONAL_CONST_COND_PUSH_()
Definition gtest-port.h:897
#define GTEST_FLAG(name)
Definition gtest-port.h:2504
#define GTEST_INTENTIONAL_CONST_COND_POP_()
Definition gtest-port.h:899
#define MOCK_METHOD0(m,...)
Definition gmock-generated-function-mockers.h:675
#define MOCK_METHOD1(m,...)
Definition gmock-generated-function-mockers.h:676
#define GMOCK_KIND_OF_(type)
Definition gmock-internal-utils.h:168
string original_verbose_
Definition gmock-internal-utils_test.cc:378
#define EXPECT_THAT(value, matcher)
Definition gmock-matchers.h:4390
#define GMOCK_FLAG(name)
Definition gmock-port.h:70
#define EXPECT_CALL(obj, call)
Definition gmock-spec-builders.h:1845
#define ON_CALL(obj, call)
Definition gmock-spec-builders.h:1841
static void log()
Definition logging.cpp:85
Definition document.h:406
Definition gmock-internal-utils_test.cc:63
p
Definition pymoduletest.py:75
bool TupleMatches(const MatcherTuple &matcher_tuple, const ValueTuple &value_tuple)
Definition gmock-matchers.h:796
LogSeverity
Definition gmock-internal-utils.h:306
@ kInfo
Definition gmock-internal-utils.h:307
@ kWarning
Definition gmock-internal-utils.h:308
const char kErrorVerbosity[]
Definition gmock-internal-utils.h:318
GTEST_API_ string ConvertIdentifierNameToWords(const char *id_name)
Definition gmock-internal-utils.cc:54
GTEST_API_ bool LogIsVisible(LogSeverity severity)
Definition gmock-internal-utils.cc:110
void Assert(bool condition, const char *file, int line)
Definition gmock-internal-utils.h:288
bool_constant< false > false_type
Definition gtest-port.h:2209
const char kInfoVerbosity[]
Definition gmock-internal-utils.h:314
class UnitTestImpl * GetUnitTestImpl()
Definition gtest-internal-inl.h:927
@ 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
void Expect(bool condition, const char *file, int line, const string &msg)
Definition gmock-internal-utils.h:294
GTEST_API_ void Log(LogSeverity severity, const string &message, int stack_frames_to_skip)
Definition gmock-internal-utils.cc:131
const Pointer::element_type * GetRawPointer(const Pointer &p)
Definition gmock-internal-utils.h:76
const char kWarningVerbosity[]
Definition gmock-internal-utils.h:316
Definition gmock-actions.h:53
internal::Le2Matcher Le()
Definition gmock-matchers.h:4094
PolymorphicMatcher< internal::HasSubstrMatcher< internal::string > > HasSubstr(const internal::string &substring)
Definition gmock-matchers.h:3984
internal::AllOfResult2< M1, M2 >::type AllOf(M1 m1, M2 m2)
Definition gmock-generated-matchers.h:1002
internal::Ge2Matcher Ge()
Definition gmock-matchers.h:4086
PolymorphicMatcher< internal::MatchesRegexMatcher > ContainsRegex(const internal::RE *regex)
Definition gmock-matchers.h:4016
internal::Eq2Matcher Eq()
Definition gmock-matchers.h:4082
int verbosity
Definition upload.py:59
const GenericPointer< typename T::ValueType > T2 value
Definition pointer.h:1225
if(!cryptonote::get_account_address_from_str_or_url(info, cryptonote::TESTNET, "9uVsvEryzpN8WH2t1WWhFFCG5tS8cBNdmJYNRuckLENFimfauV5pZKeS1P2CbxGkSDTUPHXWwiYE5ZGSXDAGbaZgDxobqDN"))
Definition signature.cpp:53
Definition gtest_pred_impl_unittest.cc:56
static const bool value
Definition gtest-port.h:2205
T type
Definition gmock-internal-utils.h:348