@@ -252,3 +252,59 @@ impl NewVersion {
252
252
Ok ( ( ) )
253
253
}
254
254
}
255
+
256
+ #[ cfg( test) ]
257
+ mod tests {
258
+ use super :: { TopVersions , Version } ;
259
+ use chrono:: NaiveDateTime ;
260
+
261
+ #[ track_caller]
262
+ fn date ( str : & str ) -> NaiveDateTime {
263
+ str. parse ( ) . unwrap ( )
264
+ }
265
+
266
+ #[ track_caller]
267
+ fn version ( str : & str ) -> semver:: Version {
268
+ semver:: Version :: parse ( str) . unwrap ( )
269
+ }
270
+
271
+ #[ test]
272
+ fn top_versions_empty ( ) {
273
+ let versions = vec ! [ ] ;
274
+ assert_eq ! (
275
+ Version :: top( versions) ,
276
+ TopVersions {
277
+ highest: version( "0.0.0" ) ,
278
+ newest: version( "0.0.0" ) ,
279
+ }
280
+ ) ;
281
+ }
282
+
283
+ #[ test]
284
+ fn top_versions_single ( ) {
285
+ let versions = vec ! [ ( date( "2020-12-03T12:34:56" ) , version( "1.0.0" ) ) ] ;
286
+ assert_eq ! (
287
+ Version :: top( versions) ,
288
+ TopVersions {
289
+ highest: version( "1.0.0" ) ,
290
+ newest: version( "1.0.0" ) ,
291
+ }
292
+ ) ;
293
+ }
294
+
295
+ #[ test]
296
+ fn top_versions_multiple ( ) {
297
+ let versions = vec ! [
298
+ ( date( "2018-12-03T12:34:56" ) , version( "1.0.0" ) ) ,
299
+ ( date( "2019-12-03T12:34:56" ) , version( "2.0.0-alpha.1" ) ) ,
300
+ ( date( "2020-12-03T12:34:56" ) , version( "1.1.0" ) ) ,
301
+ ] ;
302
+ assert_eq ! (
303
+ Version :: top( versions) ,
304
+ TopVersions {
305
+ highest: version( "2.0.0-alpha.1" ) ,
306
+ newest: version( "1.1.0" ) ,
307
+ }
308
+ ) ;
309
+ }
310
+ }
0 commit comments