| // 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) | |
| } | |
| } | |
| } |