1// Copyright (c) 2010 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 TESTING_GTEST_MAC_H_
6#define TESTING_GTEST_MAC_H_
7
8#include <gtest/internal/gtest-port.h>
9#include <gtest/gtest.h>
10
11#ifdef GTEST_OS_MAC
12
13#import <Foundation/Foundation.h>
14
15namespace testing {
16namespace internal {
17
18// This overloaded version allows comparison between ObjC objects that conform
19// to the NSObject protocol. Used to implement {ASSERT|EXPECT}_EQ().
20GTEST_API_ AssertionResult CmpHelperNSEQ(const char* expected_expression,
21                                         const char* actual_expression,
22                                         id<NSObject> expected,
23                                         id<NSObject> actual);
24
25// This overloaded version allows comparison between ObjC objects that conform
26// to the NSObject protocol. Used to implement {ASSERT|EXPECT}_NE().
27GTEST_API_ AssertionResult CmpHelperNSNE(const char* expected_expression,
28                                         const char* actual_expression,
29                                         id<NSObject> expected,
30                                         id<NSObject> actual);
31
32}  // namespace internal
33}  // namespace testing
34
35// Tests that [expected isEqual:actual].
36#define EXPECT_NSEQ(expected, actual) \
37  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNSEQ, expected, actual)
38#define EXPECT_NSNE(val1, val2) \
39  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNSNE, val1, val2)
40
41#define ASSERT_NSEQ(expected, actual) \
42  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNSEQ, expected, actual)
43#define ASSERT_NSNE(val1, val2) \
44  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNSNE, val1, val2)
45
46#endif  // GTEST_OS_MAC
47
48#endif  // TESTING_GTEST_MAC_H_
49