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