aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2011-09-16 16:45:39 +0000
committerzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2011-09-16 16:45:39 +0000
commit898725cf47aacd45c385bb6c537c130ac8cd224c (patch)
tree78342ae32df55ac24acbf3e900630b653da11396 /test
parent5aa8dd99e2ec575f99801f122b6317caa0dd8584 (diff)
downloadgoogletest-898725cf47aacd45c385bb6c537c130ac8cd224c.tar.gz
googletest-898725cf47aacd45c385bb6c537c130ac8cd224c.tar.bz2
googletest-898725cf47aacd45c385bb6c537c130ac8cd224c.zip
Implements matchers WhenSorted() and WhenSortedBy(); pulls in gtest r595.
Diffstat (limited to 'test')
-rw-r--r--test/gmock-matchers_test.cc81
1 files changed, 81 insertions, 0 deletions
diff --git a/test/gmock-matchers_test.cc b/test/gmock-matchers_test.cc
index 8f96efc2..c4ed96ba 100644
--- a/test/gmock-matchers_test.cc
+++ b/test/gmock-matchers_test.cc
@@ -57,6 +57,8 @@ GTEST_API_ string JoinAsTuple(const Strings& fields);
namespace gmock_matchers_test {
+using std::greater;
+using std::less;
using std::list;
using std::make_pair;
using std::map;
@@ -118,6 +120,8 @@ using testing::StrNe;
using testing::Truly;
using testing::TypedEq;
using testing::Value;
+using testing::WhenSorted;
+using testing::WhenSortedBy;
using testing::_;
using testing::internal::DummyMatchResultListener;
using testing::internal::ExplainMatchFailureTupleTo;
@@ -3725,6 +3729,83 @@ TEST(ContainerEqExtraTest, CopiesNativeArrayParameter) {
EXPECT_THAT(a1, m);
}
+TEST(WhenSortedByTest, WorksForEmptyContainer) {
+ const vector<int> numbers;
+ EXPECT_THAT(numbers, WhenSortedBy(less<int>(), ElementsAre()));
+ EXPECT_THAT(numbers, Not(WhenSortedBy(less<int>(), ElementsAre(1))));
+}
+
+TEST(WhenSortedByTest, WorksForNonEmptyContainer) {
+ vector<unsigned> numbers;
+ numbers.push_back(3);
+ numbers.push_back(1);
+ numbers.push_back(2);
+ numbers.push_back(2);
+ EXPECT_THAT(numbers, WhenSortedBy(greater<unsigned>(),
+ ElementsAre(3, 2, 2, 1)));
+ EXPECT_THAT(numbers, Not(WhenSortedBy(greater<unsigned>(),
+ ElementsAre(1, 2, 2, 3))));
+}
+
+TEST(WhenSortedByTest, WorksForNonVectorContainer) {
+ list<string> words;
+ words.push_back("say");
+ words.push_back("hello");
+ words.push_back("world");
+ EXPECT_THAT(words, WhenSortedBy(less<string>(),
+ ElementsAre("hello", "say", "world")));
+ EXPECT_THAT(words, Not(WhenSortedBy(less<string>(),
+ ElementsAre("say", "hello", "world"))));
+}
+
+TEST(WhenSortedByTest, WorksForNativeArray) {
+ const int numbers[] = { 1, 3, 2, 4 };
+ const int sorted_numbers[] = { 1, 2, 3, 4 };
+ EXPECT_THAT(numbers, WhenSortedBy(less<int>(), ElementsAre(1, 2, 3, 4)));
+ EXPECT_THAT(numbers, WhenSortedBy(less<int>(),
+ ElementsAreArray(sorted_numbers)));
+ EXPECT_THAT(numbers, Not(WhenSortedBy(less<int>(), ElementsAre(1, 3, 2, 4))));
+}
+
+TEST(WhenSortedByTest, CanDescribeSelf) {
+ const Matcher<vector<int> > m = WhenSortedBy(less<int>(), ElementsAre(1, 2));
+ EXPECT_EQ("(when sorted) has 2 elements where\n"
+ "element #0 is equal to 1,\n"
+ "element #1 is equal to 2",
+ Describe(m));
+ EXPECT_EQ("(when sorted) doesn't have 2 elements, or\n"
+ "element #0 isn't equal to 1, or\n"
+ "element #1 isn't equal to 2",
+ DescribeNegation(m));
+}
+
+TEST(WhenSortedByTest, ExplainsMatchResult) {
+ const int a[] = { 2, 1 };
+ EXPECT_EQ("which is { 1, 2 } when sorted, whose element #0 doesn't match",
+ Explain(WhenSortedBy(less<int>(), ElementsAre(2, 3)), a));
+ EXPECT_EQ("which is { 1, 2 } when sorted",
+ Explain(WhenSortedBy(less<int>(), ElementsAre(1, 2)), a));
+}
+
+// WhenSorted() is a simple wrapper on WhenSortedBy(). Hence we don't
+// need to test it as exhaustively as we test the latter.
+
+TEST(WhenSortedTest, WorksForEmptyContainer) {
+ const vector<int> numbers;
+ EXPECT_THAT(numbers, WhenSorted(ElementsAre()));
+ EXPECT_THAT(numbers, Not(WhenSorted(ElementsAre(1))));
+}
+
+TEST(WhenSortedTest, WorksForNonEmptyContainer) {
+ list<string> words;
+ words.push_back("3");
+ words.push_back("1");
+ words.push_back("2");
+ words.push_back("2");
+ EXPECT_THAT(words, WhenSorted(ElementsAre("1", "2", "2", "3")));
+ EXPECT_THAT(words, Not(WhenSorted(ElementsAre("3", "1", "2", "2"))));
+}
+
// Tests IsReadableTypeName().
TEST(IsReadableTypeNameTest, ReturnsTrueForShortNames) {