/Unit tests/TestVersionComparisonBetweenStrings.m

https://github.com/mutru/growl · Objective C · 238 lines · 175 code · 34 blank · 29 comment · 0 complexity · e201a0188cf29a640315aee36b416431 MD5 · raw file

  1. //
  2. // TestVersionComparisonBetweenStrings.m
  3. // Growl
  4. //
  5. // Created by Peter Hosey on 2009-10-13.
  6. // Copyright 2009 Peter Hosey. All rights reserved.
  7. //
  8. #import "TestVersionComparisonBetweenStrings.h"
  9. #import "GrowlVersionUtilities.h"
  10. @implementation TestVersionComparisonBetweenStrings
  11. - (void) testSVNVersionNewerThanSVNVersion {
  12. NSString *olderString = @"1.0svn1000", *newerString = @"1.0svn1009";
  13. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  14. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  15. olderString = @"1.0svn1000";
  16. newerString = @"2.5.1svn1009";
  17. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  18. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  19. }
  20. - (void) testSVNVersionEqualToSVNVersion {
  21. NSString *string = @"1.0svn1000";
  22. STAssertEquals(compareVersionStrings(string, string), (CFComparisonResult)kCFCompareEqualTo, @"Version string (%@) must be equal to itself", string);
  23. //Version-equal, but not string-equal.
  24. NSString *stringA = @"01.00svn01000";
  25. NSString *stringB = @"1.0svn1000";
  26. STAssertEquals(compareVersionStrings(stringA, stringB), (CFComparisonResult)kCFCompareEqualTo, @"Version from string %@ must be equal to version from string %@", stringA, stringB);
  27. }
  28. - (void) testDevelopmentVersionNewerThanDevelopmentVersion {
  29. NSString *olderString = @"1.0d10", *newerString = @"1.0d19";
  30. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  31. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  32. //Note that in this case, the development field is *lower*. Earlier development versions of newer releases should always compare newer.
  33. olderString = @"1.0d10";
  34. newerString = @"2.5.1d5";
  35. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  36. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  37. }
  38. - (void) testDevelopmentVersionEqualToDevelopmentVersion {
  39. NSString *string = @"1.0d10";
  40. STAssertEquals(compareVersionStrings(string, string), (CFComparisonResult)kCFCompareEqualTo, @"Version string (%@) must be equal to itself", string);
  41. //Version-equal, but not string-equal.
  42. NSString *stringA = @"01.00d010";
  43. NSString *stringB = @"1.0d10";
  44. STAssertEquals(compareVersionStrings(stringA, stringB), (CFComparisonResult)kCFCompareEqualTo, @"Version from string %@ must be equal to version from string %@", stringA, stringB);
  45. }
  46. - (void) testAlphaNewerThanAlpha {
  47. NSString *olderString = @"1.0a10", *newerString = @"1.0a19";
  48. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  49. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  50. //Note that in this case, the development field is *lower*. Earlier development versions of newer releases should always compare newer.
  51. olderString = @"1.0a10";
  52. newerString = @"2.5.1a5";
  53. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  54. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  55. }
  56. - (void) testAlphaEqualToAlpha {
  57. NSString *string = @"1.0a10";
  58. STAssertEquals(compareVersionStrings(string, string), (CFComparisonResult)kCFCompareEqualTo, @"Version string (%@) must be equal to itself", string);
  59. //Version-equal, but not string-equal.
  60. NSString *stringA = @"01.00a010";
  61. NSString *stringB = @"1.0a10";
  62. STAssertEquals(compareVersionStrings(stringA, stringB), (CFComparisonResult)kCFCompareEqualTo, @"Version from string %@ must be equal to version from string %@", stringA, stringB);
  63. }
  64. - (void) testBetaNewerThanBeta {
  65. NSString *olderString = @"1.0b10", *newerString = @"1.0b19";
  66. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  67. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  68. //Note that in this case, the development field is *lower*. Earlier development versions of newer releases should always compare newer.
  69. olderString = @"1.0b10";
  70. newerString = @"2.5.1b5";
  71. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  72. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  73. }
  74. - (void) testBetaEqualToBeta {
  75. NSString *string = @"1.0b10";
  76. STAssertEquals(compareVersionStrings(string, string), (CFComparisonResult)kCFCompareEqualTo, @"Version string (%@) must be equal to itself", string);
  77. //Version-equal, but not string-equal.
  78. NSString *stringA = @"01.00b010";
  79. NSString *stringB = @"1.0b10";
  80. STAssertEquals(compareVersionStrings(stringA, stringB), (CFComparisonResult)kCFCompareEqualTo, @"Version from string %@ must be equal to version from string %@", stringA, stringB);
  81. }
  82. - (void) testReleaseNewerThanRelease {
  83. NSString *olderString = @"1.0", *newerString = @"1.0.1";
  84. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  85. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  86. olderString = @"1.0";
  87. newerString = @"2.5.1";
  88. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  89. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  90. }
  91. - (void) testReleaseEqualToRelease {
  92. NSString *string = @"1.0";
  93. STAssertEquals(compareVersionStrings(string, string), (CFComparisonResult)kCFCompareEqualTo, @"Version string (%@) must be equal to itself", string);
  94. //Version-equal, but not string-equal.
  95. NSString *stringA = @"01.00.0";
  96. NSString *stringB = @"1.0";
  97. STAssertEquals(compareVersionStrings(stringA, stringB), (CFComparisonResult)kCFCompareEqualTo, @"Version from string %@ must be equal to version from string %@", stringA, stringB);
  98. }
  99. #pragma mark -
  100. - (void) testReleaseNewerThanBeta {
  101. NSString *olderString = @"1.0b5", *newerString = @"1.0";
  102. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Beta (%@) must be less than release (%@)", olderString, newerString);
  103. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than beta (%@)", newerString, olderString);
  104. //Inverse: Make sure an earlier beta of a later release compares as newer.
  105. olderString = newerString;
  106. newerString = @"2.0b2";
  107. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Beta (%@) must be less than release (%@)", olderString, newerString);
  108. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than beta (%@)", newerString, olderString);
  109. }
  110. - (void) testReleaseNewerThanAlpha {
  111. NSString *olderString = @"1.0a5", *newerString = @"1.0";
  112. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Alpha (%@) must be less than release (%@)", olderString, newerString);
  113. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than alpha (%@)", newerString, olderString);
  114. //Inverse: Make sure an earlier alpha of a later release compares as newer.
  115. olderString = newerString;
  116. newerString = @"2.0a2";
  117. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Beta (%@) must be less than release (%@)", olderString, newerString);
  118. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than beta (%@)", newerString, olderString);
  119. }
  120. - (void) testReleaseNewerThanDevelopmentVersion {
  121. NSString *olderString = @"1.0d5", *newerString = @"1.0";
  122. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than release (%@)", olderString, newerString);
  123. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than development version (%@)", newerString, olderString);
  124. //Inverse: Make sure an earlier development version of a later release compares as newer.
  125. olderString = newerString;
  126. newerString = @"2.0d2";
  127. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than release (%@)", olderString, newerString);
  128. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than development version (%@)", newerString, olderString);
  129. }
  130. - (void) testReleaseNewerThanSVNVersion {
  131. NSString *olderString = @"1.0svn500", *newerString = @"1.0";
  132. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than release (%@)", olderString, newerString);
  133. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than SVN version (%@)", newerString, olderString);
  134. //Inverse: Make sure an earlier SVN version of a later release compares as newer.
  135. //(This can happen in the case of reviving a maintenance branch for an emergency fix.)
  136. olderString = newerString;
  137. newerString = @"2.0svn200";
  138. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than release (%@)", olderString, newerString);
  139. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than SVN version (%@)", newerString, olderString);
  140. }
  141. - (void) testBetaNewerThanAlpha {
  142. NSString *olderString = @"1.0a5", *newerString = @"1.0b4";
  143. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Alpha (%@) must be less than beta (%@)", olderString, newerString);
  144. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than alpha (%@)", newerString, olderString);
  145. //Inverse: Make sure an earlier alpha of a later release compares as newer.
  146. olderString = newerString;
  147. newerString = @"2.0a2";
  148. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Alpha (%@) must be less than beta (%@)", olderString, newerString);
  149. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than alpha (%@)", newerString, olderString);
  150. }
  151. - (void) testBetaNewerThanDevelopmentVersion {
  152. NSString *olderString = @"1.0d5", *newerString = @"1.0b4";
  153. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than beta (%@)", olderString, newerString);
  154. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than development version (%@)", newerString, olderString);
  155. //Inverse: Make sure an earlier development version of a later release compares as newer.
  156. olderString = newerString;
  157. newerString = @"2.0d2";
  158. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than beta (%@)", olderString, newerString);
  159. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than development version (%@)", newerString, olderString);
  160. }
  161. - (void) testBetaNewerThanSVNVersion {
  162. NSString *olderString = @"1.0svn500", *newerString = @"1.0b4";
  163. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than beta (%@)", olderString, newerString);
  164. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than SVN version (%@)", newerString, olderString);
  165. //Inverse: Make sure an earlier SVN version of a later release compares as newer.
  166. //(This can happen in the case of reviving a maintenance branch for an emergency fix.)
  167. olderString = newerString;
  168. newerString = @"2.0svn200";
  169. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than beta (%@)", olderString, newerString);
  170. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than SVN version (%@)", newerString, olderString);
  171. }
  172. - (void) testAlphaNewerThanDevelopmentVersion {
  173. NSString *olderString = @"1.0d5", *newerString = @"1.0a4";
  174. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than alpha (%@)", olderString, newerString);
  175. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Alpha (%@) must be greater than development version (%@)", newerString, olderString);
  176. //Inverse: Make sure an earlier development version of a later release compares as newer.
  177. olderString = newerString;
  178. newerString = @"2.0d2";
  179. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than alpha (%@)", olderString, newerString);
  180. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Alpha (%@) must be greater than development version (%@)", newerString, olderString);
  181. }
  182. - (void) testAlphaNewerThanSVNVersion {
  183. NSString *olderString = @"1.0svn500", *newerString = @"1.0a4";
  184. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than alpha (%@)", olderString, newerString);
  185. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Alpha (%@) must be greater than SVN version (%@)", newerString, olderString);
  186. //Inverse: Make sure an earlier SVN version of a later release compares as newer.
  187. //(This can happen in the case of reviving a maintenance branch for an emergency fix.)
  188. olderString = newerString;
  189. newerString = @"2.0svn200";
  190. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than alpha (%@)", olderString, newerString);
  191. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Alpha (%@) must be greater than SVN version (%@)", newerString, olderString);
  192. }
  193. - (void) testDevelopmentVersionNewerThanSVNVersion {
  194. NSString *olderString = @"1.0svn500", *newerString = @"1.0d4";
  195. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than development version (%@)", olderString, newerString);
  196. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Development version (%@) must be greater than SVN version (%@)", newerString, olderString);
  197. //Inverse: Make sure an earlier SVN version of a later release compares as newer.
  198. //(This can happen in the case of reviving a maintenance branch for an emergency fix.)
  199. olderString = newerString;
  200. newerString = @"2.0svn200";
  201. STAssertEquals(compareVersionStrings(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than Development version (%@)", olderString, newerString);
  202. STAssertEquals(compareVersionStrings(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than SVN version (%@)", newerString, olderString);
  203. }
  204. @end