| Index: testing/gmock/test/gmock-generated-matchers_test.cc
|
| diff --git a/testing/gmock/test/gmock-generated-matchers_test.cc b/testing/gmock/test/gmock-generated-matchers_test.cc
|
| index db2ffb2f62fcc14b7af22e6748e96327d7c6bef6..12479af4c421739ee5712dce586a5c399ef0890c 100644
|
| --- a/testing/gmock/test/gmock-generated-matchers_test.cc
|
| +++ b/testing/gmock/test/gmock-generated-matchers_test.cc
|
| @@ -211,6 +211,43 @@ TEST(ArgsTest, DescribesNegationCorrectly) {
|
| DescribeNegation(m));
|
| }
|
|
|
| +TEST(ArgsTest, ExplainsMatchResultWithoutInnerExplanation) {
|
| + const Matcher<tuple<bool, int, int> > m = Args<1, 2>(Eq());
|
| + EXPECT_EQ("whose fields (#1, #2) are (42, 42)",
|
| + Explain(m, make_tuple(false, 42, 42)));
|
| + EXPECT_EQ("whose fields (#1, #2) are (42, 43)",
|
| + Explain(m, make_tuple(false, 42, 43)));
|
| +}
|
| +
|
| +// For testing Args<>'s explanation.
|
| +class LessThanMatcher : public MatcherInterface<tuple<char, int> > {
|
| + public:
|
| + virtual void DescribeTo(::std::ostream* os) const {}
|
| +
|
| + virtual bool MatchAndExplain(tuple<char, int> value,
|
| + MatchResultListener* listener) const {
|
| + const int diff = get<0>(value) - get<1>(value);
|
| + if (diff > 0) {
|
| + *listener << "where the first value is " << diff
|
| + << " more than the second";
|
| + }
|
| + return diff < 0;
|
| + }
|
| +};
|
| +
|
| +Matcher<tuple<char, int> > LessThan() {
|
| + return MakeMatcher(new LessThanMatcher);
|
| +}
|
| +
|
| +TEST(ArgsTest, ExplainsMatchResultWithInnerExplanation) {
|
| + const Matcher<tuple<char, int, int> > m = Args<0, 2>(LessThan());
|
| + EXPECT_EQ("whose fields (#0, #2) are ('a' (97), 42), "
|
| + "where the first value is 55 more than the second",
|
| + Explain(m, make_tuple('a', 42, 42)));
|
| + EXPECT_EQ("whose fields (#0, #2) are ('\\0', 43)",
|
| + Explain(m, make_tuple('\0', 42, 43)));
|
| +}
|
| +
|
| // For testing ExplainMatchResultTo().
|
| class GreaterThanMatcher : public MatcherInterface<int> {
|
| public:
|
| @@ -224,11 +261,11 @@ class GreaterThanMatcher : public MatcherInterface<int> {
|
| MatchResultListener* listener) const {
|
| const int diff = lhs - rhs_;
|
| if (diff > 0) {
|
| - *listener << "is " << diff << " more than " << rhs_;
|
| + *listener << "which is " << diff << " more than " << rhs_;
|
| } else if (diff == 0) {
|
| - *listener << "is the same as " << rhs_;
|
| + *listener << "which is the same as " << rhs_;
|
| } else {
|
| - *listener << "is " << -diff << " less than " << rhs_;
|
| + *listener << "which is " << -diff << " less than " << rhs_;
|
| }
|
|
|
| return lhs > rhs_;
|
| @@ -254,32 +291,32 @@ TEST(ElementsAreTest, CanDescribeExpectingNoElement) {
|
|
|
| TEST(ElementsAreTest, CanDescribeExpectingOneElement) {
|
| Matcher<vector<int> > m = ElementsAre(Gt(5));
|
| - EXPECT_EQ("has 1 element that is greater than 5", Describe(m));
|
| + EXPECT_EQ("has 1 element that is > 5", Describe(m));
|
| }
|
|
|
| TEST(ElementsAreTest, CanDescribeExpectingManyElements) {
|
| Matcher<list<string> > m = ElementsAre(StrEq("one"), "two");
|
| EXPECT_EQ("has 2 elements where\n"
|
| - "element 0 is equal to \"one\",\n"
|
| - "element 1 is equal to \"two\"", Describe(m));
|
| + "element #0 is equal to \"one\",\n"
|
| + "element #1 is equal to \"two\"", Describe(m));
|
| }
|
|
|
| TEST(ElementsAreTest, CanDescribeNegationOfExpectingNoElement) {
|
| Matcher<vector<int> > m = ElementsAre();
|
| - EXPECT_EQ("is not empty", DescribeNegation(m));
|
| + EXPECT_EQ("isn't empty", DescribeNegation(m));
|
| }
|
|
|
| TEST(ElementsAreTest, CanDescribeNegationOfExpectingOneElment) {
|
| Matcher<const list<int>& > m = ElementsAre(Gt(5));
|
| - EXPECT_EQ("does not have 1 element, or\n"
|
| - "element 0 is not greater than 5", DescribeNegation(m));
|
| + EXPECT_EQ("doesn't have 1 element, or\n"
|
| + "element #0 isn't > 5", DescribeNegation(m));
|
| }
|
|
|
| TEST(ElementsAreTest, CanDescribeNegationOfExpectingManyElements) {
|
| Matcher<const list<string>& > m = ElementsAre("one", "two");
|
| - EXPECT_EQ("does not have 2 elements, or\n"
|
| - "element 0 is not equal to \"one\", or\n"
|
| - "element 1 is not equal to \"two\"", DescribeNegation(m));
|
| + EXPECT_EQ("doesn't have 2 elements, or\n"
|
| + "element #0 isn't equal to \"one\", or\n"
|
| + "element #1 isn't equal to \"two\"", DescribeNegation(m));
|
| }
|
|
|
| TEST(ElementsAreTest, DoesNotExplainTrivialMatch) {
|
| @@ -297,8 +334,9 @@ TEST(ElementsAreTest, ExplainsNonTrivialMatch) {
|
|
|
| const int a[] = { 10, 0, 100 };
|
| vector<int> test_vector(a, a + GMOCK_ARRAY_SIZE_(a));
|
| - EXPECT_EQ("element 0 is 9 more than 1,\n"
|
| - "element 2 is 98 more than 2", Explain(m, test_vector));
|
| + EXPECT_EQ("whose element #0 matches, which is 9 more than 1,\n"
|
| + "and whose element #2 matches, which is 98 more than 2",
|
| + Explain(m, test_vector));
|
| }
|
|
|
| TEST(ElementsAreTest, CanExplainMismatchWrongSize) {
|
| @@ -309,7 +347,7 @@ TEST(ElementsAreTest, CanExplainMismatchWrongSize) {
|
| EXPECT_EQ("", Explain(m, test_list));
|
|
|
| test_list.push_back(1);
|
| - EXPECT_EQ("has 1 element", Explain(m, test_list));
|
| + EXPECT_EQ("which has 1 element", Explain(m, test_list));
|
| }
|
|
|
| TEST(ElementsAreTest, CanExplainMismatchRightSize) {
|
| @@ -318,10 +356,11 @@ TEST(ElementsAreTest, CanExplainMismatchRightSize) {
|
| vector<int> v;
|
| v.push_back(2);
|
| v.push_back(1);
|
| - EXPECT_EQ("element 0 doesn't match", Explain(m, v));
|
| + EXPECT_EQ("whose element #0 doesn't match", Explain(m, v));
|
|
|
| v[0] = 1;
|
| - EXPECT_EQ("element 1 doesn't match (is 4 less than 5)", Explain(m, v));
|
| + EXPECT_EQ("whose element #1 doesn't match, which is 4 less than 5",
|
| + Explain(m, v));
|
| }
|
|
|
| TEST(ElementsAreTest, MatchesOneElementVector) {
|
| @@ -1030,16 +1069,22 @@ TEST(ContainsTest, SetDoesNotMatchWhenElementIsNotInContainer) {
|
| EXPECT_THAT(c_string_set, Not(Contains(string("hello").c_str())));
|
| }
|
|
|
| -TEST(ContainsTest, DescribesItselfCorrectly) {
|
| +TEST(ContainsTest, ExplainsMatchResultCorrectly) {
|
| const int a[2] = { 1, 2 };
|
| Matcher<const int(&)[2]> m = Contains(2);
|
| - EXPECT_EQ("element 1 matches", Explain(m, a));
|
| + EXPECT_EQ("whose element #1 matches", Explain(m, a));
|
|
|
| m = Contains(3);
|
| EXPECT_EQ("", Explain(m, a));
|
| +
|
| + m = Contains(GreaterThan(0));
|
| + EXPECT_EQ("whose element #0 matches, which is 1 more than 0", Explain(m, a));
|
| +
|
| + m = Contains(GreaterThan(10));
|
| + EXPECT_EQ("", Explain(m, a));
|
| }
|
|
|
| -TEST(ContainsTest, ExplainsMatchResultCorrectly) {
|
| +TEST(ContainsTest, DescribesItselfCorrectly) {
|
| Matcher<vector<int> > m = Contains(1);
|
| EXPECT_EQ("contains at least one element that is equal to 1", Describe(m));
|
|
|
|
|