mirror of
https://github.com/google/googletest.git
synced 2024-12-28 19:15:24 +08:00
Change error message of EXPECT_EQ to treat lhs and rhs equivalently.
This commit is contained in:
parent
ff5ffd457e
commit
f364e18837
@ -312,8 +312,8 @@ want to learn more, see
|
||||
|
||||
| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
|
||||
|:--------------------|:-----------------------|:-------------|
|
||||
| `ASSERT_FLOAT_EQ(`_expected, actual_`);` | `EXPECT_FLOAT_EQ(`_expected, actual_`);` | the two `float` values are almost equal |
|
||||
| `ASSERT_DOUBLE_EQ(`_expected, actual_`);` | `EXPECT_DOUBLE_EQ(`_expected, actual_`);` | the two `double` values are almost equal |
|
||||
| `ASSERT_FLOAT_EQ(`_val1, val2_`);` | `EXPECT_FLOAT_EQ(`_val1, val2_`);` | the two `float` values are almost equal |
|
||||
| `ASSERT_DOUBLE_EQ(`_val1, val2_`);` | `EXPECT_DOUBLE_EQ(`_val1, val2_`);` | the two `double` values are almost equal |
|
||||
|
||||
By "almost equal", we mean the two values are within 4 ULP's from each
|
||||
other.
|
||||
|
@ -127,18 +127,14 @@ This section describes assertions that compare two values.
|
||||
|
||||
| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
|
||||
|:--------------------|:-----------------------|:-------------|
|
||||
|`ASSERT_EQ(`_expected_`, `_actual_`);`|`EXPECT_EQ(`_expected_`, `_actual_`);`| _expected_ `==` _actual_ |
|
||||
|`ASSERT_NE(`_val1_`, `_val2_`);` |`EXPECT_NE(`_val1_`, `_val2_`);` | _val1_ `!=` _val2_ |
|
||||
|`ASSERT_LT(`_val1_`, `_val2_`);` |`EXPECT_LT(`_val1_`, `_val2_`);` | _val1_ `<` _val2_ |
|
||||
|`ASSERT_LE(`_val1_`, `_val2_`);` |`EXPECT_LE(`_val1_`, `_val2_`);` | _val1_ `<=` _val2_ |
|
||||
|`ASSERT_GT(`_val1_`, `_val2_`);` |`EXPECT_GT(`_val1_`, `_val2_`);` | _val1_ `>` _val2_ |
|
||||
|`ASSERT_GE(`_val1_`, `_val2_`);` |`EXPECT_GE(`_val1_`, `_val2_`);` | _val1_ `>=` _val2_ |
|
||||
|`ASSERT_EQ(`_val1_`, `_val2_`);`|`EXPECT_EQ(`_val1_`, `_val2_`);`| _val1_ `==` _val2_ |
|
||||
|`ASSERT_NE(`_val1_`, `_val2_`);`|`EXPECT_NE(`_val1_`, `_val2_`);`| _val1_ `!=` _val2_ |
|
||||
|`ASSERT_LT(`_val1_`, `_val2_`);`|`EXPECT_LT(`_val1_`, `_val2_`);`| _val1_ `<` _val2_ |
|
||||
|`ASSERT_LE(`_val1_`, `_val2_`);`|`EXPECT_LE(`_val1_`, `_val2_`);`| _val1_ `<=` _val2_ |
|
||||
|`ASSERT_GT(`_val1_`, `_val2_`);`|`EXPECT_GT(`_val1_`, `_val2_`);`| _val1_ `>` _val2_ |
|
||||
|`ASSERT_GE(`_val1_`, `_val2_`);`|`EXPECT_GE(`_val1_`, `_val2_`);`| _val1_ `>=` _val2_ |
|
||||
|
||||
In the event of a failure, Google Test prints both _val1_ and _val2_
|
||||
. In `ASSERT_EQ*` and `EXPECT_EQ*` (and all other equality assertions
|
||||
we'll introduce later), you should put the expression you want to test
|
||||
in the position of _actual_, and put its expected value in _expected_,
|
||||
as Google Test's failure messages are optimized for this convention.
|
||||
In the event of a failure, Google Test prints both _val1_ and _val2_.
|
||||
|
||||
Value arguments must be comparable by the assertion's comparison
|
||||
operator or you'll get a compiler error. We used to require the
|
||||
@ -172,6 +168,10 @@ and `wstring`).
|
||||
|
||||
_Availability_: Linux, Windows, Mac.
|
||||
|
||||
_Historical note_: Before February 2016 `*_EQ` had a convention of calling it as
|
||||
`ASSERT_EQ(expected, actual)`, so lots of existing code uses this order.
|
||||
Now `*_EQ` treats both parameters in the same way.
|
||||
|
||||
## String Comparison ##
|
||||
|
||||
The assertions in this group compare two **C strings**. If you want to compare
|
||||
@ -179,9 +179,9 @@ two `string` objects, use `EXPECT_EQ`, `EXPECT_NE`, and etc instead.
|
||||
|
||||
| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
|
||||
|:--------------------|:-----------------------|:-------------|
|
||||
| `ASSERT_STREQ(`_expected\_str_`, `_actual\_str_`);` | `EXPECT_STREQ(`_expected\_str_`, `_actual\_str_`);` | the two C strings have the same content |
|
||||
| `ASSERT_STREQ(`_str1_`, `_str2_`);` | `EXPECT_STREQ(`_str1_`, `_str_2`);` | the two C strings have the same content |
|
||||
| `ASSERT_STRNE(`_str1_`, `_str2_`);` | `EXPECT_STRNE(`_str1_`, `_str2_`);` | the two C strings have different content |
|
||||
| `ASSERT_STRCASEEQ(`_expected\_str_`, `_actual\_str_`);`| `EXPECT_STRCASEEQ(`_expected\_str_`, `_actual\_str_`);` | the two C strings have the same content, ignoring case |
|
||||
| `ASSERT_STRCASEEQ(`_str1_`, `_str2_`);`| `EXPECT_STRCASEEQ(`_str1_`, `_str2_`);` | the two C strings have the same content, ignoring case |
|
||||
| `ASSERT_STRCASENE(`_str1_`, `_str2_`);`| `EXPECT_STRCASENE(`_str1_`, `_str2_`);` | the two C strings have different content, ignoring case |
|
||||
|
||||
Note that "CASE" in an assertion name means that case is ignored.
|
||||
|
@ -1372,39 +1372,38 @@ namespace internal {
|
||||
// frame size of CmpHelperEQ. This helps reduce the overhead of some sanitizers
|
||||
// when calling EXPECT_* in a tight loop.
|
||||
template <typename T1, typename T2>
|
||||
AssertionResult CmpHelperEQFailure(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const T1& expected, const T2& actual) {
|
||||
return EqFailure(expected_expression,
|
||||
actual_expression,
|
||||
FormatForComparisonFailureMessage(expected, actual),
|
||||
FormatForComparisonFailureMessage(actual, expected),
|
||||
AssertionResult CmpHelperEQFailure(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
const T1& lhs, const T2& rhs) {
|
||||
return EqFailure(lhs_expression,
|
||||
rhs_expression,
|
||||
FormatForComparisonFailureMessage(lhs, rhs),
|
||||
FormatForComparisonFailureMessage(rhs, lhs),
|
||||
false);
|
||||
}
|
||||
|
||||
// The helper function for {ASSERT|EXPECT}_EQ.
|
||||
template <typename T1, typename T2>
|
||||
AssertionResult CmpHelperEQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const T1& expected,
|
||||
const T2& actual) {
|
||||
AssertionResult CmpHelperEQ(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
const T1& lhs,
|
||||
const T2& rhs) {
|
||||
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4389 /* signed/unsigned mismatch */)
|
||||
if (expected == actual) {
|
||||
if (lhs == rhs) {
|
||||
return AssertionSuccess();
|
||||
}
|
||||
GTEST_DISABLE_MSC_WARNINGS_POP_()
|
||||
|
||||
return CmpHelperEQFailure(expected_expression, actual_expression, expected,
|
||||
actual);
|
||||
return CmpHelperEQFailure(lhs_expression, rhs_expression, lhs, rhs);
|
||||
}
|
||||
|
||||
// With this overloaded version, we allow anonymous enums to be used
|
||||
// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums
|
||||
// can be implicitly cast to BiggestInt.
|
||||
GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
BiggestInt expected,
|
||||
BiggestInt actual);
|
||||
GTEST_API_ AssertionResult CmpHelperEQ(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
BiggestInt lhs,
|
||||
BiggestInt rhs);
|
||||
|
||||
// The helper class for {ASSERT|EXPECT}_EQ. The template argument
|
||||
// lhs_is_null_literal is true iff the first argument to ASSERT_EQ()
|
||||
@ -1415,12 +1414,11 @@ class EqHelper {
|
||||
public:
|
||||
// This templatized version is for the general case.
|
||||
template <typename T1, typename T2>
|
||||
static AssertionResult Compare(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const T1& expected,
|
||||
const T2& actual) {
|
||||
return CmpHelperEQ(expected_expression, actual_expression, expected,
|
||||
actual);
|
||||
static AssertionResult Compare(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
const T1& lhs,
|
||||
const T2& rhs) {
|
||||
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
|
||||
}
|
||||
|
||||
// With this overloaded version, we allow anonymous enums to be used
|
||||
@ -1429,12 +1427,11 @@ class EqHelper {
|
||||
//
|
||||
// Even though its body looks the same as the above version, we
|
||||
// cannot merge the two, as it will make anonymous enums unhappy.
|
||||
static AssertionResult Compare(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
BiggestInt expected,
|
||||
BiggestInt actual) {
|
||||
return CmpHelperEQ(expected_expression, actual_expression, expected,
|
||||
actual);
|
||||
static AssertionResult Compare(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
BiggestInt lhs,
|
||||
BiggestInt rhs) {
|
||||
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1449,37 +1446,36 @@ class EqHelper<true> {
|
||||
// EXPECT_EQ(false, a_bool).
|
||||
template <typename T1, typename T2>
|
||||
static AssertionResult Compare(
|
||||
const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const T1& expected,
|
||||
const T2& actual,
|
||||
const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
const T1& lhs,
|
||||
const T2& rhs,
|
||||
// The following line prevents this overload from being considered if T2
|
||||
// is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr)
|
||||
// expands to Compare("", "", NULL, my_ptr), which requires a conversion
|
||||
// to match the Secret* in the other overload, which would otherwise make
|
||||
// this template match better.
|
||||
typename EnableIf<!is_pointer<T2>::value>::type* = 0) {
|
||||
return CmpHelperEQ(expected_expression, actual_expression, expected,
|
||||
actual);
|
||||
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
|
||||
}
|
||||
|
||||
// This version will be picked when the second argument to ASSERT_EQ() is a
|
||||
// pointer, e.g. ASSERT_EQ(NULL, a_pointer).
|
||||
template <typename T>
|
||||
static AssertionResult Compare(
|
||||
const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
// We used to have a second template parameter instead of Secret*. That
|
||||
// template parameter would deduce to 'long', making this a better match
|
||||
// than the first overload even without the first overload's EnableIf.
|
||||
// Unfortunately, gcc with -Wconversion-null warns when "passing NULL to
|
||||
// non-pointer argument" (even a deduced integral argument), so the old
|
||||
// implementation caused warnings in user code.
|
||||
Secret* /* expected (NULL) */,
|
||||
T* actual) {
|
||||
// We already know that 'expected' is a null pointer.
|
||||
return CmpHelperEQ(expected_expression, actual_expression,
|
||||
static_cast<T*>(NULL), actual);
|
||||
Secret* /* lhs (NULL) */,
|
||||
T* rhs) {
|
||||
// We already know that 'lhs' is a null pointer.
|
||||
return CmpHelperEQ(lhs_expression, rhs_expression,
|
||||
static_cast<T*>(NULL), rhs);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1538,18 +1534,18 @@ GTEST_IMPL_CMP_HELPER_(GT, >);
|
||||
// The helper function for {ASSERT|EXPECT}_STREQ.
|
||||
//
|
||||
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
|
||||
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const char* expected,
|
||||
const char* actual);
|
||||
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
|
||||
const char* s2_expression,
|
||||
const char* s1,
|
||||
const char* s2);
|
||||
|
||||
// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
|
||||
//
|
||||
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
|
||||
GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const char* expected,
|
||||
const char* actual);
|
||||
GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression,
|
||||
const char* s2_expression,
|
||||
const char* s1,
|
||||
const char* s2);
|
||||
|
||||
// The helper function for {ASSERT|EXPECT}_STRNE.
|
||||
//
|
||||
@ -1571,10 +1567,10 @@ GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
|
||||
// Helper function for *_STREQ on wide strings.
|
||||
//
|
||||
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
|
||||
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const wchar_t* expected,
|
||||
const wchar_t* actual);
|
||||
GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
|
||||
const char* s2_expression,
|
||||
const wchar_t* s1,
|
||||
const wchar_t* s2);
|
||||
|
||||
// Helper function for *_STRNE on wide strings.
|
||||
//
|
||||
@ -1632,28 +1628,28 @@ namespace internal {
|
||||
//
|
||||
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
|
||||
template <typename RawType>
|
||||
AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
RawType expected,
|
||||
RawType actual) {
|
||||
const FloatingPoint<RawType> lhs(expected), rhs(actual);
|
||||
AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
RawType lhs_value,
|
||||
RawType rhs_value) {
|
||||
const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value);
|
||||
|
||||
if (lhs.AlmostEquals(rhs)) {
|
||||
return AssertionSuccess();
|
||||
}
|
||||
|
||||
::std::stringstream expected_ss;
|
||||
expected_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
|
||||
<< expected;
|
||||
::std::stringstream lhs_ss;
|
||||
lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
|
||||
<< lhs_value;
|
||||
|
||||
::std::stringstream actual_ss;
|
||||
actual_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
|
||||
<< actual;
|
||||
::std::stringstream rhs_ss;
|
||||
rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
|
||||
<< rhs_value;
|
||||
|
||||
return EqFailure(expected_expression,
|
||||
actual_expression,
|
||||
StringStreamToString(&expected_ss),
|
||||
StringStreamToString(&actual_ss),
|
||||
return EqFailure(lhs_expression,
|
||||
rhs_expression,
|
||||
StringStreamToString(&lhs_ss),
|
||||
StringStreamToString(&rhs_ss),
|
||||
false);
|
||||
}
|
||||
|
||||
@ -1879,12 +1875,12 @@ class TestWithParam : public Test, public WithParamInterface<T> {
|
||||
|
||||
// Macros for testing equalities and inequalities.
|
||||
//
|
||||
// * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual
|
||||
// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
|
||||
// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
|
||||
// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
|
||||
// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
|
||||
// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
|
||||
// * {ASSERT|EXPECT}_EQ(v1, v2): Tests that v1 == v2
|
||||
// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
|
||||
// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
|
||||
// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
|
||||
// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
|
||||
// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
|
||||
//
|
||||
// When they are not, Google Test prints both the tested expressions and
|
||||
// their actual values. The values must be compatible built-in types,
|
||||
@ -1906,8 +1902,8 @@ class TestWithParam : public Test, public WithParamInterface<T> {
|
||||
// are related, not how their content is related. To compare two C
|
||||
// strings by content, use {ASSERT|EXPECT}_STR*().
|
||||
//
|
||||
// 3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to
|
||||
// {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you
|
||||
// 3. {ASSERT|EXPECT}_EQ(v1, v2) is preferred to
|
||||
// {ASSERT|EXPECT}_TRUE(v1 == v2), as the former tells you
|
||||
// what the actual value is when it fails, and similarly for the
|
||||
// other comparisons.
|
||||
//
|
||||
@ -1923,12 +1919,12 @@ class TestWithParam : public Test, public WithParamInterface<T> {
|
||||
// ASSERT_LT(i, array_size);
|
||||
// ASSERT_GT(records.size(), 0) << "There is no record left.";
|
||||
|
||||
#define EXPECT_EQ(expected, actual) \
|
||||
#define EXPECT_EQ(val1, val2) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal:: \
|
||||
EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
|
||||
expected, actual)
|
||||
#define EXPECT_NE(expected, actual) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual)
|
||||
EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
|
||||
val1, val2)
|
||||
#define EXPECT_NE(val1, val2) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
|
||||
#define EXPECT_LE(val1, val2) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
|
||||
#define EXPECT_LT(val1, val2) \
|
||||
@ -1938,10 +1934,10 @@ class TestWithParam : public Test, public WithParamInterface<T> {
|
||||
#define EXPECT_GT(val1, val2) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
|
||||
|
||||
#define GTEST_ASSERT_EQ(expected, actual) \
|
||||
#define GTEST_ASSERT_EQ(val1, val2) \
|
||||
ASSERT_PRED_FORMAT2(::testing::internal:: \
|
||||
EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
|
||||
expected, actual)
|
||||
EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
|
||||
val1, val2)
|
||||
#define GTEST_ASSERT_NE(val1, val2) \
|
||||
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
|
||||
#define GTEST_ASSERT_LE(val1, val2) \
|
||||
@ -1996,29 +1992,29 @@ class TestWithParam : public Test, public WithParamInterface<T> {
|
||||
//
|
||||
// These macros evaluate their arguments exactly once.
|
||||
|
||||
#define EXPECT_STREQ(expected, actual) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
|
||||
#define EXPECT_STREQ(s1, s2) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
|
||||
#define EXPECT_STRNE(s1, s2) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
|
||||
#define EXPECT_STRCASEEQ(expected, actual) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
|
||||
#define EXPECT_STRCASEEQ(s1, s2) \
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
|
||||
#define EXPECT_STRCASENE(s1, s2)\
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
|
||||
|
||||
#define ASSERT_STREQ(expected, actual) \
|
||||
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
|
||||
#define ASSERT_STREQ(s1, s2) \
|
||||
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
|
||||
#define ASSERT_STRNE(s1, s2) \
|
||||
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
|
||||
#define ASSERT_STRCASEEQ(expected, actual) \
|
||||
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
|
||||
#define ASSERT_STRCASEEQ(s1, s2) \
|
||||
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
|
||||
#define ASSERT_STRCASENE(s1, s2)\
|
||||
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
|
||||
|
||||
// Macros for comparing floating-point numbers.
|
||||
//
|
||||
// * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual):
|
||||
// * {ASSERT|EXPECT}_FLOAT_EQ(val1, val2):
|
||||
// Tests that two float values are almost equal.
|
||||
// * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual):
|
||||
// * {ASSERT|EXPECT}_DOUBLE_EQ(val1, val2):
|
||||
// Tests that two double values are almost equal.
|
||||
// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
|
||||
// Tests that v1 and v2 are within the given distance to each other.
|
||||
@ -2028,21 +2024,21 @@ class TestWithParam : public Test, public WithParamInterface<T> {
|
||||
// FloatingPoint template class in gtest-internal.h if you are
|
||||
// interested in the implementation details.
|
||||
|
||||
#define EXPECT_FLOAT_EQ(expected, actual)\
|
||||
#define EXPECT_FLOAT_EQ(val1, val2)\
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
|
||||
expected, actual)
|
||||
val1, val2)
|
||||
|
||||
#define EXPECT_DOUBLE_EQ(expected, actual)\
|
||||
#define EXPECT_DOUBLE_EQ(val1, val2)\
|
||||
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
|
||||
expected, actual)
|
||||
val1, val2)
|
||||
|
||||
#define ASSERT_FLOAT_EQ(expected, actual)\
|
||||
#define ASSERT_FLOAT_EQ(val1, val2)\
|
||||
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
|
||||
expected, actual)
|
||||
val1, val2)
|
||||
|
||||
#define ASSERT_DOUBLE_EQ(expected, actual)\
|
||||
#define ASSERT_DOUBLE_EQ(val1, val2)\
|
||||
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
|
||||
expected, actual)
|
||||
val1, val2)
|
||||
|
||||
#define EXPECT_NEAR(val1, val2, abs_error)\
|
||||
EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
|
||||
|
@ -1301,41 +1301,41 @@ std::vector<std::string> SplitEscapedString(const std::string& str) {
|
||||
// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
|
||||
// where foo is 5 and bar is 6, we have:
|
||||
//
|
||||
// expected_expression: "foo"
|
||||
// actual_expression: "bar"
|
||||
// expected_value: "5"
|
||||
// actual_value: "6"
|
||||
// lhs_expression: "foo"
|
||||
// rhs_expression: "bar"
|
||||
// lhs_value: "5"
|
||||
// rhs_value: "6"
|
||||
//
|
||||
// The ignoring_case parameter is true iff the assertion is a
|
||||
// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will
|
||||
// *_STRCASEEQ*. When it's true, the string "Ignoring case" will
|
||||
// be inserted into the message.
|
||||
AssertionResult EqFailure(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const std::string& expected_value,
|
||||
const std::string& actual_value,
|
||||
AssertionResult EqFailure(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
const std::string& lhs_value,
|
||||
const std::string& rhs_value,
|
||||
bool ignoring_case) {
|
||||
Message msg;
|
||||
msg << "Value of: " << actual_expression;
|
||||
if (actual_value != actual_expression) {
|
||||
msg << "\n Actual: " << actual_value;
|
||||
msg << " Expected: " << lhs_expression;
|
||||
if (lhs_value != lhs_expression) {
|
||||
msg << "\n Which is: " << lhs_value;
|
||||
}
|
||||
msg << "\nTo be equal to: " << rhs_expression;
|
||||
if (rhs_value != rhs_expression) {
|
||||
msg << "\n Which is: " << rhs_value;
|
||||
}
|
||||
|
||||
msg << "\nExpected: " << expected_expression;
|
||||
if (ignoring_case) {
|
||||
msg << " (ignoring case)";
|
||||
}
|
||||
if (expected_value != expected_expression) {
|
||||
msg << "\nWhich is: " << expected_value;
|
||||
msg << "\nIgnoring case";
|
||||
}
|
||||
|
||||
if (!expected_value.empty() && !actual_value.empty()) {
|
||||
const std::vector<std::string> expected_lines =
|
||||
SplitEscapedString(expected_value);
|
||||
const std::vector<std::string> actual_lines =
|
||||
SplitEscapedString(actual_value);
|
||||
if (expected_lines.size() > 1 || actual_lines.size() > 1) {
|
||||
if (!lhs_value.empty() && !rhs_value.empty()) {
|
||||
const std::vector<std::string> lhs_lines =
|
||||
SplitEscapedString(lhs_value);
|
||||
const std::vector<std::string> rhs_lines =
|
||||
SplitEscapedString(rhs_value);
|
||||
if (lhs_lines.size() > 1 || rhs_lines.size() > 1) {
|
||||
msg << "\nWith diff:\n"
|
||||
<< edit_distance::CreateUnifiedDiff(expected_lines, actual_lines);
|
||||
<< edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1434,18 +1434,18 @@ namespace internal {
|
||||
|
||||
// The helper function for {ASSERT|EXPECT}_EQ with int or enum
|
||||
// arguments.
|
||||
AssertionResult CmpHelperEQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
BiggestInt expected,
|
||||
BiggestInt actual) {
|
||||
if (expected == actual) {
|
||||
AssertionResult CmpHelperEQ(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
BiggestInt lhs,
|
||||
BiggestInt rhs) {
|
||||
if (lhs == rhs) {
|
||||
return AssertionSuccess();
|
||||
}
|
||||
|
||||
return EqFailure(expected_expression,
|
||||
actual_expression,
|
||||
FormatForComparisonFailureMessage(expected, actual),
|
||||
FormatForComparisonFailureMessage(actual, expected),
|
||||
return EqFailure(lhs_expression,
|
||||
rhs_expression,
|
||||
FormatForComparisonFailureMessage(lhs, rhs),
|
||||
FormatForComparisonFailureMessage(rhs, lhs),
|
||||
false);
|
||||
}
|
||||
|
||||
@ -1484,34 +1484,34 @@ GTEST_IMPL_CMP_HELPER_(GT, > )
|
||||
#undef GTEST_IMPL_CMP_HELPER_
|
||||
|
||||
// The helper function for {ASSERT|EXPECT}_STREQ.
|
||||
AssertionResult CmpHelperSTREQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const char* expected,
|
||||
const char* actual) {
|
||||
if (String::CStringEquals(expected, actual)) {
|
||||
AssertionResult CmpHelperSTREQ(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
const char* lhs,
|
||||
const char* rhs) {
|
||||
if (String::CStringEquals(lhs, rhs)) {
|
||||
return AssertionSuccess();
|
||||
}
|
||||
|
||||
return EqFailure(expected_expression,
|
||||
actual_expression,
|
||||
PrintToString(expected),
|
||||
PrintToString(actual),
|
||||
return EqFailure(lhs_expression,
|
||||
rhs_expression,
|
||||
PrintToString(lhs),
|
||||
PrintToString(rhs),
|
||||
false);
|
||||
}
|
||||
|
||||
// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
|
||||
AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const char* expected,
|
||||
const char* actual) {
|
||||
if (String::CaseInsensitiveCStringEquals(expected, actual)) {
|
||||
AssertionResult CmpHelperSTRCASEEQ(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
const char* lhs,
|
||||
const char* rhs) {
|
||||
if (String::CaseInsensitiveCStringEquals(lhs, rhs)) {
|
||||
return AssertionSuccess();
|
||||
}
|
||||
|
||||
return EqFailure(expected_expression,
|
||||
actual_expression,
|
||||
PrintToString(expected),
|
||||
PrintToString(actual),
|
||||
return EqFailure(lhs_expression,
|
||||
rhs_expression,
|
||||
PrintToString(lhs),
|
||||
PrintToString(rhs),
|
||||
true);
|
||||
}
|
||||
|
||||
@ -1866,18 +1866,18 @@ bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {
|
||||
}
|
||||
|
||||
// Helper function for *_STREQ on wide strings.
|
||||
AssertionResult CmpHelperSTREQ(const char* expected_expression,
|
||||
const char* actual_expression,
|
||||
const wchar_t* expected,
|
||||
const wchar_t* actual) {
|
||||
if (String::WideCStringEquals(expected, actual)) {
|
||||
AssertionResult CmpHelperSTREQ(const char* lhs_expression,
|
||||
const char* rhs_expression,
|
||||
const wchar_t* lhs,
|
||||
const wchar_t* rhs) {
|
||||
if (String::WideCStringEquals(lhs, rhs)) {
|
||||
return AssertionSuccess();
|
||||
}
|
||||
|
||||
return EqFailure(expected_expression,
|
||||
actual_expression,
|
||||
PrintToString(expected),
|
||||
PrintToString(actual),
|
||||
return EqFailure(lhs_expression,
|
||||
rhs_expression,
|
||||
PrintToString(lhs),
|
||||
PrintToString(rhs),
|
||||
false);
|
||||
}
|
||||
|
||||
|
@ -5,8 +5,8 @@ Value of: false
|
||||
Actual: false
|
||||
Expected: true
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: 3
|
||||
Expected: 2
|
||||
Expected: 2
|
||||
To be equal to: 3
|
||||
[0;32m[==========] [mRunning 66 tests from 29 test cases.
|
||||
[0;32m[----------] [mGlobal test environment set-up.
|
||||
FooEnvironment::SetUp() called.
|
||||
@ -34,21 +34,21 @@ BarEnvironment::SetUp() called.
|
||||
[0;32m[----------] [m2 tests from NonfatalFailureTest
|
||||
[0;32m[ RUN ] [mNonfatalFailureTest.EscapesStringOperands
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: actual
|
||||
Actual: "actual \"string\""
|
||||
Expected: kGoldenString
|
||||
Which is: "\"Line"
|
||||
Expected: kGoldenString
|
||||
Which is: "\"Line"
|
||||
To be equal to: actual
|
||||
Which is: "actual \"string\""
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: actual
|
||||
Actual: "actual \"string\""
|
||||
Expected: golden
|
||||
Which is: "\"Line"
|
||||
Expected: golden
|
||||
Which is: "\"Line"
|
||||
To be equal to: actual
|
||||
Which is: "actual \"string\""
|
||||
[0;31m[ FAILED ] [mNonfatalFailureTest.EscapesStringOperands
|
||||
[0;32m[ RUN ] [mNonfatalFailureTest.DiffForLongStrings
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: "Line 2"
|
||||
Expected: golden_str
|
||||
Which is: "\"Line\0 1\"\nLine 2"
|
||||
Expected: golden_str
|
||||
Which is: "\"Line\0 1\"\nLine 2"
|
||||
To be equal to: "Line 2"
|
||||
With diff:
|
||||
@@ -1,2 @@
|
||||
-\"Line\0 1\"
|
||||
@ -59,16 +59,16 @@ With diff:
|
||||
[0;32m[ RUN ] [mFatalFailureTest.FatalFailureInSubroutine
|
||||
(expecting a failure that x should be 1)
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: x
|
||||
Actual: 2
|
||||
Expected: 1
|
||||
Expected: 1
|
||||
To be equal to: x
|
||||
Which is: 2
|
||||
[0;31m[ FAILED ] [mFatalFailureTest.FatalFailureInSubroutine
|
||||
[0;32m[ RUN ] [mFatalFailureTest.FatalFailureInNestedSubroutine
|
||||
(expecting a failure that x should be 1)
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: x
|
||||
Actual: 2
|
||||
Expected: 1
|
||||
Expected: 1
|
||||
To be equal to: x
|
||||
Which is: 2
|
||||
[0;31m[ FAILED ] [mFatalFailureTest.FatalFailureInNestedSubroutine
|
||||
[0;32m[ RUN ] [mFatalFailureTest.NonfatalFailureInSubroutine
|
||||
(expecting a failure on false)
|
||||
@ -107,39 +107,39 @@ This failure is expected, and shouldn't have a trace.
|
||||
[0;32m[ RUN ] [mSCOPED_TRACETest.WorksInLoop
|
||||
(expected to fail)
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: n
|
||||
Actual: 1
|
||||
Expected: 2
|
||||
Expected: 2
|
||||
To be equal to: n
|
||||
Which is: 1
|
||||
Google Test trace:
|
||||
gtest_output_test_.cc:#: i = 1
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: n
|
||||
Actual: 2
|
||||
Expected: 1
|
||||
Expected: 1
|
||||
To be equal to: n
|
||||
Which is: 2
|
||||
Google Test trace:
|
||||
gtest_output_test_.cc:#: i = 2
|
||||
[0;31m[ FAILED ] [mSCOPED_TRACETest.WorksInLoop
|
||||
[0;32m[ RUN ] [mSCOPED_TRACETest.WorksInSubroutine
|
||||
(expected to fail)
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: n
|
||||
Actual: 1
|
||||
Expected: 2
|
||||
Expected: 2
|
||||
To be equal to: n
|
||||
Which is: 1
|
||||
Google Test trace:
|
||||
gtest_output_test_.cc:#: n = 1
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: n
|
||||
Actual: 2
|
||||
Expected: 1
|
||||
Expected: 1
|
||||
To be equal to: n
|
||||
Which is: 2
|
||||
Google Test trace:
|
||||
gtest_output_test_.cc:#: n = 2
|
||||
[0;31m[ FAILED ] [mSCOPED_TRACETest.WorksInSubroutine
|
||||
[0;32m[ RUN ] [mSCOPED_TRACETest.CanBeNested
|
||||
(expected to fail)
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: n
|
||||
Actual: 2
|
||||
Expected: 1
|
||||
Expected: 1
|
||||
To be equal to: n
|
||||
Which is: 2
|
||||
Google Test trace:
|
||||
gtest_output_test_.cc:#: n = 2
|
||||
gtest_output_test_.cc:#:
|
||||
@ -437,9 +437,9 @@ Expected: 1 fatal failure
|
||||
[0;32m[ OK ] [mTypedTest/0.Success
|
||||
[0;32m[ RUN ] [mTypedTest/0.Failure
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: TypeParam()
|
||||
Actual: 0
|
||||
Expected: 1
|
||||
Expected: 1
|
||||
To be equal to: TypeParam()
|
||||
Which is: 0
|
||||
Expected failure
|
||||
[0;31m[ FAILED ] [mTypedTest/0.Failure, where TypeParam = int
|
||||
[0;32m[----------] [m2 tests from Unsigned/TypedTestP/0, where TypeParam = unsigned char
|
||||
@ -447,10 +447,10 @@ Expected failure
|
||||
[0;32m[ OK ] [mUnsigned/TypedTestP/0.Success
|
||||
[0;32m[ RUN ] [mUnsigned/TypedTestP/0.Failure
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: TypeParam()
|
||||
Actual: '\0'
|
||||
Expected: 1U
|
||||
Which is: 1
|
||||
Expected: 1U
|
||||
Which is: 1
|
||||
To be equal to: TypeParam()
|
||||
Which is: '\0'
|
||||
Expected failure
|
||||
[0;31m[ FAILED ] [mUnsigned/TypedTestP/0.Failure, where TypeParam = unsigned char
|
||||
[0;32m[----------] [m2 tests from Unsigned/TypedTestP/1, where TypeParam = unsigned int
|
||||
@ -458,10 +458,10 @@ Expected failure
|
||||
[0;32m[ OK ] [mUnsigned/TypedTestP/1.Success
|
||||
[0;32m[ RUN ] [mUnsigned/TypedTestP/1.Failure
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: TypeParam()
|
||||
Actual: 0
|
||||
Expected: 1U
|
||||
Which is: 1
|
||||
Expected: 1U
|
||||
Which is: 1
|
||||
To be equal to: TypeParam()
|
||||
Which is: 0
|
||||
Expected failure
|
||||
[0;31m[ FAILED ] [mUnsigned/TypedTestP/1.Failure, where TypeParam = unsigned int
|
||||
[0;32m[----------] [m4 tests from ExpectFailureTest
|
||||
@ -597,18 +597,18 @@ Expected non-fatal failure.
|
||||
[0;32m[----------] [m1 test from PrintingFailingParams/FailingParamTest
|
||||
[0;32m[ RUN ] [mPrintingFailingParams/FailingParamTest.Fails/0
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: GetParam()
|
||||
Actual: 2
|
||||
Expected: 1
|
||||
Expected: 1
|
||||
To be equal to: GetParam()
|
||||
Which is: 2
|
||||
[0;31m[ FAILED ] [mPrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2
|
||||
[0;32m[----------] [m2 tests from PrintingStrings/ParamTest
|
||||
[0;32m[ RUN ] [mPrintingStrings/ParamTest.Success/a
|
||||
[0;32m[ OK ] [mPrintingStrings/ParamTest.Success/a
|
||||
[0;32m[ RUN ] [mPrintingStrings/ParamTest.Failure/a
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: GetParam()
|
||||
Actual: "a"
|
||||
Expected: "b"
|
||||
Expected: "b"
|
||||
To be equal to: GetParam()
|
||||
Which is: "a"
|
||||
Expected failure
|
||||
[0;31m[ FAILED ] [mPrintingStrings/ParamTest.Failure/a, where GetParam() = "a"
|
||||
[0;32m[----------] [mGlobal test environment tear-down
|
||||
@ -678,16 +678,16 @@ Expected fatal failure.
|
||||
[ RUN ] FatalFailureTest.FatalFailureInSubroutine
|
||||
(expecting a failure that x should be 1)
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: x
|
||||
Actual: 2
|
||||
Expected: 1
|
||||
Expected: 1
|
||||
To be equal to: x
|
||||
Which is: 2
|
||||
[ FAILED ] FatalFailureTest.FatalFailureInSubroutine (? ms)
|
||||
[ RUN ] FatalFailureTest.FatalFailureInNestedSubroutine
|
||||
(expecting a failure that x should be 1)
|
||||
gtest_output_test_.cc:#: Failure
|
||||
Value of: x
|
||||
Actual: 2
|
||||
Expected: 1
|
||||
Expected: 1
|
||||
To be equal to: x
|
||||
Which is: 2
|
||||
[ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine (? ms)
|
||||
[ RUN ] FatalFailureTest.NonfatalFailureInSubroutine
|
||||
(expecting a failure on false)
|
||||
|
@ -2466,7 +2466,7 @@ TEST(StringAssertionTest, ASSERT_STRCASEEQ) {
|
||||
|
||||
ASSERT_STRCASEEQ("", "");
|
||||
EXPECT_FATAL_FAILURE(ASSERT_STRCASEEQ("Hi", "hi2"),
|
||||
"(ignoring case)");
|
||||
"Ignoring case");
|
||||
}
|
||||
|
||||
// Tests ASSERT_STRCASENE.
|
||||
@ -3260,7 +3260,7 @@ TEST_F(SingleEvaluationTest, ASSERT_STR) {
|
||||
|
||||
// failed EXPECT_STRCASEEQ
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_STRCASEEQ(p1_++, p2_++),
|
||||
"ignoring case");
|
||||
"Ignoring case");
|
||||
EXPECT_EQ(s1_ + 2, p1_);
|
||||
EXPECT_EQ(s2_ + 2, p2_);
|
||||
}
|
||||
@ -3528,35 +3528,35 @@ TEST(AssertionTest, EqFailure) {
|
||||
EqFailure("foo", "bar", foo_val, bar_val, false)
|
||||
.failure_message());
|
||||
EXPECT_STREQ(
|
||||
"Value of: bar\n"
|
||||
" Actual: 6\n"
|
||||
"Expected: foo\n"
|
||||
"Which is: 5",
|
||||
" Expected: foo\n"
|
||||
" Which is: 5\n"
|
||||
"To be equal to: bar\n"
|
||||
" Which is: 6",
|
||||
msg1.c_str());
|
||||
|
||||
const std::string msg2(
|
||||
EqFailure("foo", "6", foo_val, bar_val, false)
|
||||
.failure_message());
|
||||
EXPECT_STREQ(
|
||||
"Value of: 6\n"
|
||||
"Expected: foo\n"
|
||||
"Which is: 5",
|
||||
" Expected: foo\n"
|
||||
" Which is: 5\n"
|
||||
"To be equal to: 6",
|
||||
msg2.c_str());
|
||||
|
||||
const std::string msg3(
|
||||
EqFailure("5", "bar", foo_val, bar_val, false)
|
||||
.failure_message());
|
||||
EXPECT_STREQ(
|
||||
"Value of: bar\n"
|
||||
" Actual: 6\n"
|
||||
"Expected: 5",
|
||||
" Expected: 5\n"
|
||||
"To be equal to: bar\n"
|
||||
" Which is: 6",
|
||||
msg3.c_str());
|
||||
|
||||
const std::string msg4(
|
||||
EqFailure("5", "6", foo_val, bar_val, false).failure_message());
|
||||
EXPECT_STREQ(
|
||||
"Value of: 6\n"
|
||||
"Expected: 5",
|
||||
" Expected: 5\n"
|
||||
"To be equal to: 6",
|
||||
msg4.c_str());
|
||||
|
||||
const std::string msg5(
|
||||
@ -3564,10 +3564,11 @@ TEST(AssertionTest, EqFailure) {
|
||||
std::string("\"x\""), std::string("\"y\""),
|
||||
true).failure_message());
|
||||
EXPECT_STREQ(
|
||||
"Value of: bar\n"
|
||||
" Actual: \"y\"\n"
|
||||
"Expected: foo (ignoring case)\n"
|
||||
"Which is: \"x\"",
|
||||
" Expected: foo\n"
|
||||
" Which is: \"x\"\n"
|
||||
"To be equal to: bar\n"
|
||||
" Which is: \"y\"\n"
|
||||
"Ignoring case",
|
||||
msg5.c_str());
|
||||
}
|
||||
|
||||
@ -3579,11 +3580,11 @@ TEST(AssertionTest, EqFailureWithDiff) {
|
||||
const std::string msg1(
|
||||
EqFailure("left", "right", left, right, false).failure_message());
|
||||
EXPECT_STREQ(
|
||||
"Value of: right\n"
|
||||
" Actual: 1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n11\\n12\\n13\\n14\n"
|
||||
"Expected: left\n"
|
||||
"Which is: "
|
||||
" Expected: left\n"
|
||||
" Which is: "
|
||||
"1\\n2XXX\\n3\\n5\\n6\\n7\\n8\\n9\\n10\\n11\\n12XXX\\n13\\n14\\n15\n"
|
||||
"To be equal to: right\n"
|
||||
" Which is: 1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n11\\n12\\n13\\n14\n"
|
||||
"With diff:\n@@ -1,5 +1,6 @@\n 1\n-2XXX\n+2\n 3\n+4\n 5\n 6\n"
|
||||
"@@ -7,8 +8,6 @@\n 8\n 9\n-10\n 11\n-12XXX\n+12\n 13\n 14\n-15\n",
|
||||
msg1.c_str());
|
||||
@ -3678,9 +3679,9 @@ TEST(ExpectTest, ASSERT_EQ_Double) {
|
||||
TEST(AssertionTest, ASSERT_EQ) {
|
||||
ASSERT_EQ(5, 2 + 3);
|
||||
EXPECT_FATAL_FAILURE(ASSERT_EQ(5, 2*3),
|
||||
"Value of: 2*3\n"
|
||||
" Actual: 6\n"
|
||||
"Expected: 5");
|
||||
" Expected: 5\n"
|
||||
"To be equal to: 2*3\n"
|
||||
" Which is: 6");
|
||||
}
|
||||
|
||||
// Tests ASSERT_EQ(NULL, pointer).
|
||||
@ -3697,7 +3698,7 @@ TEST(AssertionTest, ASSERT_EQ_NULL) {
|
||||
// A failure.
|
||||
static int n = 0;
|
||||
EXPECT_FATAL_FAILURE(ASSERT_EQ(NULL, &n),
|
||||
"Value of: &n\n");
|
||||
"To be equal to: &n\n");
|
||||
}
|
||||
#endif // GTEST_CAN_COMPARE_NULL
|
||||
|
||||
@ -3812,7 +3813,7 @@ void TestEq1(int x) {
|
||||
// Tests calling a test subroutine that's not part of a fixture.
|
||||
TEST(AssertionTest, NonFixtureSubroutine) {
|
||||
EXPECT_FATAL_FAILURE(TestEq1(2),
|
||||
"Value of: x");
|
||||
"To be equal to: x");
|
||||
}
|
||||
|
||||
// An uncopyable class.
|
||||
@ -3861,7 +3862,7 @@ TEST(AssertionTest, AssertWorksWithUncopyableObject) {
|
||||
EXPECT_FATAL_FAILURE(TestAssertNonPositive(),
|
||||
"IsPositiveUncopyable(y) evaluates to false, where\ny evaluates to -1");
|
||||
EXPECT_FATAL_FAILURE(TestAssertEqualsUncopyable(),
|
||||
"Value of: y\n Actual: -1\nExpected: x\nWhich is: 5");
|
||||
"Expected: x\n Which is: 5\nTo be equal to: y\n Which is: -1");
|
||||
}
|
||||
|
||||
// Tests that uncopyable objects can be used in expects.
|
||||
@ -3873,7 +3874,7 @@ TEST(AssertionTest, ExpectWorksWithUncopyableObject) {
|
||||
"IsPositiveUncopyable(y) evaluates to false, where\ny evaluates to -1");
|
||||
EXPECT_EQ(x, x);
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(x, y),
|
||||
"Value of: y\n Actual: -1\nExpected: x\nWhich is: 5");
|
||||
"Expected: x\n Which is: 5\nTo be equal to: y\n Which is: -1");
|
||||
}
|
||||
|
||||
enum NamedEnum {
|
||||
@ -3885,7 +3886,7 @@ TEST(AssertionTest, NamedEnum) {
|
||||
EXPECT_EQ(kE1, kE1);
|
||||
EXPECT_LT(kE1, kE2);
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(kE1, kE2), "Which is: 0");
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(kE1, kE2), "Actual: 1");
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(kE1, kE2), "Which is: 1");
|
||||
}
|
||||
|
||||
// The version of gcc used in XCode 2.2 has a bug and doesn't allow
|
||||
@ -3949,9 +3950,9 @@ TEST(AssertionTest, AnonymousEnum) {
|
||||
|
||||
// ICE's in C++Builder.
|
||||
EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseB),
|
||||
"Value of: kCaseB");
|
||||
"To be equal to: kCaseB");
|
||||
EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseC),
|
||||
"Actual: 42");
|
||||
"Which is: 42");
|
||||
# endif
|
||||
|
||||
EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseC),
|
||||
@ -4389,9 +4390,9 @@ TEST(ExpectTest, ExpectFalseWithAssertionResult) {
|
||||
TEST(ExpectTest, EXPECT_EQ) {
|
||||
EXPECT_EQ(5, 2 + 3);
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(5, 2*3),
|
||||
"Value of: 2*3\n"
|
||||
" Actual: 6\n"
|
||||
"Expected: 5");
|
||||
" Expected: 5\n"
|
||||
"To be equal to: 2*3\n"
|
||||
" Which is: 6");
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(5, 2 - 3),
|
||||
"2 - 3");
|
||||
}
|
||||
@ -4422,7 +4423,7 @@ TEST(ExpectTest, EXPECT_EQ_NULL) {
|
||||
// A failure.
|
||||
int n = 0;
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(NULL, &n),
|
||||
"Value of: &n\n");
|
||||
"To be equal to: &n\n");
|
||||
}
|
||||
#endif // GTEST_CAN_COMPARE_NULL
|
||||
|
||||
@ -4538,7 +4539,7 @@ TEST(ExpectTest, EXPECT_ANY_THROW) {
|
||||
TEST(ExpectTest, ExpectPrecedence) {
|
||||
EXPECT_EQ(1 < 2, true);
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(true, true && false),
|
||||
"Value of: true && false");
|
||||
"To be equal to: true && false");
|
||||
}
|
||||
|
||||
|
||||
@ -4685,7 +4686,7 @@ TEST(EqAssertionTest, Bool) {
|
||||
EXPECT_FATAL_FAILURE({
|
||||
bool false_value = false;
|
||||
ASSERT_EQ(false_value, true);
|
||||
}, "Value of: true");
|
||||
}, "To be equal to: true");
|
||||
}
|
||||
|
||||
// Tests using int values in {EXPECT|ASSERT}_EQ.
|
||||
@ -4719,10 +4720,10 @@ TEST(EqAssertionTest, WideChar) {
|
||||
EXPECT_EQ(L'b', L'b');
|
||||
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(L'\0', L'x'),
|
||||
"Value of: L'x'\n"
|
||||
" Actual: L'x' (120, 0x78)\n"
|
||||
"Expected: L'\0'\n"
|
||||
"Which is: L'\0' (0, 0x0)");
|
||||
" Expected: L'\0'\n"
|
||||
" Which is: L'\0' (0, 0x0)\n"
|
||||
"To be equal to: L'x'\n"
|
||||
" Which is: L'x' (120, 0x78)");
|
||||
|
||||
static wchar_t wchar;
|
||||
wchar = L'b';
|
||||
@ -4730,7 +4731,7 @@ TEST(EqAssertionTest, WideChar) {
|
||||
"wchar");
|
||||
wchar = 0x8119;
|
||||
EXPECT_FATAL_FAILURE(ASSERT_EQ(static_cast<wchar_t>(0x8120), wchar),
|
||||
"Value of: wchar");
|
||||
"To be equal to: wchar");
|
||||
}
|
||||
|
||||
// Tests using ::std::string values in {EXPECT|ASSERT}_EQ.
|
||||
@ -4759,8 +4760,8 @@ TEST(EqAssertionTest, StdString) {
|
||||
static ::std::string str3(str1);
|
||||
str3.at(2) = '\0';
|
||||
EXPECT_FATAL_FAILURE(ASSERT_EQ(str1, str3),
|
||||
"Value of: str3\n"
|
||||
" Actual: \"A \\0 in the middle\"");
|
||||
"To be equal to: str3\n"
|
||||
" Which is: \"A \\0 in the middle\"");
|
||||
}
|
||||
|
||||
#if GTEST_HAS_STD_WSTRING
|
||||
@ -4880,7 +4881,7 @@ TEST(EqAssertionTest, CharPointer) {
|
||||
ASSERT_EQ(p1, p1);
|
||||
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p0, p2),
|
||||
"Value of: p2");
|
||||
"To be equal to: p2");
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p1, p2),
|
||||
"p2");
|
||||
EXPECT_FATAL_FAILURE(ASSERT_EQ(reinterpret_cast<char*>(0x1234),
|
||||
@ -4902,7 +4903,7 @@ TEST(EqAssertionTest, WideCharPointer) {
|
||||
EXPECT_EQ(p0, p0);
|
||||
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p0, p2),
|
||||
"Value of: p2");
|
||||
"To be equal to: p2");
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p1, p2),
|
||||
"p2");
|
||||
void* pv3 = (void*)0x1234; // NOLINT
|
||||
|
@ -64,20 +64,20 @@ EXPECTED_NON_EMPTY_XML = """<?xml version="1.0" encoding="UTF-8"?>
|
||||
</testsuite>
|
||||
<testsuite name="FailedTest" tests="1" failures="1" disabled="0" errors="0" time="*">
|
||||
<testcase name="Fails" status="run" time="*" classname="FailedTest">
|
||||
<failure message="gtest_xml_output_unittest_.cc:*
Value of: 2
Expected: 1" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||
Value of: 2
|
||||
Expected: 1%(stack)s]]></failure>
|
||||
<failure message="gtest_xml_output_unittest_.cc:*
 Expected: 1
To be equal to: 2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||
Expected: 1
|
||||
To be equal to: 2%(stack)s]]></failure>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="MixedResultTest" tests="3" failures="1" disabled="1" errors="0" time="*">
|
||||
<testcase name="Succeeds" status="run" time="*" classname="MixedResultTest"/>
|
||||
<testcase name="Fails" status="run" time="*" classname="MixedResultTest">
|
||||
<failure message="gtest_xml_output_unittest_.cc:*
Value of: 2
Expected: 1" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||
Value of: 2
|
||||
Expected: 1%(stack)s]]></failure>
|
||||
<failure message="gtest_xml_output_unittest_.cc:*
Value of: 3
Expected: 2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||
Value of: 3
|
||||
Expected: 2%(stack)s]]></failure>
|
||||
<failure message="gtest_xml_output_unittest_.cc:*
 Expected: 1
To be equal to: 2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||
Expected: 1
|
||||
To be equal to: 2%(stack)s]]></failure>
|
||||
<failure message="gtest_xml_output_unittest_.cc:*
 Expected: 2
To be equal to: 3" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
|
||||
Expected: 2
|
||||
To be equal to: 3%(stack)s]]></failure>
|
||||
</testcase>
|
||||
<testcase name="DISABLED_test" status="notrun" time="*" classname="MixedResultTest"/>
|
||||
</testsuite>
|
||||
|
Loading…
x
Reference in New Issue
Block a user