blob: 0d44f8295da235d7951cb5576ec745fba671a06e [file] [log] [blame]
// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build linux || darwin
package queue
import (
"testing"
"time"
)
func TestSchedItemLess(t *testing.T) {
t1 := time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC)
t2 := t1.Add(time.Second)
tests := []struct {
name string
a, b *SchedItem
want bool
}{
{
name: "gomote over reg",
a: &SchedItem{
IsGomote: true,
RequestTime: t2,
},
b: &SchedItem{
RequestTime: t1,
},
want: true,
},
{
name: "gomote over try",
a: &SchedItem{
IsGomote: true,
RequestTime: t2,
},
b: &SchedItem{
IsTry: true,
RequestTime: t1,
},
want: true,
},
{
name: "try over reg",
a: &SchedItem{
IsTry: true,
RequestTime: t2,
},
b: &SchedItem{
RequestTime: t1,
},
want: true,
},
{
name: "try FIFO",
a: &SchedItem{
IsTry: true,
RequestTime: t1,
},
b: &SchedItem{
IsTry: true,
RequestTime: t2,
},
want: true,
},
{
name: "reg LIFO, less",
a: &SchedItem{
CommitTime: t2,
RequestTime: t1, // shouldn't be used
},
b: &SchedItem{
CommitTime: t1,
RequestTime: t2, // shouldn't be used
},
want: true,
},
{
name: "release branch less than master",
a: &SchedItem{
CommitTime: t2,
Branch: "release-branch.go1.19",
},
b: &SchedItem{
CommitTime: t1,
Branch: "master",
},
want: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.a.Less(tt.b)
if got != tt.want {
t.Errorf("got %v; want %v", got, tt.want)
}
if got == tt.b.Less(tt.a) {
t.Errorf("not reflexive")
}
})
}
}