Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
88e0df62
Commit
88e0df62
authored
Sep 08, 2010
by
zhanyong.wan
Browse files
Removes all uses of StrStream; fixes the VC projects and simplifies them by using gtest-all.cc.
parent
35c39756
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
34 additions
and
332 deletions
+34
-332
include/gtest/gtest-message.h
include/gtest/gtest-message.h
+12
-13
include/gtest/gtest.h
include/gtest/gtest.h
+4
-4
include/gtest/internal/gtest-port.h
include/gtest/internal/gtest-port.h
+0
-2
include/gtest/internal/gtest-string.h
include/gtest/internal/gtest-string.h
+2
-2
msvc/gtest-md.vcproj
msvc/gtest-md.vcproj
+1
-112
msvc/gtest.vcproj
msvc/gtest.vcproj
+1
-112
msvc/gtest_main-md.vcproj
msvc/gtest_main-md.vcproj
+0
-36
msvc/gtest_main.vcproj
msvc/gtest_main.vcproj
+0
-36
src/gtest.cc
src/gtest.cc
+12
-12
test/gtest-message_test.cc
test/gtest-message_test.cc
+2
-3
No files found.
include/gtest/gtest-message.h
View file @
88e0df62
...
...
@@ -58,7 +58,7 @@ namespace testing {
// Typical usage:
//
// 1. You stream a bunch of values to a Message object.
// It will remember the text in a
S
tr
S
tream.
// It will remember the text in a
s
tr
ings
tream.
// 2. Then you stream the Message object to an ostream.
// This causes the text in the Message to be streamed
// to the ostream.
...
...
@@ -74,7 +74,7 @@ namespace testing {
// Message is not intended to be inherited from. In particular, its
// destructor is not virtual.
//
// Note that
S
tr
S
tream behaves differently in gcc and in MSVC. You
// Note that
s
tr
ings
tream behaves differently in gcc and in MSVC. You
// can stream a NULL char pointer to it in the former, but not in the
// latter (it causes an access violation if you do). The Message
// class hides this difference by treating a NULL char pointer as
...
...
@@ -87,27 +87,26 @@ class GTEST_API_ Message {
public:
// Constructs an empty Message.
// We allocate the
S
tr
S
tream separately because
it
otherwise each use of
// We allocate the
s
tr
ings
tream separately because otherwise each use of
// ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
// stack frame leading to huge stack frames in some cases; gcc does not reuse
// the stack space.
Message
()
:
ss_
(
new
internal
::
S
tr
S
tream
)
{
Message
()
:
ss_
(
new
::
std
::
s
tr
ings
tream
)
{
// By default, we want there to be enough precision when printing
// a double to a Message.
*
ss_
<<
std
::
setprecision
(
std
::
numeric_limits
<
double
>::
digits10
+
2
);
}
// Copy constructor.
Message
(
const
Message
&
msg
)
:
ss_
(
new
internal
::
S
tr
S
tream
)
{
// NOLINT
Message
(
const
Message
&
msg
)
:
ss_
(
new
::
std
::
s
tr
ings
tream
)
{
// NOLINT
*
ss_
<<
msg
.
GetString
();
}
// Constructs a Message from a C-string.
explicit
Message
(
const
char
*
str
)
:
ss_
(
new
internal
::
S
tr
S
tream
)
{
explicit
Message
(
const
char
*
str
)
:
ss_
(
new
::
std
::
s
tr
ings
tream
)
{
*
ss_
<<
str
;
}
~
Message
()
{
delete
ss_
;
}
#if GTEST_OS_SYMBIAN
// Streams a value (either a pointer or not) to this object.
template
<
typename
T
>
...
...
@@ -119,7 +118,7 @@ class GTEST_API_ Message {
// Streams a non-pointer value to this object.
template
<
typename
T
>
inline
Message
&
operator
<<
(
const
T
&
val
)
{
::
GTestStreamToHelper
(
ss_
,
val
);
::
GTestStreamToHelper
(
ss_
.
get
()
,
val
);
return
*
this
;
}
...
...
@@ -141,7 +140,7 @@ class GTEST_API_ Message {
if
(
pointer
==
NULL
)
{
*
ss_
<<
"(null)"
;
}
else
{
::
GTestStreamToHelper
(
ss_
,
pointer
);
::
GTestStreamToHelper
(
ss_
.
get
()
,
pointer
);
}
return
*
this
;
}
...
...
@@ -189,7 +188,7 @@ class GTEST_API_ Message {
//
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
internal
::
String
GetString
()
const
{
return
internal
::
StrStreamToString
(
ss_
);
return
internal
::
Str
ing
StreamToString
(
ss_
.
get
()
);
}
private:
...
...
@@ -203,17 +202,17 @@ class GTEST_API_ Message {
if
(
pointer
==
NULL
)
{
*
ss_
<<
"(null)"
;
}
else
{
::
GTestStreamToHelper
(
ss_
,
pointer
);
::
GTestStreamToHelper
(
ss_
.
get
()
,
pointer
);
}
}
template
<
typename
T
>
inline
void
StreamHelper
(
internal
::
false_type
/*dummy*/
,
const
T
&
value
)
{
::
GTestStreamToHelper
(
ss_
,
value
);
::
GTestStreamToHelper
(
ss_
.
get
()
,
value
);
}
#endif // GTEST_OS_SYMBIAN
// We'll hold the text streamed to this object here.
internal
::
StrStream
*
const
ss_
;
const
internal
::
scoped_ptr
<
::
std
::
stringstream
>
ss_
;
// We declare (but don't implement) this to prevent the compiler
// from implementing the assignment operator.
...
...
include/gtest/gtest.h
View file @
88e0df62
...
...
@@ -1517,18 +1517,18 @@ AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression,
return
AssertionSuccess
();
}
StrS
tream
expected_ss
;
::
std
::
strings
tream
expected_ss
;
expected_ss
<<
std
::
setprecision
(
std
::
numeric_limits
<
RawType
>::
digits10
+
2
)
<<
expected
;
StrS
tream
actual_ss
;
::
std
::
strings
tream
actual_ss
;
actual_ss
<<
std
::
setprecision
(
std
::
numeric_limits
<
RawType
>::
digits10
+
2
)
<<
actual
;
return
EqFailure
(
expected_expression
,
actual_expression
,
StrStreamToString
(
&
expected_ss
),
StrStreamToString
(
&
actual_ss
),
Str
ing
StreamToString
(
&
expected_ss
),
Str
ing
StreamToString
(
&
actual_ss
),
false
);
}
...
...
include/gtest/internal/gtest-port.h
View file @
88e0df62
...
...
@@ -732,8 +732,6 @@ typedef ::wstring wstring;
typedef
::
std
::
wstring
wstring
;
#endif // GTEST_HAS_GLOBAL_WSTRING
typedef
::
std
::
stringstream
StrStream
;
// A helper for suppressing warnings on constant condition. It just
// returns 'condition'.
GTEST_API_
bool
IsTrue
(
bool
condition
);
...
...
include/gtest/internal/gtest-string.h
View file @
88e0df62
...
...
@@ -329,9 +329,9 @@ inline ::std::ostream& operator<<(::std::ostream& os, const String& str) {
return
os
;
}
// Gets the content of the
S
tr
S
tream's buffer as a String. Each '\0'
// Gets the content of the
s
tr
ings
tream's buffer as a String. Each '\0'
// character in the buffer is replaced with "\\0".
GTEST_API_
String
StrStreamToString
(
StrS
tream
*
stream
);
GTEST_API_
String
Str
ing
StreamToString
(
::
std
::
strings
tream
*
stream
);
// Converts a streamable value to a String. A NULL pointer is
// converted to "(null)". When the input value is a ::string,
...
...
msvc/gtest-md.vcproj
View file @
88e0df62
...
...
@@ -100,82 +100,7 @@
Filter=
"cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier=
"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=
"..\src\gtest-death-test.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest-filepath.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest-port.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest-test-part.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest-typed-test.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest.cc"
>
RelativePath=
"..\src\gtest-all.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
...
...
@@ -194,42 +119,6 @@
Name=
"Header Files"
Filter=
"h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier=
"{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=
"..\include\gtest\internal\gtest-death-test-internal.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-death-test.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-filepath.h"
>
</File>
<File
RelativePath=
"..\src\gtest-internal-inl.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-internal.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-message.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-port.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-spi.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-string.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest_pred_impl.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest_prod.h"
>
</File>
</Filter>
</Files>
<Globals>
...
...
msvc/gtest.vcproj
View file @
88e0df62
...
...
@@ -100,82 +100,7 @@
Filter=
"cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier=
"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=
"..\src\gtest-death-test.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest-filepath.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest-test-part.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest-port.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest-typed-test.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
<FileConfiguration
Name=
"Release|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalIncludeDirectories=
""..";"..\include""
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\src\gtest.cc"
>
RelativePath=
"..\src\gtest-all.cc"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
...
...
@@ -194,42 +119,6 @@
Name=
"Header Files"
Filter=
"h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier=
"{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=
"..\include\gtest\internal\gtest-death-test-internal.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-death-test.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-filepath.h"
>
</File>
<File
RelativePath=
"..\src\gtest-internal-inl.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-internal.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-message.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-port.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-spi.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-string.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest_pred_impl.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest_prod.h"
>
</File>
</Filter>
</Files>
<Globals>
...
...
msvc/gtest_main-md.vcproj
View file @
88e0df62
...
...
@@ -122,42 +122,6 @@
Name=
"Header Files"
Filter=
"h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier=
"{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=
"..\include\gtest\internal\gtest-death-test-internal.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-death-test.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-filepath.h"
>
</File>
<File
RelativePath=
"..\src\gtest-internal-inl.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-internal.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-message.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-port.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-spi.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-string.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest_pred_impl.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest_prod.h"
>
</File>
</Filter>
</Files>
<Globals>
...
...
msvc/gtest_main.vcproj
View file @
88e0df62
...
...
@@ -122,42 +122,6 @@
Name=
"Header Files"
Filter=
"h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier=
"{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=
"..\include\gtest\internal\gtest-death-test-internal.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-death-test.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-filepath.h"
>
</File>
<File
RelativePath=
"..\src\gtest-internal-inl.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-internal.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-message.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-port.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest-spi.h"
>
</File>
<File
RelativePath=
"..\include\gtest\internal\gtest-string.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest_pred_impl.h"
>
</File>
<File
RelativePath=
"..\include\gtest\gtest_prod.h"
>
</File>
</Filter>
</Files>
<Globals>
...
...
src/gtest.cc
View file @
88e0df62
...
...
@@ -1072,18 +1072,18 @@ AssertionResult FloatingPointLE(const char* expr1,
// val2 is NaN, as the IEEE floating-point standard requires that
// any predicate involving a NaN must return false.
StrS
tream
val1_ss
;
::
std
::
strings
tream
val1_ss
;
val1_ss
<<
std
::
setprecision
(
std
::
numeric_limits
<
RawType
>::
digits10
+
2
)
<<
val1
;
StrS
tream
val2_ss
;
::
std
::
strings
tream
val2_ss
;
val2_ss
<<
std
::
setprecision
(
std
::
numeric_limits
<
RawType
>::
digits10
+
2
)
<<
val2
;
Message
msg
;
msg
<<
"Expected: ("
<<
expr1
<<
") <= ("
<<
expr2
<<
")
\n
"
<<
" Actual: "
<<
StrStreamToString
(
&
val1_ss
)
<<
" vs "
<<
StrStreamToString
(
&
val2_ss
);
<<
" Actual: "
<<
Str
ing
StreamToString
(
&
val1_ss
)
<<
" vs "
<<
Str
ing
StreamToString
(
&
val2_ss
);
return
AssertionFailure
(
msg
);
}
...
...
@@ -1508,7 +1508,7 @@ String WideStringToUtf8(const wchar_t* str, int num_chars) {
if
(
num_chars
==
-
1
)
num_chars
=
static_cast
<
int
>
(
wcslen
(
str
));
StrS
tream
stream
;
::
std
::
strings
tream
stream
;
for
(
int
i
=
0
;
i
<
num_chars
;
++
i
)
{
UInt32
unicode_code_point
;
...
...
@@ -1525,7 +1525,7 @@ String WideStringToUtf8(const wchar_t* str, int num_chars) {
char
buffer
[
32
];
// CodePointToUtf8 requires a buffer this big.
stream
<<
CodePointToUtf8
(
unicode_code_point
,
buffer
);
}
return
StrStreamToString
(
&
stream
);
return
Str
ing
StreamToString
(
&
stream
);
}
// Converts a wide C string to a String using the UTF-8 encoding.
...
...
@@ -1733,16 +1733,16 @@ String String::Format(const char * format, ...) {
}
}
// Converts the buffer in a
S
tr
S
tream to a String, converting NUL
// Converts the buffer in a
s
tr
ings
tream to a String, converting NUL
// bytes to "\\0" along the way.
String
StrStreamToString
(
StrS
tream
*
ss
)
{
String
Str
ing
StreamToString
(
::
std
::
strings
tream
*
ss
)
{
const
::
std
::
string
&
str
=
ss
->
str
();
const
char
*
const
start
=
str
.
c_str
();
const
char
*
const
end
=
start
+
str
.
length
();
// We need to use a helper
S
tr
S
tream to do this transformation
// We need to use a helper
s
tr
ings
tream to do this transformation
// because String doesn't support push_back().
StrS
tream
helper
;
::
std
::
strings
tream
helper
;
for
(
const
char
*
ch
=
start
;
ch
!=
end
;
++
ch
)
{
if
(
*
ch
==
'\0'
)
{
helper
<<
"
\\
0"
;
// Replaces NUL with "\\0";
...
...
@@ -3262,9 +3262,9 @@ void XmlUnitTestResultPrinter::PrintXmlTestCase(FILE* out,
"errors=
\"
0
\"
time=
\"
%s
\"
>
\n
"
,
FormatTimeInMillisAsSeconds
(
test_case
.
elapsed_time
()).
c_str
());
for
(
int
i
=
0
;
i
<
test_case
.
total_test_count
();
++
i
)
{
StrS
tream
stream
;
::
std
::
strings
tream
stream
;
OutputXmlTestInfo
(
&
stream
,
test_case
.
name
(),
*
test_case
.
GetTestInfo
(
i
));
fprintf
(
out
,
"%s"
,
StrStreamToString
(
&
stream
).
c_str
());
fprintf
(
out
,
"%s"
,
Str
ing
StreamToString
(
&
stream
).
c_str
());
}
fprintf
(
out
,
" </testsuite>
\n
"
);
}
...
...
test/gtest-message_test.cc
View file @
88e0df62
...
...
@@ -38,7 +38,6 @@
namespace
{
using
::
testing
::
Message
;
using
::
testing
::
internal
::
StrStream
;
// A helper function that turns a Message into a C string.
const
char
*
ToCString
(
const
Message
&
msg
)
{
...
...
@@ -154,9 +153,9 @@ TEST(MessageTest, GetString) {
// Tests streaming a Message object to an ostream.
TEST
(
MessageTest
,
StreamsToOStream
)
{
Message
msg
(
"Hello"
);
StrS
tream
ss
;
::
std
::
strings
tream
ss
;
ss
<<
msg
;
EXPECT_STREQ
(
"Hello"
,
testing
::
internal
::
StrStreamToString
(
&
ss
).
c_str
());
EXPECT_STREQ
(
"Hello"
,
testing
::
internal
::
Str
ing
StreamToString
(
&
ss
).
c_str
());
}
// Tests that a Message object doesn't take up too much stack space.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment