PageRenderTime 32ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/core/externals/google-toolbox-for-mac/Foundation/GTMNSArray+MergeTest.m

http://macfuse.googlecode.com/
Objective C | 219 lines | 168 code | 30 blank | 21 comment | 0 complexity | a5a7a92809b03f53c3b022e569bd7ec0 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause, GPL-2.0
  1. //
  2. // GTMNSArray+MergeTest.m
  3. //
  4. // Copyright 2008 Google Inc.
  5. //
  6. // Licensed under the Apache License, Version 2.0 (the "License"); you may not
  7. // use this file except in compliance with the License. You may obtain a copy
  8. // of the License at
  9. //
  10. // http://www.apache.org/licenses/LICENSE-2.0
  11. //
  12. // Unless required by applicable law or agreed to in writing, software
  13. // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  14. // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  15. // License for the specific language governing permissions and limitations
  16. // under the License.
  17. //
  18. #import "GTMSenTestCase.h"
  19. #import "GTMNSArray+Merge.h"
  20. @interface GTMNSArray_MergeTest : GTMTestCase
  21. @end
  22. @interface NSString (GTMStringMergingTestAdditions)
  23. - (NSString *)mergeString:(NSString *)stringB;
  24. @end
  25. @implementation GTMNSArray_MergeTest
  26. - (void)testMergingTwoEmptyArrays {
  27. NSArray *emptyArrayA = [NSArray array];
  28. NSArray *emptyArrayB = [NSArray array];
  29. NSArray *mergedArray = [emptyArrayA gtm_mergeArray:emptyArrayB
  30. mergeSelector:nil];
  31. STAssertNil(mergedArray,
  32. @"merge of two empty arrays with no merger should render nil");
  33. }
  34. - (void)testMergingTwoEmptyArraysWithMerger {
  35. NSArray *emptyArrayA = [NSArray array];
  36. NSArray *emptyArrayB = [NSArray array];
  37. NSArray *mergedArray
  38. = [emptyArrayA gtm_mergeArray:emptyArrayB
  39. mergeSelector:@selector(mergeString:)];
  40. STAssertNil(mergedArray,
  41. @"merge of two empty arrays with merger should render nil");
  42. }
  43. - (void)testMergingEmptyWithNilArray {
  44. NSArray *emptyArrayA = [NSArray array];
  45. NSArray *nilArrayB = nil;
  46. NSArray *mergedArray = [emptyArrayA gtm_mergeArray:nilArrayB
  47. mergeSelector:nil];
  48. STAssertNil(mergedArray,
  49. @"merge of empty with nil array with no merger should render nil");
  50. }
  51. - (void)testMergingEmptyWithNilArrayWithMerger {
  52. NSArray *emptyArrayA = [NSArray array];
  53. NSArray *nilArrayB = nil;
  54. NSArray *mergedArray
  55. = [emptyArrayA gtm_mergeArray:nilArrayB
  56. mergeSelector:@selector(mergeString:)];
  57. STAssertNil(mergedArray,
  58. @"merge of empty with nil array with merger should render nil");
  59. }
  60. - (void)testMergingTwoOneItemArraysThatDontMatch {
  61. NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"];
  62. NSArray *arrayB = [NSArray arrayWithObject:@"abc.ghi"];
  63. NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
  64. mergeSelector:nil];
  65. STAssertNotNil(mergedArray,
  66. @"merge of two non empty arrays with no merger should render "
  67. @"an array");
  68. STAssertEquals([mergedArray count], (NSUInteger)2,
  69. @"merged array should have two items");
  70. STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil);
  71. STAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi", nil);
  72. }
  73. - (void)testMergingTwoOneItemArraysThatDontMatchWithMerger {
  74. NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"];
  75. NSArray *arrayB = [NSArray arrayWithObject:@"abc.ghi"];
  76. NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
  77. mergeSelector:@selector(mergeString:)];
  78. STAssertNotNil(mergedArray,
  79. @"merge of two non empty arrays with merger should render "
  80. @"an array");
  81. STAssertEquals([mergedArray count], (NSUInteger)2,
  82. @"merged array should have two items");
  83. STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil);
  84. STAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi", nil);
  85. }
  86. - (void)testMergingTwoOneItemArraysThatMatch {
  87. NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"];
  88. NSArray *arrayB = [NSArray arrayWithObject:@"abc.def"];
  89. NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
  90. mergeSelector:nil];
  91. STAssertNotNil(mergedArray,
  92. @"merge of two matching arrays with no merger should render "
  93. @"an array");
  94. STAssertEquals([mergedArray count], (NSUInteger)2,
  95. @"merged array with no merger should have two items");
  96. STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil);
  97. STAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.def", nil);
  98. }
  99. - (void)testMergingTwoOneItemArraysThatMatchWithMerger {
  100. NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"];
  101. NSArray *arrayB = [NSArray arrayWithObject:@"abc.def"];
  102. NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
  103. mergeSelector:@selector(mergeString:)];
  104. STAssertNotNil(mergedArray,
  105. @"merge of two matching arrays with merger should render "
  106. @"an array");
  107. STAssertEquals([mergedArray count], (NSUInteger)1,
  108. @"merged array with merger should have one items");
  109. STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil);
  110. }
  111. - (void)testMergingMultipleItemArray {
  112. NSArray *arrayA = [NSArray arrayWithObjects:
  113. @"Kansas",
  114. @"Arkansas",
  115. @"Wisconson",
  116. @"South Carolina",
  117. nil];
  118. NSArray *arrayB = [NSArray arrayWithObjects:
  119. @"South Carolina",
  120. @"Quebec",
  121. @"British Columbia",
  122. @"Arkansas",
  123. @"South Hamptom",
  124. nil];
  125. NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
  126. mergeSelector:nil];
  127. STAssertNotNil(mergedArray,
  128. @"merge of two non empty arrays with no merger should render "
  129. @"an array");
  130. STAssertEquals([mergedArray count], (NSUInteger)9,
  131. @"merged array should have 9 items");
  132. }
  133. - (void)testMergingMultipleItemArrayWithMerger {
  134. NSArray *arrayA = [NSArray arrayWithObjects:
  135. @"Kansas",
  136. @"Arkansas",
  137. @"Wisconson",
  138. @"South Carolina",
  139. nil];
  140. NSArray *arrayB = [NSArray arrayWithObjects:
  141. @"South Carolina",
  142. @"Quebec",
  143. @"British Columbia",
  144. @"Arkansas",
  145. @"South Hamptom",
  146. nil];
  147. NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
  148. mergeSelector:@selector(mergeString:)];
  149. STAssertNotNil(mergedArray,
  150. @"merge of two non empty arrays with merger should render "
  151. @"an array");
  152. STAssertEquals([mergedArray count], (NSUInteger)7,
  153. @"merged array should have 7 items");
  154. }
  155. - (void)testMergeWithEmptyArrays {
  156. NSArray *arrayA = [NSArray arrayWithObjects:@"xyz", @"abc", @"mno", nil];
  157. NSArray *arrayB = [NSArray array];
  158. NSArray *expected = [NSArray arrayWithObjects:@"abc", @"mno", @"xyz", nil];
  159. STAssertNotNil(arrayA, nil);
  160. STAssertNotNil(arrayB, nil);
  161. STAssertNotNil(expected, nil);
  162. NSArray *mergedArray;
  163. // no merger
  164. mergedArray = [arrayA gtm_mergeArray:arrayB
  165. mergeSelector:nil];
  166. STAssertNotNil(mergedArray, nil);
  167. STAssertEqualObjects(mergedArray, expected, nil);
  168. // w/ merger
  169. mergedArray = [arrayA gtm_mergeArray:arrayB
  170. mergeSelector:@selector(mergeString:)];
  171. STAssertNotNil(mergedArray, nil);
  172. STAssertEqualObjects(mergedArray, expected, nil);
  173. // no merger and array args reversed
  174. mergedArray = [arrayB gtm_mergeArray:arrayA
  175. mergeSelector:nil];
  176. STAssertNotNil(mergedArray, nil);
  177. STAssertEqualObjects(mergedArray, expected, nil);
  178. // w/ merger and array args reversed
  179. mergedArray = [arrayB gtm_mergeArray:arrayA
  180. mergeSelector:@selector(mergeString:)];
  181. STAssertNotNil(mergedArray, nil);
  182. STAssertEqualObjects(mergedArray, expected, nil);
  183. }
  184. @end
  185. @implementation NSString (GTMStringMergingTestAdditions)
  186. - (NSString *)mergeString:(NSString *)stringB {
  187. return stringB;
  188. }
  189. @end