From c7b2368df74a6d146cad04894ded0ec88367b7ff Mon Sep 17 00:00:00 2001 From: dmaclach Date: Sun, 11 Nov 2018 10:46:39 -0800 Subject: Remove unused GTMNSArray+Merge (#182) --- Foundation/GTMNSArray+Merge.h | 47 -------- Foundation/GTMNSArray+Merge.m | 111 ------------------- Foundation/GTMNSArray+MergeTest.m | 218 -------------------------------------- 3 files changed, 376 deletions(-) delete mode 100644 Foundation/GTMNSArray+Merge.h delete mode 100644 Foundation/GTMNSArray+Merge.m delete mode 100644 Foundation/GTMNSArray+MergeTest.m (limited to 'Foundation') diff --git a/Foundation/GTMNSArray+Merge.h b/Foundation/GTMNSArray+Merge.h deleted file mode 100644 index ef8787b..0000000 --- a/Foundation/GTMNSArray+Merge.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// GTMNSArray+Merge.h -// -// Copyright 2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file 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 - -// Extension to NSArray to allow merging of arrays. -// -@interface NSArray (GTMNSArrayMergingAdditions) - -// Merge our array with |newArray| by sorting each array then merging the -// two arrays. If |merger| is provided then call that method on any old -// items that compare as equal to a new item, passing the new item as -// the only argument. If |merger| is not provided, then insert new items -// in front of matching old items. If neither array has any items then -// nil is returned. -// -// The signature of the |merger| is: -// - (id)merge:(id)newItem; -// -// Returns a new, sorted array. -- (NSArray *)gtm_mergeArray:(NSArray *)newArray - mergeSelector:(SEL)merger; - -// Same as above, only |comparer| is used to sort/compare the objects, just like -// -[NSArray sortedArrayUsingSelector]. If |comparer| is nil, nil is returned. -- (NSArray *)gtm_mergeArray:(NSArray *)newArray - compareSelector:(SEL)comparer - mergeSelector:(SEL)merger; - -@end - - diff --git a/Foundation/GTMNSArray+Merge.m b/Foundation/GTMNSArray+Merge.m deleted file mode 100644 index 4b67853..0000000 --- a/Foundation/GTMNSArray+Merge.m +++ /dev/null @@ -1,111 +0,0 @@ -// -// GTMNSArray+Merge.m -// -// Copyright 2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file 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 "GTMNSArray+Merge.h" - -#import "GTMDefines.h" - -#if GTM_IPHONE_SDK -#import -#else // GTM_IPHONE_SDK -#import -#endif // GTM_IPHONE_SDK - -@implementation NSArray (GTMNSArrayMergingAdditions) - -- (NSArray *)gtm_mergeArray:(NSArray *)newArray - mergeSelector:(SEL)merger { - return [self gtm_mergeArray:newArray - compareSelector:@selector(compare:) - mergeSelector:merger]; -} - -- (NSArray *)gtm_mergeArray:(NSArray *)newArray - compareSelector:(SEL)comparer - mergeSelector:(SEL)merger { - // must have a compare selector - if (!comparer) return nil; - - // Sort and merge the contents of |self| with |newArray|. - NSArray *sortedMergedArray = nil; - if ([self count] && [newArray count]) { - NSMutableArray *mergingArray = [NSMutableArray arrayWithArray:self]; - [mergingArray sortUsingSelector:comparer]; - NSArray *sortedNewArray - = [newArray sortedArrayUsingSelector:comparer]; - - NSUInteger oldIndex = 0; - NSUInteger oldCount = [mergingArray count]; - id oldItem = (oldIndex < oldCount) - ? [mergingArray objectAtIndex:0] - : nil; - - id newItem = nil; - for (newItem in sortedNewArray) { - BOOL stillLooking = YES; - while (oldIndex < oldCount && stillLooking) { - // We must take care here, since Intel leaves junk in high bytes of - // return register for predicates that return BOOL. - // For details see: - // http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_23.html - // and - // http://www.red-sweater.com/blog/320/abusing-objective-c-with-class#comment-83187 - NSComparisonResult result - = ((NSComparisonResult (*)(id, SEL, id))objc_msgSend)(newItem, comparer, oldItem); - if (result == NSOrderedSame && merger) { - // It's a match! - id repItem = [oldItem performSelector:merger - withObject:newItem]; - [mergingArray replaceObjectAtIndex:oldIndex - withObject:repItem]; - ++oldIndex; - oldItem = (oldIndex < oldCount) - ? [mergingArray objectAtIndex:oldIndex] - : nil; - stillLooking = NO; - } else if (result == NSOrderedAscending - || (result == NSOrderedSame && !merger)) { - // This is either a new item and belongs right here, or it's - // a match to an existing item but we're not merging. - [mergingArray insertObject:newItem - atIndex:oldIndex]; - ++oldIndex; - ++oldCount; - stillLooking = NO; - } else { - ++oldIndex; - oldItem = (oldIndex < oldCount) - ? [mergingArray objectAtIndex:oldIndex] - : nil; - } - } - if (stillLooking) { - // Once we get here, the rest of the new items get appended. - [mergingArray addObject:newItem]; - } - } - sortedMergedArray = mergingArray; - } else if ([self count]) { - sortedMergedArray = [self sortedArrayUsingSelector:comparer]; - } else if ([newArray count]) { - sortedMergedArray = [newArray sortedArrayUsingSelector:comparer]; - } - return sortedMergedArray; -} - -@end diff --git a/Foundation/GTMNSArray+MergeTest.m b/Foundation/GTMNSArray+MergeTest.m deleted file mode 100644 index 535e0ce..0000000 --- a/Foundation/GTMNSArray+MergeTest.m +++ /dev/null @@ -1,218 +0,0 @@ -// -// GTMNSArray+MergeTest.m -// -// Copyright 2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file 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 "GTMSenTestCase.h" -#import "GTMNSArray+Merge.h" - -@interface GTMNSArray_MergeTest : GTMTestCase -@end - - -@interface NSString (GTMStringMergingTestAdditions) - -- (NSString *)mergeString:(NSString *)stringB; - -@end - - -@implementation GTMNSArray_MergeTest - -- (void)testMergingTwoEmptyArrays { - NSArray *emptyArrayA = [NSArray array]; - NSArray *emptyArrayB = [NSArray array]; - NSArray *mergedArray = [emptyArrayA gtm_mergeArray:emptyArrayB - mergeSelector:nil]; - XCTAssertNil(mergedArray, - @"merge of two empty arrays with no merger should render nil"); -} - -- (void)testMergingTwoEmptyArraysWithMerger { - NSArray *emptyArrayA = [NSArray array]; - NSArray *emptyArrayB = [NSArray array]; - NSArray *mergedArray - = [emptyArrayA gtm_mergeArray:emptyArrayB - mergeSelector:@selector(mergeString:)]; - XCTAssertNil(mergedArray, - @"merge of two empty arrays with merger should render nil"); -} - -- (void)testMergingEmptyWithNilArray { - NSArray *emptyArrayA = [NSArray array]; - NSArray *nilArrayB = nil; - NSArray *mergedArray = [emptyArrayA gtm_mergeArray:nilArrayB - mergeSelector:nil]; - XCTAssertNil(mergedArray, - @"merge of empty with nil array with no merger should render nil"); -} - -- (void)testMergingEmptyWithNilArrayWithMerger { - NSArray *emptyArrayA = [NSArray array]; - NSArray *nilArrayB = nil; - NSArray *mergedArray - = [emptyArrayA gtm_mergeArray:nilArrayB - mergeSelector:@selector(mergeString:)]; - XCTAssertNil(mergedArray, - @"merge of empty with nil array with merger should render nil"); -} - -- (void)testMergingTwoOneItemArraysThatDontMatch { - NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"]; - NSArray *arrayB = [NSArray arrayWithObject:@"abc.ghi"]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:nil]; - XCTAssertNotNil(mergedArray, - @"merge of two non empty arrays with no merger should render " - @"an array"); - XCTAssertEqual([mergedArray count], (NSUInteger)2, - @"merged array should have two items"); - XCTAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def"); - XCTAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi"); -} - -- (void)testMergingTwoOneItemArraysThatDontMatchWithMerger { - NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"]; - NSArray *arrayB = [NSArray arrayWithObject:@"abc.ghi"]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:@selector(mergeString:)]; - XCTAssertNotNil(mergedArray, - @"merge of two non empty arrays with merger should render " - @"an array"); - XCTAssertEqual([mergedArray count], (NSUInteger)2, - @"merged array should have two items"); - XCTAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def"); - XCTAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi"); -} - -- (void)testMergingTwoOneItemArraysThatMatch { - NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"]; - NSArray *arrayB = [NSArray arrayWithObject:@"abc.def"]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:nil]; - XCTAssertNotNil(mergedArray, - @"merge of two matching arrays with no merger should render " - @"an array"); - XCTAssertEqual([mergedArray count], (NSUInteger)2, - @"merged array with no merger should have two items"); - XCTAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def"); - XCTAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.def"); -} - -- (void)testMergingTwoOneItemArraysThatMatchWithMerger { - NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"]; - NSArray *arrayB = [NSArray arrayWithObject:@"abc.def"]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:@selector(mergeString:)]; - XCTAssertNotNil(mergedArray, - @"merge of two matching arrays with merger should render " - @"an array"); - XCTAssertEqual([mergedArray count], (NSUInteger)1, - @"merged array with merger should have one items"); - XCTAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def"); -} - -- (void)testMergingMultipleItemArray { - NSArray *arrayA = [NSArray arrayWithObjects: - @"Kansas", - @"Arkansas", - @"Wisconson", - @"South Carolina", - nil]; - NSArray *arrayB = [NSArray arrayWithObjects: - @"South Carolina", - @"Quebec", - @"British Columbia", - @"Arkansas", - @"South Hamptom", - nil]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:nil]; - XCTAssertNotNil(mergedArray, - @"merge of two non empty arrays with no merger should render " - @"an array"); - XCTAssertEqual([mergedArray count], (NSUInteger)9, - @"merged array should have 9 items"); -} - -- (void)testMergingMultipleItemArrayWithMerger { - NSArray *arrayA = [NSArray arrayWithObjects: - @"Kansas", - @"Arkansas", - @"Wisconson", - @"South Carolina", - nil]; - NSArray *arrayB = [NSArray arrayWithObjects: - @"South Carolina", - @"Quebec", - @"British Columbia", - @"Arkansas", - @"South Hamptom", - nil]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:@selector(mergeString:)]; - XCTAssertNotNil(mergedArray, - @"merge of two non empty arrays with merger should render " - @"an array"); - XCTAssertEqual([mergedArray count], (NSUInteger)7, - @"merged array should have 7 items"); -} - -- (void)testMergeWithEmptyArrays { - NSArray *arrayA = [NSArray arrayWithObjects:@"xyz", @"abc", @"mno", nil]; - NSArray *arrayB = [NSArray array]; - NSArray *expected = [NSArray arrayWithObjects:@"abc", @"mno", @"xyz", nil]; - XCTAssertNotNil(arrayA); - XCTAssertNotNil(arrayB); - XCTAssertNotNil(expected); - NSArray *mergedArray; - - // no merger - mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:nil]; - XCTAssertNotNil(mergedArray); - XCTAssertEqualObjects(mergedArray, expected); - - // w/ merger - mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:@selector(mergeString:)]; - XCTAssertNotNil(mergedArray); - XCTAssertEqualObjects(mergedArray, expected); - - // no merger and array args reversed - mergedArray = [arrayB gtm_mergeArray:arrayA - mergeSelector:nil]; - XCTAssertNotNil(mergedArray); - XCTAssertEqualObjects(mergedArray, expected); - - // w/ merger and array args reversed - mergedArray = [arrayB gtm_mergeArray:arrayA - mergeSelector:@selector(mergeString:)]; - XCTAssertNotNil(mergedArray); - XCTAssertEqualObjects(mergedArray, expected); -} - -@end - - -@implementation NSString (GTMStringMergingTestAdditions) - -- (NSString *)mergeString:(NSString *)stringB { - return stringB; -} - -@end - -- cgit v1.2.3