зеркало из https://github.com/golang/build.git
118 строки
2.2 KiB
Go
118 строки
2.2 KiB
Go
// Copyright 2019 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.
|
|
|
|
package main
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
"time"
|
|
|
|
"golang.org/x/build/maintner"
|
|
)
|
|
|
|
func TestNewIntervalFromCL(t *testing.T) {
|
|
var (
|
|
t0 = time.Now()
|
|
t1 = t0.Add(1 * time.Hour)
|
|
)
|
|
testCases := []struct {
|
|
cl *maintner.GerritCL
|
|
start, end int64
|
|
}{
|
|
{
|
|
cl: &maintner.GerritCL{
|
|
Created: t0,
|
|
Status: "new",
|
|
},
|
|
start: t0.Unix(),
|
|
end: math.MaxInt64,
|
|
},
|
|
{
|
|
cl: &maintner.GerritCL{
|
|
Created: t0,
|
|
Status: "merged",
|
|
Metas: []*maintner.GerritMeta{
|
|
{
|
|
Commit: &maintner.GitCommit{
|
|
Msg: "autogenerated:gerrit:merged",
|
|
CommitTime: t1,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
start: t0.Unix(),
|
|
end: t1.Unix(),
|
|
},
|
|
{
|
|
cl: &maintner.GerritCL{
|
|
Created: t0,
|
|
Status: "abandoned",
|
|
Metas: []*maintner.GerritMeta{
|
|
{
|
|
Commit: &maintner.GitCommit{
|
|
Msg: "autogenerated:gerrit:abandon",
|
|
CommitTime: t1,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
start: t0.Unix(),
|
|
end: t1.Unix(),
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
ival := newIntervalFromCL(tc.cl)
|
|
if got, want := ival.start, tc.start; got != want {
|
|
t.Errorf("start: got %d; want %d", got, want)
|
|
}
|
|
if got, want := ival.end, tc.end; got != want {
|
|
t.Errorf("end: got %d; want %d", got, want)
|
|
}
|
|
if got, want := ival.cl, tc.cl; got != want {
|
|
t.Errorf("cl: got %+v; want %+v", got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestIntervalIntersection(t *testing.T) {
|
|
testCases := []struct {
|
|
interval *clInterval
|
|
t0, t1 time.Time
|
|
intersects bool
|
|
}{
|
|
{
|
|
&clInterval{start: 0, end: 5},
|
|
time.Unix(0, 0),
|
|
time.Unix(10, 0),
|
|
true,
|
|
},
|
|
{
|
|
&clInterval{start: 10, end: 20},
|
|
time.Unix(0, 0),
|
|
time.Unix(10, 0),
|
|
true,
|
|
},
|
|
{
|
|
&clInterval{start: 10, end: 20},
|
|
time.Unix(0, 0),
|
|
time.Unix(9, 0),
|
|
false,
|
|
},
|
|
{
|
|
&clInterval{start: 0, end: 5},
|
|
time.Unix(6, 0),
|
|
time.Unix(10, 0),
|
|
false,
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
if got, want := tc.interval.intersects(tc.t0, tc.t1), tc.intersects; got != want {
|
|
t.Errorf("(%v).intersects(%v, %v): got %v; want %v", tc.interval, tc.t0, tc.t1, got, want)
|
|
}
|
|
}
|
|
}
|