blob: 79e49117ce80e905dd5c38dbbe0cee47850b3f57 [file] [log] [blame] [edit]
/*
* Copyright (c) 2014-2015 Erik Doernenburg and contributors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use these files except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
#import <XCTest/XCTest.h>
#import "OCMockObject.h"
#import "OCMStubRecorder.h"
@interface TestBaseClassForVerifyAfterRun : NSObject
+ (NSString *)classMethod1;
- (NSString *)method2;
@end
@implementation TestBaseClassForVerifyAfterRun
+ (NSString *)classMethod1
{
return @"Foo-ClassMethod";
}
- (NSString *)method2
{
return @"Foo";
}
@end
@interface TestClassForVerifyAfterRun : TestBaseClassForVerifyAfterRun
- (NSString *)method1;
@end
@implementation TestClassForVerifyAfterRun
- (NSString *)method1
{
id retVal = [self method2];
return retVal;
}
@end
@interface OCMockObjectVerifyAfterRunTests : XCTestCase
@end
@implementation OCMockObjectVerifyAfterRunTests
- (void)testDoesNotThrowWhenMethodWasInvoked
{
id mock = [OCMockObject niceMockForClass:[NSString class]];
[mock lowercaseString];
XCTAssertNoThrow([[mock verify] lowercaseString], @"Should not have thrown an exception for method that was called.");
}
- (void)testThrowsWhenMethodWasNotInvoked
{
id mock = [OCMockObject niceMockForClass:[NSString class]];
[mock lowercaseString];
XCTAssertThrows([[mock verify] uppercaseString], @"Should have thrown an exception for a method that was not called.");
}
- (void)testDoesNotThrowWhenMethodWasInvokedOnPartialMock
{
TestClassForVerifyAfterRun *testObject = [[TestClassForVerifyAfterRun alloc] init];
id mock = [OCMockObject partialMockForObject:testObject];
[mock method2];
XCTAssertNoThrow([[mock verify] method2], @"Should not have thrown an exception for method that was called.");
}
- (void)testDoesNotThrowWhenMethodWasInvokedOnRealObjectEvenInSuperclass
{
TestClassForVerifyAfterRun *testObject = [[TestClassForVerifyAfterRun alloc] init];
id mock = [OCMockObject partialMockForObject:testObject];
NSString *string = [testObject method1];
XCTAssertEqualObjects(@"Foo", string, @"Should have returned value from actual implementation.");
XCTAssertNoThrow([[mock verify] method2], @"Should not have thrown an exception for method that was called.");
}
- (void)testDoesNotThrowWhenClassMethodWasInvoked
{
id mock = [OCMockObject niceMockForClass:[TestBaseClassForVerifyAfterRun class]];
[TestBaseClassForVerifyAfterRun classMethod1];
XCTAssertNoThrow([[mock verify] classMethod1], @"Should not have thrown an exception for class method that was called.");
}
- (void)testThrowsWhenClassMethodWasNotInvoked
{
id mock = [OCMockObject niceMockForClass:[TestBaseClassForVerifyAfterRun class]];
XCTAssertThrows([[mock verify] classMethod1], @"Should not have thrown an exception for class method that was called.");
}
@end