@@ -305,3 +305,59 @@ func TestCompareNumbers(t *testing.T) {
305
305
testGreater ("10" , "1" )
306
306
testGreater ("10" , "2" )
307
307
}
308
+
309
+ func TestVersionGetters (t * testing.T ) {
310
+ type test struct {
311
+ version string
312
+ prerelease string
313
+ build string
314
+ }
315
+ tests := []test {
316
+ {"" , "" , "" },
317
+ {"0" , "" , "" },
318
+ {"1" , "" , "" },
319
+ {"0.1" , "" , "" },
320
+ {"1.1" , "" , "" },
321
+ {"0.2.3" , "" , "" },
322
+ {"1.2.3-aaa" , "aaa" , "" },
323
+ {"0.2-aaa" , "aaa" , "" },
324
+ {"1-aaa" , "aaa" , "" },
325
+ {"0.2.3+bbb" , "" , "bbb" },
326
+ {"1.3+bbb" , "" , "bbb" },
327
+ {"0+bbb" , "" , "bbb" },
328
+ {"1.2.3-aaa+bbb" , "aaa" , "bbb" },
329
+ {"0.2-aaa+bbb" , "aaa" , "bbb" },
330
+ {"1-aaa+bbb" , "aaa" , "bbb" },
331
+ {"0.2.3-aaa.4.5.6+bbb.7.8.9" , "aaa.4.5.6" , "bbb.7.8.9" },
332
+ }
333
+ for _ , tt := range tests {
334
+ v := MustParse (tt .version )
335
+ require .Equal (t , tt .version , v .String ())
336
+ require .Equal (t , tt .prerelease != "" , v .IsPrerelase ())
337
+ require .Equal (t , tt .prerelease , v .Prerelease ())
338
+ require .Equal (t , tt .build != "" , v .HasBuildMetadata ())
339
+ require .Equal (t , tt .build , v .BuildMetadata ())
340
+ r := ParseRelaxed (tt .version )
341
+ require .Equal (t , tt .version , r .String ())
342
+ require .Equal (t , tt .prerelease != "" , r .IsPrerelase ())
343
+ require .Equal (t , tt .prerelease , r .Prerelease ())
344
+ require .Equal (t , tt .build != "" , r .HasBuildMetadata ())
345
+ require .Equal (t , tt .build , r .BuildMetadata ())
346
+ }
347
+ relaxedTests := []test {
348
+ {"asd" , "" , "" },
349
+ {"123.123.123.123-123" , "" , "" },
350
+ {"1.2.3-a@very@fancy@version" , "" , "" },
351
+ }
352
+ for _ , tt := range relaxedTests {
353
+ v , err := Parse (tt .version )
354
+ require .Error (t , err , "should not parse %s" , tt .version )
355
+ require .Nil (t , v )
356
+ r := ParseRelaxed (tt .version )
357
+ require .Equal (t , tt .version , r .String ())
358
+ require .Equal (t , tt .prerelease != "" , r .IsPrerelase ())
359
+ require .Equal (t , tt .prerelease , r .Prerelease ())
360
+ require .Equal (t , tt .build != "" , r .HasBuildMetadata ())
361
+ require .Equal (t , tt .build , r .BuildMetadata ())
362
+ }
363
+ }
0 commit comments