aboutsummaryrefslogtreecommitdiff
path: root/Foundation
diff options
context:
space:
mode:
authorGravatar dmaclach <dmaclach@gmail.com>2018-11-11 10:46:39 -0800
committerGravatar GitHub <noreply@github.com>2018-11-11 10:46:39 -0800
commitc7b2368df74a6d146cad04894ded0ec88367b7ff (patch)
tree320b59253708a628e0b814744a692ae9e3ff455b /Foundation
parentfb4035f4403005ad400e98a0f1f6f527a26a1658 (diff)
Remove unused GTMNSArray+Merge (#182)
Diffstat (limited to 'Foundation')
-rw-r--r--Foundation/GTMNSArray+Merge.h47
-rw-r--r--Foundation/GTMNSArray+Merge.m111
-rw-r--r--Foundation/GTMNSArray+MergeTest.m218
3 files changed, 0 insertions, 376 deletions
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 <Foundation/Foundation.h>
-
-// 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 <objc/message.h>
-#else // GTM_IPHONE_SDK
-#import <objc/objc-runtime.h>
-#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
-