113481Sgiacomo.travaglini@arm.com// Copyright 2008, Google Inc. 213481Sgiacomo.travaglini@arm.com// All rights reserved. 313481Sgiacomo.travaglini@arm.com// 413481Sgiacomo.travaglini@arm.com// Redistribution and use in source and binary forms, with or without 513481Sgiacomo.travaglini@arm.com// modification, are permitted provided that the following conditions are 613481Sgiacomo.travaglini@arm.com// met: 713481Sgiacomo.travaglini@arm.com// 813481Sgiacomo.travaglini@arm.com// * Redistributions of source code must retain the above copyright 913481Sgiacomo.travaglini@arm.com// notice, this list of conditions and the following disclaimer. 1013481Sgiacomo.travaglini@arm.com// * Redistributions in binary form must reproduce the above 1113481Sgiacomo.travaglini@arm.com// copyright notice, this list of conditions and the following disclaimer 1213481Sgiacomo.travaglini@arm.com// in the documentation and/or other materials provided with the 1313481Sgiacomo.travaglini@arm.com// distribution. 1413481Sgiacomo.travaglini@arm.com// * Neither the name of Google Inc. nor the names of its 1513481Sgiacomo.travaglini@arm.com// contributors may be used to endorse or promote products derived from 1613481Sgiacomo.travaglini@arm.com// this software without specific prior written permission. 1713481Sgiacomo.travaglini@arm.com// 1813481Sgiacomo.travaglini@arm.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1913481Sgiacomo.travaglini@arm.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2013481Sgiacomo.travaglini@arm.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2113481Sgiacomo.travaglini@arm.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2213481Sgiacomo.travaglini@arm.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2313481Sgiacomo.travaglini@arm.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2413481Sgiacomo.travaglini@arm.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2513481Sgiacomo.travaglini@arm.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2613481Sgiacomo.travaglini@arm.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2713481Sgiacomo.travaglini@arm.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2813481Sgiacomo.travaglini@arm.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2913481Sgiacomo.travaglini@arm.com// 3013481Sgiacomo.travaglini@arm.com// Author: wan@google.com (Zhanyong Wan) 3113481Sgiacomo.travaglini@arm.com 3213481Sgiacomo.travaglini@arm.com// Tests Google Mock's output in various scenarios. This ensures that 3313481Sgiacomo.travaglini@arm.com// Google Mock's messages are readable and useful. 3413481Sgiacomo.travaglini@arm.com 3513481Sgiacomo.travaglini@arm.com#include "gmock/gmock.h" 3613481Sgiacomo.travaglini@arm.com 3713481Sgiacomo.travaglini@arm.com#include <stdio.h> 3813481Sgiacomo.travaglini@arm.com#include <string> 3913481Sgiacomo.travaglini@arm.com 4013481Sgiacomo.travaglini@arm.com#include "gtest/gtest.h" 4113481Sgiacomo.travaglini@arm.com 4213481Sgiacomo.travaglini@arm.comusing testing::_; 4313481Sgiacomo.travaglini@arm.comusing testing::AnyNumber; 4413481Sgiacomo.travaglini@arm.comusing testing::Ge; 4513481Sgiacomo.travaglini@arm.comusing testing::InSequence; 4613481Sgiacomo.travaglini@arm.comusing testing::NaggyMock; 4713481Sgiacomo.travaglini@arm.comusing testing::Ref; 4813481Sgiacomo.travaglini@arm.comusing testing::Return; 4913481Sgiacomo.travaglini@arm.comusing testing::Sequence; 5013481Sgiacomo.travaglini@arm.com 5113481Sgiacomo.travaglini@arm.comclass MockFoo { 5213481Sgiacomo.travaglini@arm.com public: 5313481Sgiacomo.travaglini@arm.com MockFoo() {} 5413481Sgiacomo.travaglini@arm.com 5513481Sgiacomo.travaglini@arm.com MOCK_METHOD3(Bar, char(const std::string& s, int i, double x)); 5613481Sgiacomo.travaglini@arm.com MOCK_METHOD2(Bar2, bool(int x, int y)); 5713481Sgiacomo.travaglini@arm.com MOCK_METHOD2(Bar3, void(int x, int y)); 5813481Sgiacomo.travaglini@arm.com 5913481Sgiacomo.travaglini@arm.com private: 6013481Sgiacomo.travaglini@arm.com GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo); 6113481Sgiacomo.travaglini@arm.com}; 6213481Sgiacomo.travaglini@arm.com 6313481Sgiacomo.travaglini@arm.comclass GMockOutputTest : public testing::Test { 6413481Sgiacomo.travaglini@arm.com protected: 6513481Sgiacomo.travaglini@arm.com NaggyMock<MockFoo> foo_; 6613481Sgiacomo.travaglini@arm.com}; 6713481Sgiacomo.travaglini@arm.com 6813481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, ExpectedCall) { 6913481Sgiacomo.travaglini@arm.com testing::GMOCK_FLAG(verbose) = "info"; 7013481Sgiacomo.travaglini@arm.com 7113481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(0, _)); 7213481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 0); // Expected call 7313481Sgiacomo.travaglini@arm.com 7413481Sgiacomo.travaglini@arm.com testing::GMOCK_FLAG(verbose) = "warning"; 7513481Sgiacomo.travaglini@arm.com} 7613481Sgiacomo.travaglini@arm.com 7713481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, ExpectedCallToVoidFunction) { 7813481Sgiacomo.travaglini@arm.com testing::GMOCK_FLAG(verbose) = "info"; 7913481Sgiacomo.travaglini@arm.com 8013481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar3(0, _)); 8113481Sgiacomo.travaglini@arm.com foo_.Bar3(0, 0); // Expected call 8213481Sgiacomo.travaglini@arm.com 8313481Sgiacomo.travaglini@arm.com testing::GMOCK_FLAG(verbose) = "warning"; 8413481Sgiacomo.travaglini@arm.com} 8513481Sgiacomo.travaglini@arm.com 8613481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, ExplicitActionsRunOut) { 8713481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(_, _)) 8813481Sgiacomo.travaglini@arm.com .Times(2) 8913481Sgiacomo.travaglini@arm.com .WillOnce(Return(false)); 9013481Sgiacomo.travaglini@arm.com foo_.Bar2(2, 2); 9113481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 1); // Explicit actions in EXPECT_CALL run out. 9213481Sgiacomo.travaglini@arm.com} 9313481Sgiacomo.travaglini@arm.com 9413481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UnexpectedCall) { 9513481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(0, _)); 9613481Sgiacomo.travaglini@arm.com 9713481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 0); // Unexpected call 9813481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 0); // Expected call 9913481Sgiacomo.travaglini@arm.com} 10013481Sgiacomo.travaglini@arm.com 10113481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UnexpectedCallToVoidFunction) { 10213481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar3(0, _)); 10313481Sgiacomo.travaglini@arm.com 10413481Sgiacomo.travaglini@arm.com foo_.Bar3(1, 0); // Unexpected call 10513481Sgiacomo.travaglini@arm.com foo_.Bar3(0, 0); // Expected call 10613481Sgiacomo.travaglini@arm.com} 10713481Sgiacomo.travaglini@arm.com 10813481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, ExcessiveCall) { 10913481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(0, _)); 11013481Sgiacomo.travaglini@arm.com 11113481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 0); // Expected call 11213481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 1); // Excessive call 11313481Sgiacomo.travaglini@arm.com} 11413481Sgiacomo.travaglini@arm.com 11513481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, ExcessiveCallToVoidFunction) { 11613481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar3(0, _)); 11713481Sgiacomo.travaglini@arm.com 11813481Sgiacomo.travaglini@arm.com foo_.Bar3(0, 0); // Expected call 11913481Sgiacomo.travaglini@arm.com foo_.Bar3(0, 1); // Excessive call 12013481Sgiacomo.travaglini@arm.com} 12113481Sgiacomo.travaglini@arm.com 12213481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UninterestingCall) { 12313481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 1); // Uninteresting call 12413481Sgiacomo.travaglini@arm.com} 12513481Sgiacomo.travaglini@arm.com 12613481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UninterestingCallToVoidFunction) { 12713481Sgiacomo.travaglini@arm.com foo_.Bar3(0, 1); // Uninteresting call 12813481Sgiacomo.travaglini@arm.com} 12913481Sgiacomo.travaglini@arm.com 13013481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, RetiredExpectation) { 13113481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(_, _)) 13213481Sgiacomo.travaglini@arm.com .RetiresOnSaturation(); 13313481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(0, 0)); 13413481Sgiacomo.travaglini@arm.com 13513481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 1); 13613481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 1); // Matches a retired expectation 13713481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 0); 13813481Sgiacomo.travaglini@arm.com} 13913481Sgiacomo.travaglini@arm.com 14013481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UnsatisfiedPrerequisite) { 14113481Sgiacomo.travaglini@arm.com { 14213481Sgiacomo.travaglini@arm.com InSequence s; 14313481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar(_, 0, _)); 14413481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(0, 0)); 14513481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(1, _)); 14613481Sgiacomo.travaglini@arm.com } 14713481Sgiacomo.travaglini@arm.com 14813481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 0); // Has one immediate unsatisfied pre-requisite 14913481Sgiacomo.travaglini@arm.com foo_.Bar("Hi", 0, 0); 15013481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 0); 15113481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 0); 15213481Sgiacomo.travaglini@arm.com} 15313481Sgiacomo.travaglini@arm.com 15413481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UnsatisfiedPrerequisites) { 15513481Sgiacomo.travaglini@arm.com Sequence s1, s2; 15613481Sgiacomo.travaglini@arm.com 15713481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar(_, 0, _)) 15813481Sgiacomo.travaglini@arm.com .InSequence(s1); 15913481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(0, 0)) 16013481Sgiacomo.travaglini@arm.com .InSequence(s2); 16113481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(1, _)) 16213481Sgiacomo.travaglini@arm.com .InSequence(s1, s2); 16313481Sgiacomo.travaglini@arm.com 16413481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 0); // Has two immediate unsatisfied pre-requisites 16513481Sgiacomo.travaglini@arm.com foo_.Bar("Hi", 0, 0); 16613481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 0); 16713481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 0); 16813481Sgiacomo.travaglini@arm.com} 16913481Sgiacomo.travaglini@arm.com 17013481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UnsatisfiedWith) { 17113481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(_, _)).With(Ge()); 17213481Sgiacomo.travaglini@arm.com} 17313481Sgiacomo.travaglini@arm.com 17413481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UnsatisfiedExpectation) { 17513481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar(_, _, _)); 17613481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(0, _)) 17713481Sgiacomo.travaglini@arm.com .Times(2); 17813481Sgiacomo.travaglini@arm.com 17913481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 1); 18013481Sgiacomo.travaglini@arm.com} 18113481Sgiacomo.travaglini@arm.com 18213481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, MismatchArguments) { 18313481Sgiacomo.travaglini@arm.com const std::string s = "Hi"; 18413481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar(Ref(s), _, Ge(0))); 18513481Sgiacomo.travaglini@arm.com 18613481Sgiacomo.travaglini@arm.com foo_.Bar("Ho", 0, -0.1); // Mismatch arguments 18713481Sgiacomo.travaglini@arm.com foo_.Bar(s, 0, 0); 18813481Sgiacomo.travaglini@arm.com} 18913481Sgiacomo.travaglini@arm.com 19013481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, MismatchWith) { 19113481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(Ge(2), Ge(1))) 19213481Sgiacomo.travaglini@arm.com .With(Ge()); 19313481Sgiacomo.travaglini@arm.com 19413481Sgiacomo.travaglini@arm.com foo_.Bar2(2, 3); // Mismatch With() 19513481Sgiacomo.travaglini@arm.com foo_.Bar2(2, 1); 19613481Sgiacomo.travaglini@arm.com} 19713481Sgiacomo.travaglini@arm.com 19813481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, MismatchArgumentsAndWith) { 19913481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(Ge(2), Ge(1))) 20013481Sgiacomo.travaglini@arm.com .With(Ge()); 20113481Sgiacomo.travaglini@arm.com 20213481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 3); // Mismatch arguments and mismatch With() 20313481Sgiacomo.travaglini@arm.com foo_.Bar2(2, 1); 20413481Sgiacomo.travaglini@arm.com} 20513481Sgiacomo.travaglini@arm.com 20613481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UnexpectedCallWithDefaultAction) { 20713481Sgiacomo.travaglini@arm.com ON_CALL(foo_, Bar2(_, _)) 20813481Sgiacomo.travaglini@arm.com .WillByDefault(Return(true)); // Default action #1 20913481Sgiacomo.travaglini@arm.com ON_CALL(foo_, Bar2(1, _)) 21013481Sgiacomo.travaglini@arm.com .WillByDefault(Return(false)); // Default action #2 21113481Sgiacomo.travaglini@arm.com 21213481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(2, 2)); 21313481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 0); // Unexpected call, takes default action #2. 21413481Sgiacomo.travaglini@arm.com foo_.Bar2(0, 0); // Unexpected call, takes default action #1. 21513481Sgiacomo.travaglini@arm.com foo_.Bar2(2, 2); // Expected call. 21613481Sgiacomo.travaglini@arm.com} 21713481Sgiacomo.travaglini@arm.com 21813481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, ExcessiveCallWithDefaultAction) { 21913481Sgiacomo.travaglini@arm.com ON_CALL(foo_, Bar2(_, _)) 22013481Sgiacomo.travaglini@arm.com .WillByDefault(Return(true)); // Default action #1 22113481Sgiacomo.travaglini@arm.com ON_CALL(foo_, Bar2(1, _)) 22213481Sgiacomo.travaglini@arm.com .WillByDefault(Return(false)); // Default action #2 22313481Sgiacomo.travaglini@arm.com 22413481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(2, 2)); 22513481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(1, 1)); 22613481Sgiacomo.travaglini@arm.com 22713481Sgiacomo.travaglini@arm.com foo_.Bar2(2, 2); // Expected call. 22813481Sgiacomo.travaglini@arm.com foo_.Bar2(2, 2); // Excessive call, takes default action #1. 22913481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 1); // Expected call. 23013481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 1); // Excessive call, takes default action #2. 23113481Sgiacomo.travaglini@arm.com} 23213481Sgiacomo.travaglini@arm.com 23313481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, UninterestingCallWithDefaultAction) { 23413481Sgiacomo.travaglini@arm.com ON_CALL(foo_, Bar2(_, _)) 23513481Sgiacomo.travaglini@arm.com .WillByDefault(Return(true)); // Default action #1 23613481Sgiacomo.travaglini@arm.com ON_CALL(foo_, Bar2(1, _)) 23713481Sgiacomo.travaglini@arm.com .WillByDefault(Return(false)); // Default action #2 23813481Sgiacomo.travaglini@arm.com 23913481Sgiacomo.travaglini@arm.com foo_.Bar2(2, 2); // Uninteresting call, takes default action #1. 24013481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 1); // Uninteresting call, takes default action #2. 24113481Sgiacomo.travaglini@arm.com} 24213481Sgiacomo.travaglini@arm.com 24313481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, ExplicitActionsRunOutWithDefaultAction) { 24413481Sgiacomo.travaglini@arm.com ON_CALL(foo_, Bar2(_, _)) 24513481Sgiacomo.travaglini@arm.com .WillByDefault(Return(true)); // Default action #1 24613481Sgiacomo.travaglini@arm.com 24713481Sgiacomo.travaglini@arm.com EXPECT_CALL(foo_, Bar2(_, _)) 24813481Sgiacomo.travaglini@arm.com .Times(2) 24913481Sgiacomo.travaglini@arm.com .WillOnce(Return(false)); 25013481Sgiacomo.travaglini@arm.com foo_.Bar2(2, 2); 25113481Sgiacomo.travaglini@arm.com foo_.Bar2(1, 1); // Explicit actions in EXPECT_CALL run out. 25213481Sgiacomo.travaglini@arm.com} 25313481Sgiacomo.travaglini@arm.com 25413481Sgiacomo.travaglini@arm.comTEST_F(GMockOutputTest, CatchesLeakedMocks) { 25513481Sgiacomo.travaglini@arm.com MockFoo* foo1 = new MockFoo; 25613481Sgiacomo.travaglini@arm.com MockFoo* foo2 = new MockFoo; 25713481Sgiacomo.travaglini@arm.com 25813481Sgiacomo.travaglini@arm.com // Invokes ON_CALL on foo1. 25913481Sgiacomo.travaglini@arm.com ON_CALL(*foo1, Bar(_, _, _)).WillByDefault(Return('a')); 26013481Sgiacomo.travaglini@arm.com 26113481Sgiacomo.travaglini@arm.com // Invokes EXPECT_CALL on foo2. 26213481Sgiacomo.travaglini@arm.com EXPECT_CALL(*foo2, Bar2(_, _)); 26313481Sgiacomo.travaglini@arm.com EXPECT_CALL(*foo2, Bar2(1, _)); 26413481Sgiacomo.travaglini@arm.com EXPECT_CALL(*foo2, Bar3(_, _)).Times(AnyNumber()); 26513481Sgiacomo.travaglini@arm.com foo2->Bar2(2, 1); 26613481Sgiacomo.travaglini@arm.com foo2->Bar2(1, 1); 26713481Sgiacomo.travaglini@arm.com 26813481Sgiacomo.travaglini@arm.com // Both foo1 and foo2 are deliberately leaked. 26913481Sgiacomo.travaglini@arm.com} 27013481Sgiacomo.travaglini@arm.com 27113481Sgiacomo.travaglini@arm.comvoid TestCatchesLeakedMocksInAdHocTests() { 27213481Sgiacomo.travaglini@arm.com MockFoo* foo = new MockFoo; 27313481Sgiacomo.travaglini@arm.com 27413481Sgiacomo.travaglini@arm.com // Invokes EXPECT_CALL on foo. 27513481Sgiacomo.travaglini@arm.com EXPECT_CALL(*foo, Bar2(_, _)); 27613481Sgiacomo.travaglini@arm.com foo->Bar2(2, 1); 27713481Sgiacomo.travaglini@arm.com 27813481Sgiacomo.travaglini@arm.com // foo is deliberately leaked. 27913481Sgiacomo.travaglini@arm.com} 28013481Sgiacomo.travaglini@arm.com 28113481Sgiacomo.travaglini@arm.comint main(int argc, char **argv) { 28213481Sgiacomo.travaglini@arm.com testing::InitGoogleMock(&argc, argv); 28313481Sgiacomo.travaglini@arm.com 28413481Sgiacomo.travaglini@arm.com // Ensures that the tests pass no matter what value of 28513481Sgiacomo.travaglini@arm.com // --gmock_catch_leaked_mocks and --gmock_verbose the user specifies. 28613481Sgiacomo.travaglini@arm.com testing::GMOCK_FLAG(catch_leaked_mocks) = true; 28713481Sgiacomo.travaglini@arm.com testing::GMOCK_FLAG(verbose) = "warning"; 28813481Sgiacomo.travaglini@arm.com 28913481Sgiacomo.travaglini@arm.com TestCatchesLeakedMocksInAdHocTests(); 29013481Sgiacomo.travaglini@arm.com return RUN_ALL_TESTS(); 29113481Sgiacomo.travaglini@arm.com} 292