Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
gtest-string.h
Go to the documentation of this file.
1
// Copyright 2005, Google Inc.
2
// All rights reserved.
3
//
4
// Redistribution and use in source and binary forms, with or without
5
// modification, are permitted provided that the following conditions are
6
// met:
7
//
8
// * Redistributions of source code must retain the above copyright
9
// notice, this list of conditions and the following disclaimer.
10
// * Redistributions in binary form must reproduce the above
11
// copyright notice, this list of conditions and the following disclaimer
12
// in the documentation and/or other materials provided with the
13
// distribution.
14
// * Neither the name of Google Inc. nor the names of its
15
// contributors may be used to endorse or promote products derived from
16
// this software without specific prior written permission.
17
//
18
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
//
30
// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
31
//
32
// The Google C++ Testing Framework (Google Test)
33
//
34
// This header file declares the String class and functions used internally by
35
// Google Test. They are subject to change without notice. They should not used
36
// by code external to Google Test.
37
//
38
// This header file is #included by <gtest/internal/gtest-internal.h>.
39
// It should not be #included by other files.
40
41
#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
42
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
43
44
#ifdef __BORLANDC__
45
// string.h is not guaranteed to provide strcpy on C++ Builder.
46
# include <mem.h>
47
#endif
48
49
#include <
string.h
>
50
#include <string>
51
52
#include "gtest/internal/gtest-port.h"
53
54
namespace
testing
{
55
namespace
internal
{
56
57
// String - an abstract class holding static string utilities.
58
class
GTEST_API_
String {
59
public
:
60
// Static utility methods
61
62
// Clones a 0-terminated C string, allocating memory using new. The
63
// caller is responsible for deleting the return value using
64
// delete[]. Returns the cloned string, or NULL if the input is
65
// NULL.
66
//
67
// This is different from strdup() in string.h, which allocates
68
// memory using malloc().
69
static
const
char
*
CloneCString
(
const
char
* c_str);
70
71
#if GTEST_OS_WINDOWS_MOBILE
72
// Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
73
// able to pass strings to Win32 APIs on CE we need to convert them
74
// to 'Unicode', UTF-16.
75
76
// Creates a UTF-16 wide string from the given ANSI string, allocating
77
// memory using new. The caller is responsible for deleting the return
78
// value using delete[]. Returns the wide string, or NULL if the
79
// input is NULL.
80
//
81
// The wide string is created using the ANSI codepage (CP_ACP) to
82
// match the behaviour of the ANSI versions of Win32 calls and the
83
// C runtime.
84
static
LPCWSTR AnsiToUtf16(
const
char
* c_str);
85
86
// Creates an ANSI string from the given wide string, allocating
87
// memory using new. The caller is responsible for deleting the return
88
// value using delete[]. Returns the ANSI string, or NULL if the
89
// input is NULL.
90
//
91
// The returned string is created using the ANSI codepage (CP_ACP) to
92
// match the behaviour of the ANSI versions of Win32 calls and the
93
// C runtime.
94
static
const
char
* Utf16ToAnsi(LPCWSTR utf16_str);
95
#endif
96
97
// Compares two C strings. Returns true iff they have the same content.
98
//
99
// Unlike strcmp(), this function can handle NULL argument(s). A
100
// NULL C string is considered different to any non-NULL C string,
101
// including the empty string.
102
static
bool
CStringEquals
(
const
char
* lhs,
const
char
* rhs);
103
104
// Converts a wide C string to a String using the UTF-8 encoding.
105
// NULL will be converted to "(null)". If an error occurred during
106
// the conversion, "(failed to convert from wide string)" is
107
// returned.
108
static
std::string
ShowWideCString
(
const
wchar_t
* wide_c_str);
109
110
// Compares two wide C strings. Returns true iff they have the same
111
// content.
112
//
113
// Unlike wcscmp(), this function can handle NULL argument(s). A
114
// NULL C string is considered different to any non-NULL C string,
115
// including the empty string.
116
static
bool
WideCStringEquals
(
const
wchar_t
* lhs,
const
wchar_t
* rhs);
117
118
// Compares two C strings, ignoring case. Returns true iff they
119
// have the same content.
120
//
121
// Unlike strcasecmp(), this function can handle NULL argument(s).
122
// A NULL C string is considered different to any non-NULL C string,
123
// including the empty string.
124
static
bool
CaseInsensitiveCStringEquals
(
const
char
* lhs,
125
const
char
* rhs);
126
127
// Compares two wide C strings, ignoring case. Returns true iff they
128
// have the same content.
129
//
130
// Unlike wcscasecmp(), this function can handle NULL argument(s).
131
// A NULL C string is considered different to any non-NULL wide C string,
132
// including the empty string.
133
// NB: The implementations on different platforms slightly differ.
134
// On windows, this method uses _wcsicmp which compares according to LC_CTYPE
135
// environment variable. On GNU platform this method uses wcscasecmp
136
// which compares according to LC_CTYPE category of the current locale.
137
// On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
138
// current locale.
139
static
bool
CaseInsensitiveWideCStringEquals
(
const
wchar_t
* lhs,
140
const
wchar_t
* rhs);
141
142
// Returns true iff the given string ends with the given suffix, ignoring
143
// case. Any string is considered to end with an empty suffix.
144
static
bool
EndsWithCaseInsensitive
(
145
const
std::string& str,
const
std::string& suffix);
146
147
// Formats an int value as "%02d".
148
static
std::string
FormatIntWidth2
(
int
value
);
// "%02d" for width == 2
149
150
// Formats an int value as "%X".
151
static
std::string
FormatHexInt
(
int
value
);
152
153
// Formats a byte as "%02X".
154
static
std::string
FormatByte
(
unsigned
char
value
);
155
156
private
:
157
String();
// Not meant to be instantiated.
158
};
// class String
159
160
// Gets the content of the stringstream's buffer as an std::string. Each '\0'
161
// character in the buffer is replaced with "\\0".
162
GTEST_API_
std::string
StringStreamToString
(::std::stringstream* stream);
163
164
}
// namespace internal
165
}
// namespace testing
166
167
#endif
// GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
testing::internal::String::CStringEquals
static bool CStringEquals(const char *lhs, const char *rhs)
testing::internal::String::CaseInsensitiveWideCStringEquals
static bool CaseInsensitiveWideCStringEquals(const wchar_t *lhs, const wchar_t *rhs)
testing::internal::String::EndsWithCaseInsensitive
static bool EndsWithCaseInsensitive(const std::string &str, const std::string &suffix)
testing::internal::String::WideCStringEquals
static bool WideCStringEquals(const wchar_t *lhs, const wchar_t *rhs)
testing::internal::String::FormatIntWidth2
static std::string FormatIntWidth2(int value)
testing::internal::String::FormatHexInt
static std::string FormatHexInt(int value)
testing::internal::String::CaseInsensitiveCStringEquals
static bool CaseInsensitiveCStringEquals(const char *lhs, const char *rhs)
testing::internal::String::FormatByte
static std::string FormatByte(unsigned char value)
testing::internal::String::ShowWideCString
static std::string ShowWideCString(const wchar_t *wide_c_str)
testing::internal::String::CloneCString
static const char * CloneCString(const char *c_str)
GTEST_API_
#define GTEST_API_
Definition
gtest-port.h:934
testing::internal
Definition
gmock-actions.h:64
testing::internal::StringStreamToString
GTEST_API_ std::string StringStreamToString(::std::stringstream *stream)
testing::internal::value
const bool ImplicitlyConvertible< From, To >::value
Definition
gtest-internal.h:897
testing
Definition
gmock-actions.h:53
string.h
external
rapidjson
thirdparty
gtest
googletest
include
gtest
internal
gtest-string.h
Generated on
for Electroneum by
1.17.0