Browse Source

Sortable slice of versions

Benedikt Lang 11 years ago
parent
commit
7f12584be1
2 changed files with 54 additions and 0 deletions
  1. +24
    -0
      sort.go
  2. +30
    -0
      sort_test.go

+ 24
- 0
sort.go View File

@ -0,0 +1,24 @@
package semver
import (
"sort"
)
type Versions []Version
func (s Versions) Len() int {
return len(s)
}
func (s Versions) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s Versions) Less(i, j int) bool {
return s[i].LT(s[j])
}
// Sort sorts a slice of versions
func Sort(versions []Version) {
sort.Sort(Versions(versions))
}

+ 30
- 0
sort_test.go View File

@ -0,0 +1,30 @@
package semver
import (
"reflect"
"testing"
)
func TestSort(t *testing.T) {
v100, _ := New("1.0.0")
v010, _ := New("0.1.0")
v001, _ := New("0.0.1")
versions := []Version{v010, v100, v001}
Sort(versions)
correct := []Version{v001, v010, v100}
if !reflect.DeepEqual(versions, correct) {
t.Fatalf("Sort returned wrong order: %s", versions)
}
}
func BenchmarkSort(b *testing.B) {
v100, _ := New("1.0.0")
v010, _ := New("0.1.0")
v001, _ := New("0.0.1")
b.ReportAllocs()
b.ResetTimer()
for n := 0; n < b.N; n++ {
Sort([]Version{v010, v100, v001})
}
}

Loading…
Cancel
Save