Add Versions.Sort

Sort versions from newest to oldest.
This commit is contained in:
James Bardin 2017-05-31 16:08:56 -04:00 committed by Martin Atkins
parent 032f71f1ff
commit fdeb3d929c
2 changed files with 50 additions and 0 deletions

View File

@ -1,6 +1,8 @@
package discovery
import (
"sort"
version "github.com/hashicorp/go-version"
)
@ -45,3 +47,12 @@ func (v Version) String() string {
func (v Version) NewerThan(other Version) bool {
return v.raw.GreaterThan(other.raw)
}
type Versions []Version
// Sort sorts version from newest to oldest.
func (v Versions) Sort() {
sort.Slice(v, func(i, j int) bool {
return v[i].NewerThan(v[j])
})
}

View File

@ -0,0 +1,39 @@
package discovery
import (
"reflect"
"testing"
)
func TestSortVersions(t *testing.T) {
versions := Versions{
VersionStr("4").MustParse(),
VersionStr("3.1").MustParse(),
VersionStr("1.2").MustParse(),
VersionStr("1.2.3").MustParse(),
VersionStr("2.2.3").MustParse(),
VersionStr("3.2.1").MustParse(),
VersionStr("2.3.2").MustParse(),
}
expected := []string{
"4.0.0",
"3.2.1",
"3.1.0",
"2.3.2",
"2.2.3",
"1.2.3",
"1.2.0",
}
versions.Sort()
var sorted []string
for _, v := range versions {
sorted = append(sorted, v.String())
}
if !reflect.DeepEqual(sorted, expected) {
t.Fatal("versions aren't sorted:", sorted)
}
}