Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Unified Diff: testing/gmock/test/gmock-spec-builders_test.cc

Issue 3427004: clang: update gtest/gmock (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: yakshave Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « testing/gmock/test/gmock-printers_test.cc ('k') | testing/gmock/test/gmock_all_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: testing/gmock/test/gmock-spec-builders_test.cc
diff --git a/testing/gmock/test/gmock-spec-builders_test.cc b/testing/gmock/test/gmock-spec-builders_test.cc
index e5fc2ec926956681a6ec450ea14240181d4b9e9b..ff30f02ba0ddae748b276c64f5f65891d0724f7d 100644
--- a/testing/gmock/test/gmock-spec-builders_test.cc
+++ b/testing/gmock/test/gmock-spec-builders_test.cc
@@ -1783,6 +1783,25 @@ class MockC {
GTEST_DISALLOW_COPY_AND_ASSIGN_(MockC);
};
+class VerboseFlagPreservingFixture : public testing::Test {
+ protected:
+ // The code needs to work when both ::string and ::std::string are defined
+ // and the flag is implemented as a testing::internal::String. In this
+ // case, without the call to c_str(), the compiler will complain that it
+ // cannot figure out what overload of string constructor to use.
+ // TODO(vladl@google.com): Use internal::string instead of String for
+ // string flags in Google Test.
+ VerboseFlagPreservingFixture()
+ : saved_verbose_flag_(GMOCK_FLAG(verbose).c_str()) {}
+
+ ~VerboseFlagPreservingFixture() { GMOCK_FLAG(verbose) = saved_verbose_flag_; }
+
+ private:
+ const string saved_verbose_flag_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(VerboseFlagPreservingFixture);
+};
+
#if GTEST_HAS_STREAM_REDIRECTION_
// Tests that an uninteresting mock function call generates a warning
@@ -1842,7 +1861,7 @@ TEST(FunctionCallMessageTest, UninterestingCallPrintsArgumentsAndReturnValue) {
// Tests how the --gmock_verbose flag affects Google Mock's output.
-class GMockVerboseFlagTest : public testing::Test {
+class GMockVerboseFlagTest : public VerboseFlagPreservingFixture {
public:
// Verifies that the given Google Mock output is correct. (When
// should_print is true, the output should match the given regex and
@@ -1982,22 +2001,9 @@ class LogTestHelper {
GTEST_DISALLOW_COPY_AND_ASSIGN_(LogTestHelper);
};
-class GMockLogTest : public ::testing::Test {
+class GMockLogTest : public VerboseFlagPreservingFixture {
protected:
- virtual void SetUp() {
- // The code needs to work when both ::string and ::std::string are
- // defined and the flag is implemented as a
- // testing::internal::String. In this case, without the call to
- // c_str(), the compiler will complain that it cannot figure out
- // whether the String flag should be converted to a ::string or an
- // ::std::string before being assigned to original_verbose_.
- original_verbose_ = GMOCK_FLAG(verbose).c_str();
- }
-
- virtual void TearDown() { GMOCK_FLAG(verbose) = original_verbose_; }
-
LogTestHelper helper_;
- string original_verbose_;
};
TEST_F(GMockLogTest, DoesNotPrintGoodCallInternallyIfVerbosityIsWarning) {
@@ -2358,9 +2364,23 @@ TEST(VerifyAndClearTest, DoesNotAffectOtherMockObjects) {
// action or as a default action without causing a dead lock. It
// verifies that the action is not performed inside the critical
// section.
+TEST(SynchronizationTest, CanCallMockMethodInAction) {
+ MockA a;
+ MockC c;
+ ON_CALL(a, DoA(_))
+ .WillByDefault(IgnoreResult(InvokeWithoutArgs(&c,
+ &MockC::NonVoidMethod)));
+ EXPECT_CALL(a, DoA(1));
+ EXPECT_CALL(a, DoA(1))
+ .WillOnce(Invoke(&a, &MockA::DoA))
+ .RetiresOnSaturation();
+ EXPECT_CALL(c, NonVoidMethod());
-void Helper(MockC* c) {
- c->NonVoidMethod();
+ a.DoA(1);
+ // This will match the second EXPECT_CALL() and trigger another a.DoA(1),
+ // which will in turn match the first EXPECT_CALL() and trigger a call to
+ // c.NonVoidMethod() that was specified by the ON_CALL() since the first
+ // EXPECT_CALL() did not specify an action.
}
} // namespace
« no previous file with comments | « testing/gmock/test/gmock-printers_test.cc ('k') | testing/gmock/test/gmock_all_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698