summaryrefslogtreecommitdiff
path: root/testing/gtest_mac_unittest.mm
blob: 083c6697365b37af03805161eaf4a06cda5edd4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Note that while this file is in testing/ and tests GTest macros, it is built
// as part of Chromium's unit_tests target because the project does not build
// or run GTest's internal test suite.

#import "testing/gtest_mac.h"

#import <Foundation/Foundation.h>

#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h"

namespace testing {
namespace internal {
// This function is tested within this file, but it's not part of the public
// API, and since it's a free function there's no way to friend the test for it.
extern std::string StringDescription(id<NSObject> obj);
}
}

TEST(GTestMac, NSStringComparators) {
  // This test wants to really guarantee that s1 and s2 aren't the same address,
  // so it constructs an autoreleased string this way. In theory this could be
  // done via [NSString stringWithString:] but that causes an error about using
  // a redundant literal :)
  NSString* s1 = [NSString stringWithFormat:@"%@", @"a"];
  NSString* s2 = @"a";

  EXPECT_NSEQ(@"a", @"a");
  EXPECT_NE(s1, s2);
  EXPECT_NSEQ(s1, s2);
  ASSERT_NE(s1, s2);
  ASSERT_NSEQ(s1, s2);

  ASSERT_NSNE(@"a", @"b");

  EXPECT_NSEQ(nil, nil);
  EXPECT_NSNE(nil, @"a");
  EXPECT_NSNE(@"a", nil);
}

TEST(GTestMac, NSNumberComparators) {
  EXPECT_NSNE(@2, @42);
  EXPECT_NSEQ(@42, @42);
}

#if !defined(GTEST_OS_IOS)

TEST(GTestMac, NSRectComparators) {
  ASSERT_NSEQ(NSMakeRect(1, 2, 3, 4), NSMakeRect(1, 2, 3, 4));
  ASSERT_NSNE(NSMakeRect(1, 2, 3, 4), NSMakeRect(5, 6, 7, 8));

  EXPECT_NSEQ(NSMakeRect(1, 2, 3, 4), NSMakeRect(1, 2, 3, 4));
  EXPECT_NSNE(NSMakeRect(1, 2, 3, 4), NSMakeRect(5, 6, 7, 8));
}

TEST(GTestMac, NSPointComparators) {
  ASSERT_NSEQ(NSMakePoint(1, 2), NSMakePoint(1, 2));
  ASSERT_NSNE(NSMakePoint(1, 2), NSMakePoint(1, 3));
  ASSERT_NSNE(NSMakePoint(1, 2), NSMakePoint(2, 2));

  EXPECT_NSEQ(NSMakePoint(3, 4), NSMakePoint(3, 4));
  EXPECT_NSNE(NSMakePoint(3, 4), NSMakePoint(3, 3));
  EXPECT_NSNE(NSMakePoint(3, 4), NSMakePoint(4, 3));
}

TEST(GTestMac, NSRangeComparators) {
  ASSERT_NSEQ(NSMakeRange(1, 2), NSMakeRange(1, 2));
  ASSERT_NSNE(NSMakeRange(1, 2), NSMakeRange(1, 3));
  ASSERT_NSNE(NSMakeRange(1, 2), NSMakeRange(2, 2));

  EXPECT_NSEQ(NSMakeRange(3, 4), NSMakeRange(3, 4));
  EXPECT_NSNE(NSMakeRange(3, 4), NSMakeRange(3, 3));
  EXPECT_NSNE(NSMakeRange(3, 4), NSMakeRange(4, 4));
}

TEST(GTestMac, StringDescription) {
  using testing::internal::StringDescription;
  EXPECT_EQ(StringDescription(@4), "4");
  EXPECT_EQ(StringDescription(@"foo"), "foo");
  EXPECT_EQ(StringDescription(nil), "(null)");
}

#endif  // !GTEST_OS_IOS