blob: d375e779c9061697d52eae522c85599af68f9e9d [file] [log] [blame]
package gps
import "testing"
func TestVersionSorts(t *testing.T) {
rev := Revision("flooboofoobooo")
v1 := NewBranch("master").Is(rev)
v2 := NewBranch("test").Is(rev)
v3 := NewVersion("1.0.0").Is(rev)
v4 := NewVersion("1.0.1")
v5 := NewVersion("v2.0.5")
v6 := NewVersion("2.0.5.2")
v7 := newDefaultBranch("unwrapped")
v8 := NewVersion("20.0.5.2")
start := []Version{
v1,
v2,
v3,
v4,
v5,
v6,
v7,
v8,
rev,
}
down := make([]Version, len(start))
copy(down, start)
up := make([]Version, len(start))
copy(up, start)
edown := []Version{
v3, v4, v5, // semvers
v7, v1, v2, // floating/branches
v6, v8, // plain versions
rev, // revs
}
eup := []Version{
v5, v4, v3, // semvers
v7, v1, v2, // floating/branches
v6, v8, // plain versions
rev, // revs
}
SortForUpgrade(up)
var wrong []int
for k, v := range up {
if eup[k] != v {
wrong = append(wrong, k)
t.Errorf("Expected version %s in position %v on upgrade sort, but got %s", eup[k], k, v)
}
}
if len(wrong) > 0 {
// Just helps with readability a bit
t.Errorf("Upgrade sort positions with wrong versions: %v", wrong)
}
SortForDowngrade(down)
wrong = wrong[:0]
for k, v := range down {
if edown[k] != v {
wrong = append(wrong, k)
t.Errorf("Expected version %s in position %v on downgrade sort, but got %s", edown[k], k, v)
}
}
if len(wrong) > 0 {
// Just helps with readability a bit
t.Errorf("Downgrade sort positions with wrong versions: %v", wrong)
}
// Now make sure we sort back the other way correctly...just because
SortForUpgrade(down)
wrong = wrong[:0]
for k, v := range down {
if eup[k] != v {
wrong = append(wrong, k)
t.Errorf("Expected version %s in position %v on down-then-upgrade sort, but got %s", eup[k], k, v)
}
}
if len(wrong) > 0 {
// Just helps with readability a bit
t.Errorf("Down-then-upgrade sort positions with wrong versions: %v", wrong)
}
// Now make sure we sort back the other way correctly...just because
SortForDowngrade(up)
wrong = wrong[:0]
for k, v := range up {
if edown[k] != v {
wrong = append(wrong, k)
t.Errorf("Expected version %s in position %v on up-then-downgrade sort, but got %s", edown[k], k, v)
}
}
if len(wrong) > 0 {
// Just helps with readability a bit
t.Errorf("Up-then-downgrade sort positions with wrong versions: %v", wrong)
}
}