// // MPRangeTests.m // MathPad // // Created by Kim Wittenburg on 21.04.14. // Copyright (c) 2014 Kim Wittenburg. All rights reserved. // #import #import "MPRange.h" @interface MPRangeTests : XCTestCase @end @implementation MPRangeTests - (void)testInitialization { MPRange *range = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndex:1] length:5]; XCTAssertEqualObjects(range.location, [[NSIndexPath alloc] initWithIndex:1]); XCTAssertEqual(range.length, 5); range = [[MPRange alloc] initWithRange:NSMakeRange(3, 2)]; XCTAssertEqualObjects(range.location, [[NSIndexPath alloc] initWithIndex:3]); XCTAssertEqual(range.length, 2); range = [MPRange emptyRange]; XCTAssertEqualObjects(range.location, [[NSIndexPath alloc] init]); XCTAssertEqual(range.length, 0); } - (void)testMaxRange { NSUInteger indexes[] = {5, 2, 7, 3}; MPRange *range = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:indexes length:4] length:5]; NSUInteger expectedIndexes[] = {5, 2, 7, 8}; XCTAssertEqualObjects([range maxRange], [[NSIndexPath alloc] initWithIndexes:expectedIndexes length:4]); } - (void)testRangeAtLastIndex { NSUInteger indexes[] = {5, 2, 7, 3}; MPRange *range = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:indexes length:4] length:5]; XCTAssertTrue(NSEqualRanges(range.rangeAtLastIndex, NSMakeRange(3, 5))); } - (void)testEquality { NSUInteger indexes[] = {5, 2, 7, 3}; MPRange *range = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:indexes length:4] length:5]; NSUInteger otherIndexes[] = {5, 2, 7, 3}; MPRange *otherRange = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:otherIndexes length:4] length:5]; NSUInteger yetOtherIndexes[] = {5, 2, 6, 3}; MPRange *yetAnotherRange = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:yetOtherIndexes length:4] length:5]; XCTAssertTrue([range isEqual:otherRange]); XCTAssertFalse([range isEqual:yetAnotherRange]); } - (void)testCopying { NSUInteger indexes[] = {5, 2, 7, 3}; MPRange *range = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:indexes length:4] length:5]; MPRange *copy = [range copy]; XCTAssertNotEqual(range, copy); XCTAssertEqualObjects(range, copy); } - (void)testContainsRange { NSUInteger indexes[] = {5, 2, 7, 3}; MPRange *range = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:indexes length:4] length:5]; NSUInteger shorterPathIndexes[] = {5, 2}; MPRange *shorterPathRange = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:shorterPathIndexes length:2] length:5]; NSUInteger longerPathIndexes[] = {5, 2, 7, 3, 5}; MPRange *longerPathRange = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:longerPathIndexes length:5] length:5]; NSUInteger differentPathIndexes[] = {5, 3, 7, 3}; MPRange *differentPathRange = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:differentPathIndexes length:4] length:5]; NSUInteger equalRangeIndexes[] = {5, 2, 7, 3}; MPRange *equalRange = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:equalRangeIndexes length:4] length:5]; NSUInteger containedRangeIndexes[] = {5, 2, 7, 4}; MPRange *containedRange = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:containedRangeIndexes length:4] length:2]; NSUInteger largerRangeIndexes[] = {5, 2, 7, 4}; MPRange *largerRange = [[MPRange alloc] initWithLocation:[[NSIndexPath alloc] initWithIndexes:largerRangeIndexes length:4] length:7]; XCTAssertFalse([range containsRange:shorterPathRange]); XCTAssertTrue([range containsRange:longerPathRange]); XCTAssertFalse([range containsRange:differentPathRange]); XCTAssertTrue([range containsRange:equalRange]); XCTAssertTrue([range containsRange:containedRange]); XCTAssertFalse([range containsRange:largerRange]); } @end