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
e92cceda
Commit
e92cceda
authored
Jan 08, 2010
by
zhanyong.wan
Browse files
Changes Message() to print double with enough precision by default.
parent
ef37aa40
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
57 additions
and
39 deletions
+57
-39
include/gtest/gtest-message.h
include/gtest/gtest-message.h
+7
-1
samples/prime_tables.h
samples/prime_tables.h
+1
-1
src/gtest.cc
src/gtest.cc
+8
-10
test/gtest-message_test.cc
test/gtest-message_test.cc
+17
-3
test/gtest_unittest.cc
test/gtest_unittest.cc
+24
-24
No files found.
include/gtest/gtest-message.h
View file @
e92cceda
...
...
@@ -46,6 +46,8 @@
#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
#include <limits>
#include <gtest/internal/gtest-string.h>
#include <gtest/internal/gtest-internal.h>
...
...
@@ -89,7 +91,11 @@ class Message {
// 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
::
StrStream
)
{}
Message
()
:
ss_
(
new
internal
::
StrStream
)
{
// 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
::
StrStream
)
{
// NOLINT
...
...
samples/prime_tables.h
View file @
e92cceda
...
...
@@ -116,7 +116,7 @@ class PreCalculatedPrimeTable : public PrimeTable {
const
int
is_prime_size_
;
bool
*
const
is_prime_
;
// Disables compiler w
q
arning "assignment operator could ot be generated."
// Disables compiler warning "assignment operator could
n
ot be generated."
void
operator
=
(
const
PreCalculatedPrimeTable
&
rhs
);
};
...
...
src/gtest.cc
View file @
e92cceda
...
...
@@ -43,6 +43,7 @@
#include <wctype.h>
#include <ostream>
#include <sstream>
#if GTEST_OS_LINUX
...
...
@@ -3168,14 +3169,11 @@ String XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const char* str) {
// </testsuite>
// </testsuites>
// Formats the given time in milliseconds as seconds. The returned
// C-string is owned by this function and cannot be released by the
// caller. Calling the function again invalidates the previous
// result.
const
char
*
FormatTimeInMillisAsSeconds
(
TimeInMillis
ms
)
{
static
String
str
;
str
=
(
Message
()
<<
(
ms
/
1000.0
)).
GetString
();
return
str
.
c_str
();
// Formats the given time in milliseconds as seconds.
std
::
string
FormatTimeInMillisAsSeconds
(
TimeInMillis
ms
)
{
::
std
::
stringstream
ss
;
ss
<<
ms
/
1000.0
;
return
ss
.
str
();
}
// Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
...
...
@@ -3249,7 +3247,7 @@ void XmlUnitTestResultPrinter::PrintXmlTestCase(FILE* out,
test_case
.
disabled_test_count
());
fprintf
(
out
,
"errors=
\"
0
\"
time=
\"
%s
\"
>
\n
"
,
FormatTimeInMillisAsSeconds
(
test_case
.
elapsed_time
()));
FormatTimeInMillisAsSeconds
(
test_case
.
elapsed_time
())
.
c_str
()
);
for
(
int
i
=
0
;
i
<
test_case
.
total_test_count
();
++
i
)
{
StrStream
stream
;
OutputXmlTestInfo
(
&
stream
,
test_case
.
name
(),
*
test_case
.
GetTestInfo
(
i
));
...
...
@@ -3268,7 +3266,7 @@ void XmlUnitTestResultPrinter::PrintXmlUnitTest(FILE* out,
unit_test
.
total_test_count
(),
unit_test
.
failed_test_count
(),
unit_test
.
disabled_test_count
(),
FormatTimeInMillisAsSeconds
(
unit_test
.
elapsed_time
()));
FormatTimeInMillisAsSeconds
(
unit_test
.
elapsed_time
())
.
c_str
()
);
if
(
GTEST_FLAG
(
shuffle
))
{
fprintf
(
out
,
"random_seed=
\"
%d
\"
"
,
unit_test
.
random_seed
());
}
...
...
test/gtest-message_test.cc
View file @
e92cceda
...
...
@@ -68,6 +68,23 @@ TEST(MessageTest, ConstructsFromCString) {
EXPECT_STREQ
(
"Hello"
,
ToCString
(
msg
));
}
// Tests streaming a float.
TEST
(
MessageTest
,
StreamsFloat
)
{
const
char
*
const
s
=
ToCString
(
Message
()
<<
1.23456
F
<<
" "
<<
2.34567
F
);
// Both numbers should be printed with enough precision.
EXPECT_PRED_FORMAT2
(
testing
::
IsSubstring
,
"1.234560"
,
s
);
EXPECT_PRED_FORMAT2
(
testing
::
IsSubstring
,
" 2.345669"
,
s
);
}
// Tests streaming a double.
TEST
(
MessageTest
,
StreamsDouble
)
{
const
char
*
const
s
=
ToCString
(
Message
()
<<
1260570880.4555497
<<
" "
<<
1260572265.1954534
);
// Both numbers should be printed with enough precision.
EXPECT_PRED_FORMAT2
(
testing
::
IsSubstring
,
"1260570880.45"
,
s
);
EXPECT_PRED_FORMAT2
(
testing
::
IsSubstring
,
" 1260572265.19"
,
s
);
}
// Tests streaming a non-char pointer.
TEST
(
MessageTest
,
StreamsPointer
)
{
int
n
=
0
;
...
...
@@ -93,9 +110,6 @@ TEST(MessageTest, StreamsNullCString) {
}
// Tests streaming std::string.
//
// As std::string has problem in MSVC when exception is disabled, we only
// test this where std::string can be used.
TEST
(
MessageTest
,
StreamsString
)
{
const
::
std
::
string
str
(
"Hello"
);
EXPECT_STREQ
(
"Hello"
,
ToCString
(
Message
()
<<
str
));
...
...
test/gtest_unittest.cc
View file @
e92cceda
...
...
@@ -82,7 +82,7 @@ namespace testing {
namespace
internal
{
bool
ShouldUseColor
(
bool
stdout_is_tty
);
const
char
*
FormatTimeInMillisAsSeconds
(
TimeInMillis
ms
);
::
std
::
string
FormatTimeInMillisAsSeconds
(
TimeInMillis
ms
);
bool
ParseInt32Flag
(
const
char
*
str
,
const
char
*
flag
,
Int32
*
value
);
// Used for testing the flag parsing.
...
...
@@ -270,23 +270,23 @@ TEST(GetTestTypeIdTest, ReturnsTheSameValueInsideOrOutsideOfGoogleTest) {
// Tests FormatTimeInMillisAsSeconds().
TEST
(
FormatTimeInMillisAsSecondsTest
,
FormatsZero
)
{
EXPECT_
STR
EQ
(
"0"
,
FormatTimeInMillisAsSeconds
(
0
));
EXPECT_EQ
(
"0"
,
FormatTimeInMillisAsSeconds
(
0
));
}
TEST
(
FormatTimeInMillisAsSecondsTest
,
FormatsPositiveNumber
)
{
EXPECT_
STR
EQ
(
"0.003"
,
FormatTimeInMillisAsSeconds
(
3
));
EXPECT_
STR
EQ
(
"0.01"
,
FormatTimeInMillisAsSeconds
(
10
));
EXPECT_
STR
EQ
(
"0.2"
,
FormatTimeInMillisAsSeconds
(
200
));
EXPECT_
STR
EQ
(
"1.2"
,
FormatTimeInMillisAsSeconds
(
1200
));
EXPECT_
STR
EQ
(
"3"
,
FormatTimeInMillisAsSeconds
(
3000
));
EXPECT_EQ
(
"0.003"
,
FormatTimeInMillisAsSeconds
(
3
));
EXPECT_EQ
(
"0.01"
,
FormatTimeInMillisAsSeconds
(
10
));
EXPECT_EQ
(
"0.2"
,
FormatTimeInMillisAsSeconds
(
200
));
EXPECT_EQ
(
"1.2"
,
FormatTimeInMillisAsSeconds
(
1200
));
EXPECT_EQ
(
"3"
,
FormatTimeInMillisAsSeconds
(
3000
));
}
TEST
(
FormatTimeInMillisAsSecondsTest
,
FormatsNegativeNumber
)
{
EXPECT_
STR
EQ
(
"-0.003"
,
FormatTimeInMillisAsSeconds
(
-
3
));
EXPECT_
STR
EQ
(
"-0.01"
,
FormatTimeInMillisAsSeconds
(
-
10
));
EXPECT_
STR
EQ
(
"-0.2"
,
FormatTimeInMillisAsSeconds
(
-
200
));
EXPECT_
STR
EQ
(
"-1.2"
,
FormatTimeInMillisAsSeconds
(
-
1200
));
EXPECT_
STR
EQ
(
"-3"
,
FormatTimeInMillisAsSeconds
(
-
3000
));
EXPECT_EQ
(
"-0.003"
,
FormatTimeInMillisAsSeconds
(
-
3
));
EXPECT_EQ
(
"-0.01"
,
FormatTimeInMillisAsSeconds
(
-
10
));
EXPECT_EQ
(
"-0.2"
,
FormatTimeInMillisAsSeconds
(
-
200
));
EXPECT_EQ
(
"-1.2"
,
FormatTimeInMillisAsSeconds
(
-
1200
));
EXPECT_EQ
(
"-3"
,
FormatTimeInMillisAsSeconds
(
-
3000
));
}
#if !GTEST_OS_SYMBIAN
...
...
@@ -3095,9 +3095,9 @@ TEST_F(FloatTest, Commutative) {
TEST_F
(
FloatTest
,
EXPECT_NEAR
)
{
EXPECT_NEAR
(
-
1.0
f
,
-
1.1
f
,
0.2
f
);
EXPECT_NEAR
(
2.0
f
,
3.0
f
,
1.0
f
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_NEAR
(
1.0
f
,
1.
2
f
,
0.
1
f
),
// NOLINT
"The difference between 1.0f and 1.
2
f is 0.
2
, "
"which exceeds 0.
1
f"
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_NEAR
(
1.0
f
,
1.
5
f
,
0.
25
f
),
// NOLINT
"The difference between 1.0f and 1.
5
f is 0.
5
, "
"which exceeds 0.
25
f"
);
// To work around a bug in gcc 2.95.0, there is intentionally no
// space after the first comma in the previous line.
}
...
...
@@ -3106,9 +3106,9 @@ TEST_F(FloatTest, EXPECT_NEAR) {
TEST_F
(
FloatTest
,
ASSERT_NEAR
)
{
ASSERT_NEAR
(
-
1.0
f
,
-
1.1
f
,
0.2
f
);
ASSERT_NEAR
(
2.0
f
,
3.0
f
,
1.0
f
);
EXPECT_FATAL_FAILURE
(
ASSERT_NEAR
(
1.0
f
,
1.
2
f
,
0.
1
f
),
// NOLINT
"The difference between 1.0f and 1.
2
f is 0.
2
, "
"which exceeds 0.
1
f"
);
EXPECT_FATAL_FAILURE
(
ASSERT_NEAR
(
1.0
f
,
1.
5
f
,
0.
25
f
),
// NOLINT
"The difference between 1.0f and 1.
5
f is 0.
5
, "
"which exceeds 0.
25
f"
);
// To work around a bug in gcc 2.95.0, there is intentionally no
// space after the first comma in the previous line.
}
...
...
@@ -3261,9 +3261,9 @@ TEST_F(DoubleTest, Commutative) {
TEST_F
(
DoubleTest
,
EXPECT_NEAR
)
{
EXPECT_NEAR
(
-
1.0
,
-
1.1
,
0.2
);
EXPECT_NEAR
(
2.0
,
3.0
,
1.0
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_NEAR
(
1.0
,
1.
2
,
0.
1
),
// NOLINT
"The difference between 1.0 and 1.
2
is 0.
2
, "
"which exceeds 0.
1
"
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_NEAR
(
1.0
,
1.
5
,
0.
25
),
// NOLINT
"The difference between 1.0 and 1.
5
is 0.
5
, "
"which exceeds 0.
25
"
);
// To work around a bug in gcc 2.95.0, there is intentionally no
// space after the first comma in the previous statement.
}
...
...
@@ -3272,9 +3272,9 @@ TEST_F(DoubleTest, EXPECT_NEAR) {
TEST_F
(
DoubleTest
,
ASSERT_NEAR
)
{
ASSERT_NEAR
(
-
1.0
,
-
1.1
,
0.2
);
ASSERT_NEAR
(
2.0
,
3.0
,
1.0
);
EXPECT_FATAL_FAILURE
(
ASSERT_NEAR
(
1.0
,
1.
2
,
0.
1
),
// NOLINT
"The difference between 1.0 and 1.
2
is 0.
2
, "
"which exceeds 0.
1
"
);
EXPECT_FATAL_FAILURE
(
ASSERT_NEAR
(
1.0
,
1.
5
,
0.
25
),
// NOLINT
"The difference between 1.0 and 1.
5
is 0.
5
, "
"which exceeds 0.
25
"
);
// To work around a bug in gcc 2.95.0, there is intentionally no
// space after the first comma in the previous statement.
}
...
...
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