123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // Copyright 2012 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #import "ios/testing/ocmock_complex_type_helper.h"
- #include "testing/platform_test.h"
- #import "third_party/ocmock/OCMock/OCMock.h"
- #include "third_party/ocmock/gtest_support.h"
- #if !defined(__has_feature) || !__has_feature(objc_arc)
- #error "This file requires ARC support."
- #endif
- // A complex type to test with..
- struct SampleComplexType {
- int number;
- float blob;
- };
- typedef int ScalarType;
- @protocol TestedProtocol
- - (void)passObject:(id)foo;
- - (void)passComplexType:(const SampleComplexType&)foo;
- - (void)passScalar:(ScalarType)foo;
- @end
- @interface MockClass : OCMockComplexTypeHelper
- @end
- @implementation MockClass
- typedef void (^complexTypeBlock)(const SampleComplexType&);
- - (void)passComplexType:(const SampleComplexType&)foo {
- return static_cast<complexTypeBlock>([self blockForSelector:_cmd])(foo);
- }
- typedef void (^ScalarBlock)(const ScalarType&);
- - (void)passScalar:(ScalarType)foo {
- return static_cast<ScalarBlock>([self blockForSelector:_cmd])(foo);
- }
- @end
- namespace {
- class OCMockComplexTypeHelperTest : public PlatformTest {
- protected:
- void SetUp() override {
- PlatformTest::SetUp();
- OCMockObject* protocol_mock =
- [OCMockObject mockForProtocol:@protocol(TestedProtocol)];
- helped_mock_ = [[MockClass alloc] initWithRepresentedObject:protocol_mock];
- }
- void TearDown() override {
- EXPECT_OCMOCK_VERIFY(helped_mock_);
- PlatformTest::TearDown();
- }
- id helped_mock_;
- };
- TEST_F(OCMockComplexTypeHelperTest, nilObjectStillWorks) {
- [[helped_mock_ expect] passObject:nil];
- [helped_mock_ passObject:nil];
- }
- TEST_F(OCMockComplexTypeHelperTest, anyObjectStillWorks) {
- id someObject = [[NSObject alloc] init];
- [[helped_mock_ expect] passObject:OCMOCK_ANY];
- [helped_mock_ passObject:someObject];
- }
- TEST_F(OCMockComplexTypeHelperTest, complexType) {
- const SampleComplexType expected_value = {1, 1.0};
- complexTypeBlock block = ^(const SampleComplexType& value) {
- EXPECT_EQ(expected_value.number, value.number);
- EXPECT_EQ(expected_value.blob, value.blob);
- };
- [helped_mock_ onSelector:@selector(passComplexType:)
- callBlockExpectation:(id)block];
- [helped_mock_ passComplexType:expected_value];
- }
- TEST_F(OCMockComplexTypeHelperTest, scalarType) {
- const ScalarType expected_value = 42;
- ScalarBlock block = ^(const ScalarType& value) {
- EXPECT_EQ(expected_value, value);
- };
- [helped_mock_ onSelector:@selector(passScalar:)
- callBlockExpectation:(id)block];
- [helped_mock_ passScalar:expected_value];
- }
- } // namespace
|