95#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
96#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
106#if GTEST_HAS_STD_TUPLE_
135template <
typename T, TypeKind kTypeKind>
154 const ::testing::internal::string short_str =
value.ShortDebugString();
155 const ::testing::internal::string pretty_str =
157 short_str : (
"\n" +
value.DebugString());
158 *
os << (
"<" + pretty_str +
">");
202template <
typename Char,
typename CharTraits,
typename T>
203::std::basic_ostream<Char, CharTraits>&
operator<<(
204 ::std::basic_ostream<Char, CharTraits>&
os,
const T& x) {
205 TypeWithoutFormatter<T,
272template <
typename ToPr
int,
typename OtherOperand>
276 return ::testing::PrintToString(
value);
281template <
typename ToPr
int,
size_t N,
typename OtherOperand>
292#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \
293 template <typename OtherOperand> \
294 class FormatForComparison<CharType*, OtherOperand> { \
296 static ::std::string Format(CharType* value) { \
297 return ::testing::PrintToString(static_cast<const void*>(value)); \
306#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
311#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
313 class FormatForComparison<CharType*, OtherStringType> { \
315 static ::std::string Format(CharType* value) { \
316 return ::testing::PrintToString(value); \
323#if GTEST_HAS_GLOBAL_STRING
328#if GTEST_HAS_GLOBAL_WSTRING
333#if GTEST_HAS_STD_WSTRING
338#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
348template <
typename T1,
typename T2>
350 const T1&
value,
const T2& ) {
362class UniversalPrinter;
372 const C& container, ::std::ostream*
os) {
373 const size_t kMaxCount = 32;
376 for (
typename C::const_iterator it = container.begin();
377 it != container.end(); ++it, ++count) {
380 if (count == kMaxCount) {
406 T* p, ::std::ostream*
os) {
427 *os << reinterpret_cast<const void*>(
438 const T&
value, ::std::ostream*
os) {
491 PrintTo(
static_cast<unsigned char>(c),
os);
496 *
os << (x ?
"true" :
"false");
511 PrintTo(ImplicitCast_<const char*>(s),
os);
516inline void PrintTo(
const signed char* s, ::std::ostream*
os) {
517 PrintTo(ImplicitCast_<const void*>(s),
os);
519inline void PrintTo(
signed char* s, ::std::ostream*
os) {
520 PrintTo(ImplicitCast_<const void*>(s),
os);
522inline void PrintTo(
const unsigned char* s, ::std::ostream*
os) {
523 PrintTo(ImplicitCast_<const void*>(s),
os);
525inline void PrintTo(
unsigned char* s, ::std::ostream*
os) {
526 PrintTo(ImplicitCast_<const void*>(s),
os);
534#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
538 PrintTo(ImplicitCast_<const wchar_t*>(s),
os);
550 for (
size_t i = 1; i != count; i++) {
557#if GTEST_HAS_GLOBAL_STRING
559inline void PrintTo(const ::string& s, ::std::ostream*
os) {
565inline void PrintTo(const ::std::string& s, ::std::ostream*
os) {
570#if GTEST_HAS_GLOBAL_WSTRING
571GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream*
os);
572inline void PrintTo(const ::wstring& s, ::std::ostream*
os) {
573 PrintWideStringTo(s,
os);
577#if GTEST_HAS_STD_WSTRING
578GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream*
os);
579inline void PrintTo(const ::std::wstring& s, ::std::ostream*
os) {
580 PrintWideStringTo(s,
os);
584#if GTEST_HAS_TR1_TUPLE || GTEST_HAS_STD_TUPLE_
588void PrintTupleTo(
const T& t, ::std::ostream*
os);
591#if GTEST_HAS_TR1_TUPLE
600inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream*
os) {
604template <
typename T1>
605void PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream*
os) {
609template <
typename T1,
typename T2>
610void PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream*
os) {
614template <
typename T1,
typename T2,
typename T3>
615void PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream*
os) {
619template <
typename T1,
typename T2,
typename T3,
typename T4>
620void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream*
os) {
624template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
625void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t,
626 ::std::ostream*
os) {
630template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
632void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t,
633 ::std::ostream*
os) {
637template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
638 typename T6,
typename T7>
639void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t,
640 ::std::ostream*
os) {
644template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
645 typename T6,
typename T7,
typename T8>
646void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t,
647 ::std::ostream*
os) {
651template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
652 typename T6,
typename T7,
typename T8,
typename T9>
653void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t,
654 ::std::ostream*
os) {
658template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
659 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
661 const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t,
662 ::std::ostream*
os) {
667#if GTEST_HAS_STD_TUPLE_
668template <
typename... Types>
669void PrintTo(const ::std::tuple<Types...>& t, ::std::ostream*
os) {
675template <
typename T1,
typename T2>
721 const size_t kThreshold = 18;
722 const size_t kChunkSize = 8;
727 if (len <= kThreshold) {
739 const char* begin,
size_t len, ::std::ostream*
os);
743 const wchar_t* begin,
size_t len, ::std::ostream*
os);
746template <
typename T,
size_t N>
751 static void Print(
const T (&a)[N], ::std::ostream*
os) {
767 *
os <<
"@" <<
reinterpret_cast<const void*
>(&
value) <<
" ";
794template <
typename T,
size_t N>
804 static void Print(
const char* str, ::std::ostream*
os) {
815 static void Print(
char* str, ::std::ostream*
os) {
820#if GTEST_HAS_STD_WSTRING
822class UniversalTersePrinter<const wchar_t*> {
824 static void Print(
const wchar_t* str, ::std::ostream*
os) {
837 static void Print(
wchar_t* str, ::std::ostream*
os) {
868template <
typename TupleT>
871#if GTEST_HAS_TR1_TUPLE
872template <
typename TupleT>
874 typedef TupleT Tuple;
882 const typename ::std::tr1::tuple_element<I, Tuple>::type>::type get(
883 const Tuple& tuple) {
884 return ::std::tr1::get<I>(tuple);
887template <
typename TupleT>
888const size_t TuplePolicy<TupleT>::tuple_size;
891#if GTEST_HAS_STD_TUPLE_
892template <
typename... Types>
893struct TuplePolicy< ::std::tuple<Types...> > {
894 typedef ::std::tuple<Types...> Tuple;
895 static const size_t tuple_size = ::std::tuple_size<Tuple>::value;
898 struct tuple_element : ::std::tuple_element<I, Tuple> {};
901 static const typename ::std::tuple_element<I, Tuple>::type& get(
902 const Tuple& tuple) {
903 return ::std::get<I>(tuple);
906template <
typename... Types>
907const size_t TuplePolicy< ::std::tuple<Types...> >::tuple_size;
910#if GTEST_HAS_TR1_TUPLE || GTEST_HAS_STD_TUPLE_
920struct TuplePrefixPrinter {
922 template <
typename Tuple>
923 static void PrintPrefixTo(
const Tuple& t, ::std::ostream*
os) {
924 TuplePrefixPrinter<N - 1>::PrintPrefixTo(t,
os);
931 typename TuplePolicy<Tuple>::template tuple_element<N - 1>::type>
932 ::Print(TuplePolicy<Tuple>::template get<N - 1>(t),
os);
937 template <
typename Tuple>
938 static void TersePrintPrefixToStrings(
const Tuple& t, Strings* strings) {
939 TuplePrefixPrinter<N - 1>::TersePrintPrefixToStrings(t, strings);
940 ::std::stringstream ss;
942 strings->push_back(ss.str());
948struct TuplePrefixPrinter<0> {
949 template <
typename Tuple>
950 static void PrintPrefixTo(
const Tuple&, ::std::ostream*) {}
952 template <
typename Tuple>
953 static void TersePrintPrefixToStrings(
const Tuple&, Strings*) {}
958template <
typename Tuple>
959void PrintTupleTo(
const Tuple& t, ::std::ostream*
os) {
961 TuplePrefixPrinter<TuplePolicy<Tuple>::tuple_size>::PrintPrefixTo(t,
os);
968template <
typename Tuple>
969Strings UniversalTersePrintTupleFieldsToStrings(
const Tuple&
value) {
971 TuplePrefixPrinter<TuplePolicy<Tuple>::tuple_size>::
981 ::std::stringstream ss;
std::string string
Definition DocumentAccess.h:13
bsoncxx::types::value value
Definition DocumentManager.h:16
if(result !=LDS_EXIT_Ok) exit(result)
int result
Definition dllmain.cpp:82
Definition gtest-internal.h:855
static void Print(const T(&a)[N], ::std::ostream *os)
Definition gtest-printers.h:751
Definition gtest-printers.h:689
static void Print(const T &value, ::std::ostream *os)
Definition gtest-printers.h:698
static void Print(const T &value, ::std::ostream *os)
Definition gtest-printers.h:790
static void Print(const T(&value)[N], ::std::ostream *os)
Definition gtest-printers.h:797
static void Print(char *str, ::std::ostream *os)
Definition gtest-printers.h:815
static void Print(const char *str, ::std::ostream *os)
Definition gtest-printers.h:804
static void Print(wchar_t *str, ::std::ostream *os)
Definition gtest-printers.h:837
Definition gtest-printers.h:781
static void Print(const T &value, ::std::ostream *os)
Definition gtest-printers.h:783
#define GTEST_INTENTIONAL_CONST_COND_PUSH_()
Definition gtest-port.h:897
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
Definition gtest-port.h:317
#define GTEST_API_
Definition gtest-port.h:934
#define GTEST_DISABLE_MSC_WARNINGS_POP_()
Definition gtest-port.h:318
#define GTEST_INTENTIONAL_CONST_COND_POP_()
Definition gtest-port.h:899
#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType)
Definition gtest-printers.h:292
#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType)
Definition gtest-printers.h:311
The os may be used to get different informations about the Hardware or System configuration.
Definition gtest-printers.h:114
const size_t kProtobufOneLinerMaxLength
Definition gtest-printers.h:148
GTEST_API_ void PrintBytesInObjectTo(const unsigned char *obj_bytes, size_t count, ::std::ostream *os)
::std::basic_ostream< Char, CharTraits > & operator<<(::std::basic_ostream< Char, CharTraits > &os, const T &x)
Definition gtest-printers.h:203
TypeKind
Definition gtest-printers.h:124
@ kProtobuf
Definition gtest-printers.h:125
@ kConvertibleToInteger
Definition gtest-printers.h:126
@ kOtherType
Definition gtest-printers.h:128
long long BiggestInt
Definition gtest-port.h:2241
void UniversalPrint(const T &value, ::std::ostream *os)
Definition gtest-printers.h:852
::std::wstring wstring
Definition gtest-port.h:1103
::std::vector< string > Strings
Definition gtest-printers.h:859
GTEST_API_ void PrintStringTo(const ::std::string &s, ::std::ostream *os)
std::string FormatForComparisonFailureMessage(const T1 &value, const T2 &)
Definition gtest-printers.h:349
TypeWithSize< 8 >::UInt UInt64
Definition gtest-port.h:2497
GTEST_API_ bool IsTrue(bool condition)
char IsNotContainer
Definition gtest-internal.h:938
void DefaultPrintTo(IsContainer, false_type, const C &container, ::std::ostream *os)
Definition gtest-printers.h:370
void PrintRawArrayTo(const T a[], size_t count, ::std::ostream *os)
Definition gtest-printers.h:548
void UniversalPrintArray(const T *begin, size_t len, ::std::ostream *os)
Definition gtest-printers.h:716
int IsContainer
Definition gtest-internal.h:930
void PrintTo(const T &value, ::std::ostream *os)
Definition gtest-printers.h:454
void UniversalTersePrint(const T &value, ::std::ostream *os)
Definition gtest-printers.h:843
Definition gtest-printers.h:217
void DefaultPrintNonContainerTo(const T &value, ::std::ostream *os)
Definition gtest-printers.h:222
Definition gtest-death-test.h:43
::std::string PrintToString(const T &value)
Definition gtest-printers.h:980
Definition gtest-tuple.h:796
Definition gtest-tuple.h:738
Definition gtest-internal.h:830
Definition gtest-internal.h:906
Definition gtest-printers.h:869
Definition gtest-port.h:2203
Definition gtest-port.h:2213