aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2013-03-01 01:50:17 +0000
committerzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2013-03-01 01:50:17 +0000
commita31d9ce2900275c5b9aff2459664a50381c7cbb0 (patch)
tree5d96348a7c068aaf2eb00306deef3f3799c2d203 /test
parent83f6b08b5f730c2bfaa288a17d5f12ca98901a00 (diff)
downloadgoogletest-a31d9ce2900275c5b9aff2459664a50381c7cbb0.tar.gz
googletest-a31d9ce2900275c5b9aff2459664a50381c7cbb0.tar.bz2
googletest-a31d9ce2900275c5b9aff2459664a50381c7cbb0.zip
Implements matcher SizeIs().
Diffstat (limited to 'test')
-rw-r--r--test/gmock-matchers_test.cc59
1 files changed, 59 insertions, 0 deletions
diff --git a/test/gmock-matchers_test.cc b/test/gmock-matchers_test.cc
index e75b06e0..81460925 100644
--- a/test/gmock-matchers_test.cc
+++ b/test/gmock-matchers_test.cc
@@ -114,6 +114,7 @@ using testing::PolymorphicMatcher;
using testing::Property;
using testing::Ref;
using testing::ResultOf;
+using testing::SizeIs;
using testing::StartsWith;
using testing::StrCaseEq;
using testing::StrCaseNe;
@@ -3637,6 +3638,64 @@ TEST(IsEmptyTest, ExplainsResult) {
EXPECT_EQ("whose size is 1", Explain(m, container));
}
+TEST(SizeIsTest, ImplementsSizeIs) {
+ vector<int> container;
+ EXPECT_THAT(container, SizeIs(0));
+ EXPECT_THAT(container, Not(SizeIs(1)));
+ container.push_back(0);
+ EXPECT_THAT(container, Not(SizeIs(0)));
+ EXPECT_THAT(container, SizeIs(1));
+ container.push_back(0);
+ EXPECT_THAT(container, Not(SizeIs(0)));
+ EXPECT_THAT(container, SizeIs(2));
+}
+
+TEST(SizeIsTest, WorksWithMap) {
+ map<string, int> container;
+ EXPECT_THAT(container, SizeIs(0));
+ EXPECT_THAT(container, Not(SizeIs(1)));
+ container.insert(make_pair("foo", 1));
+ EXPECT_THAT(container, Not(SizeIs(0)));
+ EXPECT_THAT(container, SizeIs(1));
+ container.insert(make_pair("bar", 2));
+ EXPECT_THAT(container, Not(SizeIs(0)));
+ EXPECT_THAT(container, SizeIs(2));
+}
+
+TEST(SizeIsTest, WorksWithReferences) {
+ vector<int> container;
+ Matcher<const vector<int>&> m = SizeIs(1);
+ EXPECT_THAT(container, Not(m));
+ container.push_back(0);
+ EXPECT_THAT(container, m);
+}
+
+TEST(SizeIsTest, CanDescribeSelf) {
+ Matcher<vector<int> > m = SizeIs(2);
+ EXPECT_EQ("size is equal to 2", Describe(m));
+ EXPECT_EQ("size isn't equal to 2", DescribeNegation(m));
+}
+
+TEST(SizeIsTest, ExplainsResult) {
+ Matcher<vector<int> > m1 = SizeIs(2);
+ Matcher<vector<int> > m2 = SizeIs(Lt(2u));
+ Matcher<vector<int> > m3 = SizeIs(AnyOf(0, 3));
+ Matcher<vector<int> > m4 = SizeIs(GreaterThan(1));
+ vector<int> container;
+ EXPECT_EQ("whose size 0 doesn't match", Explain(m1, container));
+ EXPECT_EQ("whose size 0 matches", Explain(m2, container));
+ EXPECT_EQ("whose size 0 matches", Explain(m3, container));
+ EXPECT_EQ("whose size 0 doesn't match, which is 1 less than 1",
+ Explain(m4, container));
+ container.push_back(0);
+ container.push_back(0);
+ EXPECT_EQ("whose size 2 matches", Explain(m1, container));
+ EXPECT_EQ("whose size 2 doesn't match", Explain(m2, container));
+ EXPECT_EQ("whose size 2 doesn't match", Explain(m3, container));
+ EXPECT_EQ("whose size 2 matches, which is 1 more than 1",
+ Explain(m4, container));
+}
+
#if GTEST_HAS_TYPED_TEST
// Tests ContainerEq with different container types, and
// different element types.