1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef THIRD_PARTY_OCMOCK_GTEST_SUPPORT_H_
6#define THIRD_PARTY_OCMOCK_GTEST_SUPPORT_H_
7
8#include "testing/gtest/include/gtest/gtest.h"
9
10@class OCMockObject;
11
12namespace testing {
13namespace internal {
14bool VerifyOCMock(OCMockObject* mock, const char* file, int line);
15}  // namespace internal
16}  // namespace testing
17
18// Calls -verify of the mock and traps the Objective-C exception that is
19// generated, adding it to the gtest failures and returning true/false
20// for if there was an exception.  The result should be used in normal
21// gtest EXECPT_TRUE/ASSERT_TRUE fashion.
22//
23// So code that would do:
24//
25//     id mockFoo = [OCMockObject mockForClass:[Foo class]];
26//     ...
27//     [mockFoo verify];
28//
29// Should instead do:
30//
31//     id mockFoo = [OCMockObject mockForClass:[Foo class]];
32//     ...
33//     EXPECT_OCMOCK_VERIFY(mockFoo);
34//
35#define EXPECT_OCMOCK_VERIFY(m) \
36    EXPECT_TRUE(testing::internal::VerifyOCMock((m), __FILE__, __LINE__))
37#define ASSERT_OCMOCK_VERIFY(m) \
38    ASSERT_TRUE(testing::internal::VerifyOCMock((m), __FILE__, __LINE__))
39
40#endif  // THIRD_PARTY_OCMOCK_GTEST_SUPPORT_H_
41