mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-24 06:21:55 +00:00
219 lines
6.0 KiB
Objective-C
219 lines
6.0 KiB
Objective-C
//
|
|
// OCMockito - OCMockito.h
|
|
// Copyright 2013 Jonathan M. Reid. See LICENSE.txt
|
|
//
|
|
// Created by: Jon Reid, http://qualitycoding.org/
|
|
// Source: https://github.com/jonreid/OCMockito
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
#import "MKTClassObjectMock.h"
|
|
#import "MKTObjectMock.h"
|
|
#import "MKTObjectAndProtocolMock.h"
|
|
#import "MKTOngoingStubbing.h"
|
|
#import "MKTProtocolMock.h"
|
|
#import <objc/objc-api.h>
|
|
|
|
|
|
#define MKTMock(aClass) [MKTObjectMock mockForClass:aClass]
|
|
|
|
/**
|
|
Returns a mock object of a given class.
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTMock instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define mock(aClass) MKTMock(aClass)
|
|
#endif
|
|
|
|
|
|
#define MKTMockClass(aClass) [MKTClassObjectMock mockForClass:aClass]
|
|
|
|
/**
|
|
Returns a mock class object of a given class.
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTMockClass instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define mockClass(aClass) MKTMockClass(aClass)
|
|
#endif
|
|
|
|
|
|
#define MKTMockProtocol(aProtocol) [MKTProtocolMock mockForProtocol:aProtocol]
|
|
|
|
/**
|
|
Returns a mock object implementing a given protocol.
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTMockProtocol instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define mockProtocol(aProtocol) MKTMockProtocol(aProtocol)
|
|
#endif
|
|
|
|
|
|
#define MKTMockObjectAndProtocol(aClass, aProtocol) [MKTObjectAndProtocolMock mockForClass:aClass protocol:aProtocol]
|
|
|
|
/**
|
|
Returns a mock object of a given class that also implements a given protocol.
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTMockObjectAndProtocol instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define mockObjectAndProtocol(aClass, aProtocol) MKTMockObjectAndProtocol(aClass, aProtocol)
|
|
#endif
|
|
|
|
|
|
OBJC_EXPORT MKTOngoingStubbing *MKTGivenWithLocation(id testCase, const char *fileName, int lineNumber, ...);
|
|
#define MKTGiven(methodCall) MKTGivenWithLocation(self, __FILE__, __LINE__, methodCall)
|
|
|
|
/**
|
|
Enables method stubbing.
|
|
|
|
Use @c given when you want the mock to return particular value when particular method is called.
|
|
|
|
Example:
|
|
@li @ref [given([mockObject methodReturningString]) willReturn:@"foo"];
|
|
|
|
See @ref MKTOngoingStubbing for other methods to stub different types of return values.
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTGiven instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define given(methodCall) MKTGiven(methodCall)
|
|
#endif
|
|
|
|
|
|
OBJC_EXPORT id MKTVerifyWithLocation(id mock, id testCase, const char *fileName, int lineNumber);
|
|
#define MKTVerify(mock) MKTVerifyWithLocation(mock, self, __FILE__, __LINE__)
|
|
|
|
/**
|
|
Verifies certain behavior happened once.
|
|
|
|
@c verify checks that a method was invoked once, with arguments that match given OCHamcrest
|
|
matchers. If an argument is not a matcher, it is implicitly wrapped in an @c equalTo matcher to
|
|
check for equality.
|
|
|
|
Examples:
|
|
@code
|
|
[verify(mockObject) someMethod:startsWith(@"foo")];
|
|
[verify(mockObject) someMethod:@"bar"];
|
|
@endcode
|
|
|
|
@c verify(mockObject) is equivalent to
|
|
@code
|
|
verifyCount(mockObject, times(1))
|
|
@endcode
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTVerify instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#undef verify
|
|
#define verify(mock) MKTVerify(mock)
|
|
#endif
|
|
|
|
|
|
OBJC_EXPORT id MKTVerifyCountWithLocation(id mock, id mode, id testCase, const char *fileName, int lineNumber);
|
|
#define MKTVerifyCount(mock, mode) MKTVerifyCountWithLocation(mock, mode, self, __FILE__, __LINE__)
|
|
|
|
/**
|
|
Verifies certain behavior happened a given number of times.
|
|
|
|
Examples:
|
|
@code
|
|
[verifyCount(mockObject, times(5)) someMethod:@"was called five times"];
|
|
[verifyCount(mockObject, never()) someMethod:@"was never called"];
|
|
@endcode
|
|
|
|
@c verifyCount checks that a method was invoked a given number of times, with arguments that
|
|
match given OCHamcrest matchers. If an argument is not a matcher, it is implicitly wrapped in an
|
|
@c equalTo matcher to check for equality.
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTVerifyCount instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define verifyCount(mock, mode) MKTVerifyCount(mock, mode)
|
|
#endif
|
|
|
|
|
|
OBJC_EXPORT id MKTTimes(NSUInteger wantedNumberOfInvocations);
|
|
|
|
/**
|
|
Verifies exact number of invocations.
|
|
|
|
Example:
|
|
@code
|
|
[verifyCount(mockObject, times(2)) someMethod:@"some arg"];
|
|
@endcode
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTTimes instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define times(wantedNumberOfInvocations) MKTTimes(wantedNumberOfInvocations)
|
|
#endif
|
|
|
|
|
|
OBJC_EXPORT id MKTNever(void);
|
|
|
|
/**
|
|
Verifies that interaction did not happen.
|
|
|
|
Example:
|
|
@code
|
|
[verifyCount(mockObject, never()) someMethod:@"some arg"];
|
|
@endcode
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTNever instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define never() MKTNever()
|
|
#endif
|
|
|
|
|
|
OBJC_EXPORT id MKTAtLeast(NSUInteger minimumWantedNumberOfInvocations);
|
|
|
|
/**
|
|
Verifies minimum number of invocations.
|
|
|
|
The verification will succeed if the specified invocation happened the number of times
|
|
specified or more.
|
|
|
|
Example:
|
|
@code
|
|
[verifyCount(mockObject, atLeast(2)) someMethod:@"some arg"];
|
|
@endcode
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTAtLeast instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define atLeast(minimumWantedNumberOfInvocations) MKTAtLeast(minimumWantedNumberOfInvocations)
|
|
#endif
|
|
|
|
|
|
OBJC_EXPORT id MKTAtLeastOnce(void);
|
|
|
|
/**
|
|
Verifies that interaction happened once or more.
|
|
|
|
Example:
|
|
@code
|
|
[verifyCount(mockObject, atLeastOnce()) someMethod:@"some arg"];
|
|
@endcode
|
|
|
|
(In the event of a name clash, don't \#define @c MOCKITO_SHORTHAND and use the synonym
|
|
@c MKTAtLeastOnce instead.)
|
|
*/
|
|
#ifdef MOCKITO_SHORTHAND
|
|
#define atLeastOnce() MKTAtLeastOnce()
|
|
#endif
|