@@ -503,3 +503,52 @@ func (s *PackageListSuite) TestArchitectures(c *C) {
503503 sort .Strings (archs )
504504 c .Check (archs , DeepEquals , []string {"amd64" , "arm" , "i386" , "s390" })
505505}
506+
507+ func (s * PackageListSuite ) TestFilterLatest (c * C ) {
508+ list := NewPackageList ()
509+
510+ older := packageStanza .Copy ()
511+ older ["Version" ] = "1.0"
512+ olderPkg := NewPackageFromControlFile (older )
513+ _ = list .Add (olderPkg )
514+
515+ newer := packageStanza .Copy ()
516+ newer ["Version" ] = "2.0"
517+ newerPkg := NewPackageFromControlFile (newer )
518+ _ = list .Add (newerPkg )
519+
520+ shared := packageStanza .Copy ()
521+ shared ["Architecture" ] = ArchitectureAll
522+ shared ["Version" ] = "3.0"
523+ shared ["Package" ] = "shared"
524+ sharedPkg := NewPackageFromControlFile (shared )
525+ _ = list .Add (sharedPkg )
526+
527+ filtered , err := list .FilterLatest ()
528+ c .Assert (err , IsNil )
529+ c .Assert (filtered .Len (), Equals , 2 )
530+ c .Check (filtered .Has (newerPkg ), Equals , true )
531+ c .Check (filtered .Has (sharedPkg ), Equals , true )
532+ }
533+
534+ func (s * PackageListSuite ) TestFilterLatestPreservesDuplicatesFlag (c * C ) {
535+ list := NewPackageListWithDuplicates (true , 2 )
536+
537+ _ = list .Add (NewPackageFromControlFile (packageStanza .Copy ()))
538+
539+ another := packageStanza .Copy ()
540+ another ["Version" ] = "7.41-1"
541+ _ = list .Add (NewPackageFromControlFile (another ))
542+
543+ filtered , err := list .FilterLatest ()
544+ c .Assert (err , IsNil )
545+ c .Assert (filtered .duplicatesAllowed , Equals , true )
546+ }
547+
548+ func (s * PackageListSuite ) TestFilterLatestNil (c * C ) {
549+ var list * PackageList
550+
551+ filtered , err := list .FilterLatest ()
552+ c .Assert (err , ErrorMatches , "package list is nil" )
553+ c .Assert (filtered , IsNil )
554+ }
0 commit comments