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