@@ -252,3 +252,59 @@ impl NewVersion {
252252 Ok ( ( ) )
253253 }
254254}
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