/Unit tests/TestVersionParsing.m

https://github.com/mutru/growl · Objective C · 540 lines · 521 code · 12 blank · 7 comment · 0 complexity · 13d4015ee0b4215a068da479c2d6b507 MD5 · raw file

  1. //
  2. // TestVersionParsing.m
  3. // Growl
  4. //
  5. // Created by Peter Hosey on 2009-10-13.
  6. // Copyright 2009 Peter Hosey. All rights reserved.
  7. //
  8. #import "TestVersionParsing.h"
  9. #import "GrowlVersionUtilities.h"
  10. @implementation TestVersionParsing
  11. #pragma mark Things that should work
  12. - (void) testParseTwoComponentSVNVersion {
  13. struct Version version;
  14. NSString *string = @"1.3svn1400";
  15. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  16. STAssertEquals(
  17. version.major, (u_int16_t)1,
  18. @"Major component was %u, not %u",
  19. version.major, (u_int16_t)1);
  20. STAssertEquals(
  21. version.minor, (u_int16_t)3,
  22. @"Minor component was %u, not %u",
  23. version.minor, (u_int16_t)3);
  24. STAssertEquals(
  25. version.incremental, (u_int8_t)0,
  26. @"Incremental component was %u, not %u",
  27. version.incremental, (u_int8_t)0);
  28. STAssertEquals(
  29. version.releaseType, (u_int8_t)releaseType_svn,
  30. @"Release-type component was %u, not %u",
  31. version.releaseType, (u_int8_t)releaseType_svn);
  32. STAssertEquals(
  33. version.development, (u_int32_t)1400,
  34. @"Development component (SVN revision) was %u, not %u",
  35. version.development, (u_int32_t)1400);
  36. }
  37. - (void) testParseTwoComponentHgVersion {
  38. struct Version version;
  39. NSString *string = @"1.3hg1400";
  40. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  41. STAssertEquals(
  42. version.major, (u_int16_t)1,
  43. @"Major component was %u, not %u",
  44. version.major, (u_int16_t)1);
  45. STAssertEquals(
  46. version.minor, (u_int16_t)3,
  47. @"Minor component was %u, not %u",
  48. version.minor, (u_int16_t)3);
  49. STAssertEquals(
  50. version.incremental, (u_int8_t)0,
  51. @"Incremental component was %u, not %u",
  52. version.incremental, (u_int8_t)0);
  53. STAssertEquals(
  54. version.releaseType, (u_int8_t)releaseType_svn,
  55. @"Release-type component was %u, not %u",
  56. version.releaseType, (u_int8_t)releaseType_svn);
  57. STAssertEquals(
  58. version.development, (u_int32_t)1400,
  59. @"Development component (Hg revision) was %u, not %u",
  60. version.development, (u_int32_t)1400);
  61. }
  62. - (void) testParseTwoComponentDevelopmentVersion {
  63. struct Version version;
  64. NSString *string = @"1.3d1";
  65. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  66. STAssertEquals(
  67. version.major, (u_int16_t)1,
  68. @"Major component was %u, not %u",
  69. version.major, (u_int16_t)1);
  70. STAssertEquals(
  71. version.minor, (u_int16_t)3,
  72. @"Minor component was %u, not %u",
  73. version.minor, (u_int16_t)3);
  74. STAssertEquals(
  75. version.incremental, (u_int8_t)0,
  76. @"Incremental component was %u, not %u",
  77. version.incremental, (u_int8_t)0);
  78. STAssertEquals(
  79. version.releaseType, (u_int8_t)releaseType_development,
  80. @"Release-type component was %u, not %u",
  81. version.releaseType, (u_int8_t)releaseType_development);
  82. STAssertEquals(
  83. version.development, (u_int32_t)1,
  84. @"Development component was %u, not %u",
  85. version.development, (u_int32_t)1);
  86. }
  87. - (void) testParseTwoComponentAlphaVersion {
  88. struct Version version;
  89. NSString *string = @"1.3a1";
  90. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  91. STAssertEquals(
  92. version.major, (u_int16_t)1,
  93. @"Major component was %u, not %u",
  94. version.major, (u_int16_t)1);
  95. STAssertEquals(
  96. version.minor, (u_int16_t)3,
  97. @"Minor component was %u, not %u",
  98. version.minor, (u_int16_t)3);
  99. STAssertEquals(
  100. version.incremental, (u_int8_t)0,
  101. @"Incremental component was %u, not %u",
  102. version.incremental, (u_int8_t)0);
  103. STAssertEquals(
  104. version.releaseType, (u_int8_t)releaseType_alpha,
  105. @"Release-type component was %u, not %u",
  106. version.releaseType, (u_int8_t)releaseType_alpha);
  107. STAssertEquals(
  108. version.development, (u_int32_t)1,
  109. @"Development component was %u, not %u",
  110. version.development, (u_int32_t)1);
  111. }
  112. - (void) testParseTwoComponentBetaVersion {
  113. struct Version version;
  114. NSString *string = @"1.3b1";
  115. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  116. STAssertEquals(
  117. version.major, (u_int16_t)1,
  118. @"Major component was %u, not %u",
  119. version.major, (u_int16_t)1);
  120. STAssertEquals(
  121. version.minor, (u_int16_t)3,
  122. @"Minor component was %u, not %u",
  123. version.minor, (u_int16_t)3);
  124. STAssertEquals(
  125. version.incremental, (u_int8_t)0,
  126. @"Incremental component was %u, not %u",
  127. version.incremental, (u_int8_t)0);
  128. STAssertEquals(
  129. version.releaseType, (u_int8_t)releaseType_beta,
  130. @"Release-type component was %u, not %u",
  131. version.releaseType, (u_int8_t)releaseType_beta);
  132. STAssertEquals(
  133. version.development, (u_int32_t)1,
  134. @"Development component was %u, not %u",
  135. version.development, (u_int32_t)1);
  136. }
  137. - (void) testParseTwoComponentReleaseVersion {
  138. struct Version version;
  139. NSString *string = @"1.3";
  140. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  141. STAssertEquals(
  142. version.major, (u_int16_t)1,
  143. @"Major component was %u, not %u",
  144. version.major, (u_int16_t)1);
  145. STAssertEquals(
  146. version.minor, (u_int16_t)3,
  147. @"Minor component was %u, not %u",
  148. version.minor, (u_int16_t)3);
  149. STAssertEquals(
  150. version.incremental, (u_int8_t)0,
  151. @"Incremental component was %u, not %u",
  152. version.incremental, (u_int8_t)0);
  153. STAssertEquals(
  154. version.releaseType, (u_int8_t)releaseType_release,
  155. @"Release-type component was %u, not %u",
  156. version.releaseType, (u_int8_t)releaseType_alpha);
  157. STAssertEquals(
  158. version.development, (u_int32_t)0,
  159. @"Development component was %u, not %u",
  160. version.development, (u_int32_t)0);
  161. }
  162. - (void) testParseThreeComponentSVNVersion {
  163. struct Version version;
  164. NSString *string = @"1.3.4svn1400";
  165. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  166. STAssertEquals(
  167. version.major, (u_int16_t)1,
  168. @"Major component was %u, not %u",
  169. version.major, (u_int16_t)1);
  170. STAssertEquals(
  171. version.minor, (u_int16_t)3,
  172. @"Minor component was %u, not %u",
  173. version.minor, (u_int16_t)3);
  174. STAssertEquals(
  175. version.incremental, (u_int8_t)4,
  176. @"Incremental component was %u, not %u",
  177. version.incremental, (u_int8_t)4);
  178. STAssertEquals(
  179. version.releaseType, (u_int8_t)releaseType_svn,
  180. @"Release-type component was %u, not %u",
  181. version.releaseType, (u_int8_t)releaseType_svn);
  182. STAssertEquals(
  183. version.development, (u_int32_t)1400,
  184. @"Development component (SVN revision) was %u, not %u",
  185. version.development, (u_int32_t)1400);
  186. }
  187. - (void) testParseThreeComponentHgVersion {
  188. struct Version version;
  189. NSString *string = @"1.3.4hg1400";
  190. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  191. STAssertEquals(
  192. version.major, (u_int16_t)1,
  193. @"Major component was %u, not %u",
  194. version.major, (u_int16_t)1);
  195. STAssertEquals(
  196. version.minor, (u_int16_t)3,
  197. @"Minor component was %u, not %u",
  198. version.minor, (u_int16_t)3);
  199. STAssertEquals(
  200. version.incremental, (u_int8_t)4,
  201. @"Incremental component was %u, not %u",
  202. version.incremental, (u_int8_t)4);
  203. STAssertEquals(
  204. version.releaseType, (u_int8_t)releaseType_svn,
  205. @"Release-type component was %u, not %u",
  206. version.releaseType, (u_int8_t)releaseType_svn);
  207. STAssertEquals(
  208. version.development, (u_int32_t)1400,
  209. @"Development component (Hg revision) was %u, not %u",
  210. version.development, (u_int32_t)1400);
  211. }
  212. - (void) testParseThreeComponentDevelopmentVersion {
  213. struct Version version;
  214. NSString *string = @"1.3.4d1";
  215. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  216. STAssertEquals(
  217. version.major, (u_int16_t)1,
  218. @"Major component was %u, not %u",
  219. version.major, (u_int16_t)1);
  220. STAssertEquals(
  221. version.minor, (u_int16_t)3,
  222. @"Minor component was %u, not %u",
  223. version.minor, (u_int16_t)3);
  224. STAssertEquals(
  225. version.incremental, (u_int8_t)4,
  226. @"Incremental component was %u, not %u",
  227. version.incremental, (u_int8_t)4);
  228. STAssertEquals(
  229. version.releaseType, (u_int8_t)releaseType_development,
  230. @"Release-type component was %u, not %u",
  231. version.releaseType, (u_int8_t)releaseType_development);
  232. STAssertEquals(
  233. version.development, (u_int32_t)1,
  234. @"Development component was %u, not %u",
  235. version.development, (u_int32_t)1);
  236. }
  237. - (void) testParseThreeComponentAlphaVersion {
  238. struct Version version;
  239. NSString *string = @"1.3.4a1";
  240. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  241. STAssertEquals(
  242. version.major, (u_int16_t)1,
  243. @"Major component was %u, not %u",
  244. version.major, (u_int16_t)1);
  245. STAssertEquals(
  246. version.minor, (u_int16_t)3,
  247. @"Minor component was %u, not %u",
  248. version.minor, (u_int16_t)3);
  249. STAssertEquals(
  250. version.incremental, (u_int8_t)4,
  251. @"Incremental component was %u, not %u",
  252. version.incremental, (u_int8_t)4);
  253. STAssertEquals(
  254. version.releaseType, (u_int8_t)releaseType_alpha,
  255. @"Release-type component was %u, not %u",
  256. version.releaseType, (u_int8_t)releaseType_alpha);
  257. STAssertEquals(
  258. version.development, (u_int32_t)1,
  259. @"Development component was %u, not %u",
  260. version.development, (u_int32_t)1);
  261. }
  262. - (void) testParseThreeComponentBetaVersion {
  263. struct Version version;
  264. NSString *string = @"1.3.4b1";
  265. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  266. STAssertEquals(
  267. version.major, (u_int16_t)1,
  268. @"Major component was %u, not %u",
  269. version.major, (u_int16_t)1);
  270. STAssertEquals(
  271. version.minor, (u_int16_t)3,
  272. @"Minor component was %u, not %u",
  273. version.minor, (u_int16_t)3);
  274. STAssertEquals(
  275. version.incremental, (u_int8_t)4,
  276. @"Incremental component was %u, not %u",
  277. version.incremental, (u_int8_t)4);
  278. STAssertEquals(
  279. version.releaseType, (u_int8_t)releaseType_beta,
  280. @"Release-type component was %u, not %u",
  281. version.releaseType, (u_int8_t)releaseType_beta);
  282. STAssertEquals(
  283. version.development, (u_int32_t)1,
  284. @"Development component was %u, not %u",
  285. version.development, (u_int32_t)1);
  286. }
  287. - (void) testParseThreeComponentReleaseVersion {
  288. struct Version version;
  289. NSString *string = @"1.3.4";
  290. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  291. STAssertEquals(
  292. version.major, (u_int16_t)1,
  293. @"Major component was %u, not %u",
  294. version.major, (u_int16_t)1);
  295. STAssertEquals(
  296. version.minor, (u_int16_t)3,
  297. @"Minor component was %u, not %u",
  298. version.minor, (u_int16_t)3);
  299. STAssertEquals(
  300. version.incremental, (u_int8_t)4,
  301. @"Incremental component was %u, not %u",
  302. version.incremental, (u_int8_t)4);
  303. STAssertEquals(
  304. version.releaseType, (u_int8_t)releaseType_release,
  305. @"Release-type component was %u, not %u",
  306. version.releaseType, (u_int8_t)releaseType_alpha);
  307. STAssertEquals(
  308. version.development, (u_int32_t)0,
  309. @"Development component was %u, not %u",
  310. version.development, (u_int32_t)0);
  311. }
  312. #pragma mark Things that should not work
  313. - (void) testParseNil {
  314. struct Version version;
  315. NSString *string = nil;
  316. STAssertFalse(parseVersionString(string, &version), @"Successfully parsed nil");
  317. }
  318. - (void) testParseWord {
  319. struct Version version;
  320. NSString *string = @"atychiphobia";
  321. STAssertFalse(parseVersionString(string, &version), @"Successfully parsed a word (%@); output version was %@", string, [NSMakeCollectable(createVersionDescription(version)) autorelease]);
  322. }
  323. - (void) testParseWordFollowedByReleaseVersion {
  324. struct Version version;
  325. NSString *string = @"Final 1.3";
  326. STAssertFalse(parseVersionString(string, &version), @"Successfully parsed a word followed by a version (%@) - this should have failed. Output version was %@", string, [NSMakeCollectable(createVersionDescription(version)) autorelease]);
  327. }
  328. - (void) testParseReleaseVersionFollowedByWord {
  329. struct Version version;
  330. NSString *string = @"1.3 final";
  331. STAssertFalse(parseVersionString(string, &version), @"Successfully parsed a version followed by a word (%@) - this should have failed. Output version was %@", string, [NSMakeCollectable(createVersionDescription(version)) autorelease]);
  332. }
  333. - (void) testParseVersionStringPrefixedBySpaces {
  334. struct Version version;
  335. NSString *string = @" 1.3.2b5";
  336. STAssertTrue(parseVersionString(string, &version), @"Could not parse a version string preceded by spaces");
  337. }
  338. - (void) testParseVersionStringPrefixedByLineFeed {
  339. struct Version version;
  340. NSString *string = @"\n1.3.2b5";
  341. STAssertTrue(parseVersionString(string, &version), @"Could not parse a version string preceded by a line feed");
  342. }
  343. - (void) testParseVersionStringSuffixedBySpaces {
  344. struct Version version;
  345. NSString *string = @"1.3.2b5 ";
  346. STAssertTrue(parseVersionString(string, &version), @"Could not parse a version string followed by spaces");
  347. }
  348. - (void) testParseVersionStringSuffixedByLineFeed {
  349. struct Version version;
  350. NSString *string = @"1.3.2b5\n";
  351. STAssertTrue(parseVersionString(string, &version), @"Could not parse a version string followed by a line feed");
  352. }
  353. - (void) testParseTwoComponentSVNVersionWithSpacesAroundReleaseType {
  354. struct Version version;
  355. NSString *string = @"1.3 svn 1400";
  356. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  357. STAssertEquals(
  358. version.major, (u_int16_t)1,
  359. @"Major component was %u, not %u",
  360. version.major, (u_int16_t)1);
  361. STAssertEquals(
  362. version.minor, (u_int16_t)3,
  363. @"Minor component was %u, not %u",
  364. version.minor, (u_int16_t)3);
  365. STAssertEquals(
  366. version.incremental, (u_int8_t)0,
  367. @"Incremental component was %u, not %u",
  368. version.incremental, (u_int8_t)0);
  369. STAssertEquals(
  370. version.releaseType, (u_int8_t)releaseType_svn,
  371. @"Release-type component was %u, not %u",
  372. version.releaseType, (u_int8_t)releaseType_svn);
  373. STAssertEquals(
  374. version.development, (u_int32_t)1400,
  375. @"Development component (SVN revision) was %u, not %u",
  376. version.development, (u_int32_t)1400);
  377. }
  378. - (void) testParseTwoComponentSVNVersionWithSmallLetterRBeforeRevisionNumber{
  379. struct Version version;
  380. NSString *string = @"1.3svnr1400";
  381. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  382. STAssertEquals(
  383. version.major, (u_int16_t)1,
  384. @"Major component was %u, not %u",
  385. version.major, (u_int16_t)1);
  386. STAssertEquals(
  387. version.minor, (u_int16_t)3,
  388. @"Minor component was %u, not %u",
  389. version.minor, (u_int16_t)3);
  390. STAssertEquals(
  391. version.incremental, (u_int8_t)0,
  392. @"Incremental component was %u, not %u",
  393. version.incremental, (u_int8_t)0);
  394. STAssertEquals(
  395. version.releaseType, (u_int8_t)releaseType_svn,
  396. @"Release-type component was %u, not %u",
  397. version.releaseType, (u_int8_t)releaseType_svn);
  398. STAssertEquals(
  399. version.development, (u_int32_t)1400,
  400. @"Development component (SVN revision) was %u, not %u",
  401. version.development, (u_int32_t)1400);
  402. }
  403. - (void) testParseTwoComponentSVNVersionWithSpacesAroundReleaseTypeAndSmallLetterRBeforeRevisionNumber {
  404. struct Version version;
  405. NSString *string = @"1.3 svn r1400";
  406. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  407. STAssertEquals(
  408. version.major, (u_int16_t)1,
  409. @"Major component was %u, not %u",
  410. version.major, (u_int16_t)1);
  411. STAssertEquals(
  412. version.minor, (u_int16_t)3,
  413. @"Minor component was %u, not %u",
  414. version.minor, (u_int16_t)3);
  415. STAssertEquals(
  416. version.incremental, (u_int8_t)0,
  417. @"Incremental component was %u, not %u",
  418. version.incremental, (u_int8_t)0);
  419. STAssertEquals(
  420. version.releaseType, (u_int8_t)releaseType_svn,
  421. @"Release-type component was %u, not %u",
  422. version.releaseType, (u_int8_t)releaseType_svn);
  423. STAssertEquals(
  424. version.development, (u_int32_t)1400,
  425. @"Development component (SVN revision) was %u, not %u",
  426. version.development, (u_int32_t)1400);
  427. }
  428. - (void) testParseSVNVersionWithNoRevisionNumber {
  429. struct Version version;
  430. NSString *string = @"1.3svn";
  431. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  432. STAssertEquals(
  433. version.major, (u_int16_t)1,
  434. @"Major component was %u, not %u",
  435. version.major, (u_int16_t)1);
  436. STAssertEquals(
  437. version.minor, (u_int16_t)3,
  438. @"Minor component was %u, not %u",
  439. version.minor, (u_int16_t)3);
  440. STAssertEquals(
  441. version.incremental, (u_int8_t)0,
  442. @"Incremental component was %u, not %u",
  443. version.incremental, (u_int8_t)0);
  444. STAssertEquals(
  445. version.releaseType, (u_int8_t)releaseType_svn,
  446. @"Release-type component was %u, not %u",
  447. version.releaseType, (u_int8_t)releaseType_svn);
  448. STAssertEquals(
  449. version.development, (u_int32_t)0,
  450. @"Development component (SVN revision) was %u, not %u",
  451. version.development, (u_int32_t)0);
  452. }
  453. - (void) testParseDevelopmentVersionWithNoDevelopmentVersionNumber {
  454. struct Version version;
  455. NSString *string = @"1.3d";
  456. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  457. STAssertEquals(
  458. version.major, (u_int16_t)1,
  459. @"Major component was %u, not %u",
  460. version.major, (u_int16_t)1);
  461. STAssertEquals(
  462. version.minor, (u_int16_t)3,
  463. @"Minor component was %u, not %u",
  464. version.minor, (u_int16_t)3);
  465. STAssertEquals(
  466. version.incremental, (u_int8_t)0,
  467. @"Incremental component was %u, not %u",
  468. version.incremental, (u_int8_t)0);
  469. STAssertEquals(
  470. version.releaseType, (u_int8_t)releaseType_development,
  471. @"Release-type component was %u, not %u",
  472. version.releaseType, (u_int8_t)releaseType_development);
  473. STAssertEquals(
  474. version.development, (u_int32_t)1,
  475. @"Development component (SVN revision) was %u, not %u",
  476. version.development, (u_int32_t)1);
  477. }
  478. - (void) testParseAlphaVersionWithNoDevelopmentVersionNumber {
  479. struct Version version;
  480. NSString *string = @"1.3a";
  481. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  482. STAssertEquals(
  483. version.major, (u_int16_t)1,
  484. @"Major component was %u, not %u",
  485. version.major, (u_int16_t)1);
  486. STAssertEquals(
  487. version.minor, (u_int16_t)3,
  488. @"Minor component was %u, not %u",
  489. version.minor, (u_int16_t)3);
  490. STAssertEquals(
  491. version.incremental, (u_int8_t)0,
  492. @"Incremental component was %u, not %u",
  493. version.incremental, (u_int8_t)0);
  494. STAssertEquals(
  495. version.releaseType, (u_int8_t)releaseType_alpha,
  496. @"Release-type component was %u, not %u",
  497. version.releaseType, (u_int8_t)releaseType_alpha);
  498. STAssertEquals(
  499. version.development, (u_int32_t)1,
  500. @"Development component (SVN revision) was %u, not %u",
  501. version.development, (u_int32_t)1);
  502. }
  503. - (void) testParseBetaVersionWithNoDevelopmentVersionNumber {
  504. struct Version version;
  505. NSString *string = @"1.3b";
  506. STAssertTrue(parseVersionString(string, &version), @"Parse of %@ failed", string);
  507. STAssertEquals(
  508. version.major, (u_int16_t)1,
  509. @"Major component was %u, not %u",
  510. version.major, (u_int16_t)1);
  511. STAssertEquals(
  512. version.minor, (u_int16_t)3,
  513. @"Minor component was %u, not %u",
  514. version.minor, (u_int16_t)3);
  515. STAssertEquals(
  516. version.incremental, (u_int8_t)0,
  517. @"Incremental component was %u, not %u",
  518. version.incremental, (u_int8_t)0);
  519. STAssertEquals(
  520. version.releaseType, (u_int8_t)releaseType_beta,
  521. @"Release-type component was %u, not %u",
  522. version.releaseType, (u_int8_t)releaseType_beta);
  523. STAssertEquals(
  524. version.development, (u_int32_t)1,
  525. @"Development component (SVN revision) was %u, not %u",
  526. version.development, (u_int32_t)1);
  527. }
  528. @end