gmock_leak_test_.cc
Go to the documentation of this file.
00001 // Copyright 2009, Google Inc.
00002 // All rights reserved.
00003 //
00004 // Redistribution and use in source and binary forms, with or without
00005 // modification, are permitted provided that the following conditions are
00006 // met:
00007 //
00008 //     * Redistributions of source code must retain the above copyright
00009 // notice, this list of conditions and the following disclaimer.
00010 //     * Redistributions in binary form must reproduce the above
00011 // copyright notice, this list of conditions and the following disclaimer
00012 // in the documentation and/or other materials provided with the
00013 // distribution.
00014 //     * Neither the name of Google Inc. nor the names of its
00015 // contributors may be used to endorse or promote products derived from
00016 // this software without specific prior written permission.
00017 //
00018 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00019 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00020 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00021 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
00022 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00023 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00024 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00025 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00026 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00027 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00028 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00029 //
00030 // Author: wan@google.com (Zhanyong Wan)
00031 
00032 // Google Mock - a framework for writing C++ mock classes.
00033 //
00034 // This program is for verifying that a leaked mock object can be
00035 // caught by Google Mock's leak detector.
00036 
00037 #include "gmock/gmock.h"
00038 
00039 namespace {
00040 
00041 using ::testing::Return;
00042 
00043 class FooInterface {
00044  public:
00045   virtual ~FooInterface() {}
00046   virtual void DoThis() = 0;
00047 };
00048 
00049 class MockFoo : public FooInterface {
00050  public:
00051   MockFoo() {}
00052 
00053   MOCK_METHOD0(DoThis, void());
00054 
00055  private:
00056   GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
00057 };
00058 
00059 TEST(LeakTest, LeakedMockWithExpectCallCausesFailureWhenLeakCheckingIsEnabled) {
00060   MockFoo* foo = new MockFoo;
00061 
00062   EXPECT_CALL(*foo, DoThis());
00063   foo->DoThis();
00064 
00065   // In order to test the leak detector, we deliberately leak foo.
00066 
00067   // Makes sure Google Mock's leak detector can change the exit code
00068   // to 1 even when the code is already exiting with 0.
00069   exit(0);
00070 }
00071 
00072 TEST(LeakTest, LeakedMockWithOnCallCausesFailureWhenLeakCheckingIsEnabled) {
00073   MockFoo* foo = new MockFoo;
00074 
00075   ON_CALL(*foo, DoThis()).WillByDefault(Return());
00076 
00077   // In order to test the leak detector, we deliberately leak foo.
00078 
00079   // Makes sure Google Mock's leak detector can change the exit code
00080   // to 1 even when the code is already exiting with 0.
00081   exit(0);
00082 }
00083 
00084 TEST(LeakTest, CatchesMultipleLeakedMockObjects) {
00085   MockFoo* foo1 = new MockFoo;
00086   MockFoo* foo2 = new MockFoo;
00087 
00088   ON_CALL(*foo1, DoThis()).WillByDefault(Return());
00089   EXPECT_CALL(*foo2, DoThis());
00090   foo2->DoThis();
00091 
00092   // In order to test the leak detector, we deliberately leak foo1 and
00093   // foo2.
00094 
00095   // Makes sure Google Mock's leak detector can change the exit code
00096   // to 1 even when the code is already exiting with 0.
00097   exit(0);
00098 }
00099 
00100 }  // namespace


ros_opcua_impl_freeopcua
Author(s): Denis Štogl
autogenerated on Sat Jun 8 2019 18:24:43