/Unit tests/TestVersionComparisonBetweenStringsConverting1_0To0_5.m

https://github.com/mutru/growl · Objective C · 257 lines · 191 code · 36 blank · 30 comment · 1 complexity · a1a6a1e8253b31f045ec1355eabcab6e MD5 · raw file

  1. //
  2. // TestVersionComparisonBetweenStringsConverting1_0To0_5.m
  3. // Growl
  4. //
  5. // Created by Peter Hosey on 2009-10-13.
  6. // Copyright 2009 Peter Hosey. All rights reserved.
  7. //
  8. #import "TestVersionComparisonBetweenStringsConverting1_0To0_5.h"
  9. #import "GrowlVersionUtilities.h"
  10. @implementation TestVersionComparisonBetweenStringsConverting1_0To0_5
  11. - (void) testSVNVersionNewerThanSVNVersion {
  12. NSString *olderString = @"1.0svn1000", *newerString = @"1.0svn1009";
  13. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  14. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  15. olderString = @"1.0svn1000";
  16. newerString = @"2.5.1svn1009";
  17. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  18. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  19. }
  20. - (void) testSVNVersionEqualToSVNVersion {
  21. NSString *string = @"1.0svn1000";
  22. STAssertEquals(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  31. STAssertEquals(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  36. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  37. }
  38. - (void) testDevelopmentVersionEqualToDevelopmentVersion {
  39. NSString *string = @"1.0d10";
  40. STAssertEquals(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  49. STAssertEquals(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  54. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  55. }
  56. - (void) testAlphaEqualToAlpha {
  57. NSString *string = @"1.0a10";
  58. STAssertEquals(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  67. STAssertEquals(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  72. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  73. }
  74. - (void) testBetaEqualToBeta {
  75. NSString *string = @"1.0b10";
  76. STAssertEquals(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(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(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  85. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  86. olderString = @"1.0";
  87. newerString = @"2.5.1";
  88. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Older (%@) must be less than newer (%@)", olderString, newerString);
  89. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Newer (%@) must be greater than older (%@)", newerString, olderString);
  90. }
  91. - (void) testReleaseEqualToRelease {
  92. NSString *string = @"1.0";
  93. STAssertEquals(compareVersionStringsTranslating1_0To0_5(string, string), (CFComparisonResult)kCFCompareEqualTo, @"Version string (%@) must be equal to itself", string);
  94. //Version-equal, but not string-equal.
  95. //Only "1.0" gets translated to 0.5. Other ways of expressing 1.0 remain verbatim.
  96. NSString *stringA = @"01.00.0";
  97. NSString *stringB = @"1.0";
  98. STAssertFalse(compareVersionStringsTranslating1_0To0_5(stringA, stringB) == kCFCompareEqualTo, @"Version from string %@ must be in equal to (translated 0.5) version from string %@", stringA, stringB);
  99. }
  100. #pragma mark -
  101. - (void) testReleaseNewerThanBeta {
  102. NSString *olderString = @"2.0b5", *newerString = @"2.0";
  103. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Beta (%@) must be less than release (%@)", olderString, newerString);
  104. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than beta (%@)", newerString, olderString);
  105. //Inverse: Make sure an earlier beta of a later release compares as newer.
  106. olderString = newerString;
  107. newerString = @"3.0b2";
  108. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Beta (%@) must be less than release (%@)", olderString, newerString);
  109. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than beta (%@)", newerString, olderString);
  110. }
  111. - (void) testReleaseNewerThanAlpha {
  112. NSString *olderString = @"2.0a5", *newerString = @"2.0";
  113. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Alpha (%@) must be less than release (%@)", olderString, newerString);
  114. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than alpha (%@)", newerString, olderString);
  115. //Inverse: Make sure an earlier alpha of a later release compares as newer.
  116. olderString = newerString;
  117. newerString = @"3.0a2";
  118. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Beta (%@) must be less than release (%@)", olderString, newerString);
  119. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than beta (%@)", newerString, olderString);
  120. }
  121. - (void) testReleaseNewerThanDevelopmentVersion {
  122. NSString *olderString = @"2.0d5", *newerString = @"2.0";
  123. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than release (%@)", olderString, newerString);
  124. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than development version (%@)", newerString, olderString);
  125. //Inverse: Make sure an earlier development version of a later release compares as newer.
  126. olderString = newerString;
  127. newerString = @"3.0d2";
  128. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than release (%@)", olderString, newerString);
  129. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than development version (%@)", newerString, olderString);
  130. }
  131. - (void) testReleaseNewerThanSVNVersion {
  132. NSString *olderString = @"2.0svn500", *newerString = @"2.0";
  133. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than release (%@)", olderString, newerString);
  134. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than SVN version (%@)", newerString, olderString);
  135. //Inverse: Make sure an earlier SVN version of a later release compares as newer.
  136. //(This can happen in the case of reviving a maintenance branch for an emergency fix.)
  137. olderString = newerString;
  138. newerString = @"3.0svn200";
  139. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than release (%@)", olderString, newerString);
  140. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than SVN version (%@)", newerString, olderString);
  141. }
  142. - (void) testBetaNewerThanAlpha {
  143. NSString *olderString = @"1.0a5", *newerString = @"1.0b4";
  144. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Alpha (%@) must be less than beta (%@)", olderString, newerString);
  145. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than alpha (%@)", newerString, olderString);
  146. //Inverse: Make sure an earlier alpha of a later release compares as newer.
  147. olderString = newerString;
  148. newerString = @"2.0a2";
  149. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Alpha (%@) must be less than beta (%@)", olderString, newerString);
  150. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than alpha (%@)", newerString, olderString);
  151. }
  152. - (void) testBetaNewerThanDevelopmentVersion {
  153. NSString *olderString = @"1.0d5", *newerString = @"1.0b4";
  154. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than beta (%@)", olderString, newerString);
  155. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than development version (%@)", newerString, olderString);
  156. //Inverse: Make sure an earlier development version of a later release compares as newer.
  157. olderString = newerString;
  158. newerString = @"2.0d2";
  159. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than beta (%@)", olderString, newerString);
  160. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than development version (%@)", newerString, olderString);
  161. }
  162. - (void) testBetaNewerThanSVNVersion {
  163. NSString *olderString = @"1.0svn500", *newerString = @"1.0b4";
  164. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than beta (%@)", olderString, newerString);
  165. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than SVN version (%@)", newerString, olderString);
  166. //Inverse: Make sure an earlier SVN version of a later release compares as newer.
  167. //(This can happen in the case of reviving a maintenance branch for an emergency fix.)
  168. olderString = newerString;
  169. newerString = @"2.0svn200";
  170. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than beta (%@)", olderString, newerString);
  171. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Beta (%@) must be greater than SVN version (%@)", newerString, olderString);
  172. }
  173. - (void) testAlphaNewerThanDevelopmentVersion {
  174. NSString *olderString = @"1.0d5", *newerString = @"1.0a4";
  175. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than alpha (%@)", olderString, newerString);
  176. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Alpha (%@) must be greater than development version (%@)", newerString, olderString);
  177. //Inverse: Make sure an earlier development version of a later release compares as newer.
  178. olderString = newerString;
  179. newerString = @"2.0d2";
  180. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Development version (%@) must be less than alpha (%@)", olderString, newerString);
  181. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Alpha (%@) must be greater than development version (%@)", newerString, olderString);
  182. }
  183. - (void) testAlphaNewerThanSVNVersion {
  184. NSString *olderString = @"1.0svn500", *newerString = @"1.0a4";
  185. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than alpha (%@)", olderString, newerString);
  186. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Alpha (%@) must be greater than SVN version (%@)", newerString, olderString);
  187. //Inverse: Make sure an earlier SVN version of a later release compares as newer.
  188. //(This can happen in the case of reviving a maintenance branch for an emergency fix.)
  189. olderString = newerString;
  190. newerString = @"2.0svn200";
  191. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than alpha (%@)", olderString, newerString);
  192. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Alpha (%@) must be greater than SVN version (%@)", newerString, olderString);
  193. }
  194. - (void) testDevelopmentVersionNewerThanSVNVersion {
  195. NSString *olderString = @"1.0svn500", *newerString = @"1.0d4";
  196. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than development version (%@)", olderString, newerString);
  197. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Development version (%@) must be greater than SVN version (%@)", newerString, olderString);
  198. //Inverse: Make sure an earlier SVN version of a later release compares as newer.
  199. //(This can happen in the case of reviving a maintenance branch for an emergency fix.)
  200. olderString = newerString;
  201. newerString = @"2.0svn200";
  202. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"SVN version (%@) must be less than Development version (%@)", olderString, newerString);
  203. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Release (%@) must be greater than SVN version (%@)", newerString, olderString);
  204. }
  205. #pragma mark Testing 1.0-to-0.5 conversion
  206. - (void) test1_0EqualTo0_5 {
  207. NSString *stringA = @"1.0", *stringB = @"0.5";
  208. STAssertEquals(compareVersionStringsTranslating1_0To0_5(stringA, stringB), (CFComparisonResult)kCFCompareEqualTo, @"Untranslated version number (%@) must be equal to translated 0.5 (%@)", stringA, stringB);
  209. STAssertEquals(compareVersionStringsTranslating1_0To0_5(stringB, stringA), (CFComparisonResult)kCFCompareEqualTo, @"Translated 0.5 (%@) must be equal to untranslated version number (%@)", stringB, stringA);
  210. }
  211. - (void) test1_0NewerThan0_6 {
  212. NSString *olderString = @"1.0", *newerString = @"0.6";
  213. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Translated 0.5 (%@) must be greater than untranslated version number (%@)", olderString, newerString);
  214. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Untranslated version number (%@) must be less than translated 0.5 (%@)", newerString, olderString);
  215. }
  216. - (void) test1_0OlderThan0_4 {
  217. NSString *olderString = @"0.4", *newerString = @"1.0";
  218. STAssertEquals(compareVersionStringsTranslating1_0To0_5(olderString, newerString), (CFComparisonResult)kCFCompareLessThan, @"Untranslated version number (%@) must be less than translated 0.5 (%@)", olderString, newerString);
  219. STAssertEquals(compareVersionStringsTranslating1_0To0_5(newerString, olderString), (CFComparisonResult)kCFCompareGreaterThan, @"Translated 0.5 (%@) must be greater than untranslated version number (%@)", newerString, olderString);
  220. }
  221. @end