blob: c15d996d3f386f081f84aca99462d1b42334b14b [file] [log] [blame]
Andrew Bonventre1389a952019-10-07 09:58:01 -04001// Copyright 2019 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package main
6
7import (
8 "math"
9 "testing"
10 "time"
11
12 "golang.org/x/build/maintner"
13)
14
15func TestNewIntervalFromCL(t *testing.T) {
16 var (
17 t0 = time.Now()
18 t1 = t0.Add(1 * time.Hour)
19 )
20 testCases := []struct {
21 cl *maintner.GerritCL
22 start, end int64
23 }{
24 {
25 cl: &maintner.GerritCL{
26 Created: t0,
27 Status: "new",
28 },
29 start: t0.Unix(),
30 end: math.MaxInt64,
31 },
32 {
33 cl: &maintner.GerritCL{
34 Created: t0,
35 Status: "merged",
36 Metas: []*maintner.GerritMeta{
37 {
38 Commit: &maintner.GitCommit{
39 Msg: "autogenerated:gerrit:merged",
40 CommitTime: t1,
41 },
42 },
43 },
44 },
45 start: t0.Unix(),
46 end: t1.Unix(),
47 },
48 {
49 cl: &maintner.GerritCL{
50 Created: t0,
51 Status: "abandoned",
52 Metas: []*maintner.GerritMeta{
53 {
54 Commit: &maintner.GitCommit{
55 Msg: "autogenerated:gerrit:abandon",
56 CommitTime: t1,
57 },
58 },
59 },
60 },
61 start: t0.Unix(),
62 end: t1.Unix(),
63 },
64 }
65
66 for _, tc := range testCases {
67 ival := newIntervalFromCL(tc.cl)
68 if got, want := ival.start, tc.start; got != want {
69 t.Errorf("start: got %d; want %d", got, want)
70 }
71 if got, want := ival.end, tc.end; got != want {
72 t.Errorf("end: got %d; want %d", got, want)
73 }
74 if got, want := ival.cl, tc.cl; got != want {
75 t.Errorf("cl: got %+v; want %+v", got, want)
76 }
77 }
78}
79
80func TestIntervalIntersection(t *testing.T) {
81 testCases := []struct {
82 interval *clInterval
83 t0, t1 time.Time
84 intersects bool
85 }{
86 {
87 &clInterval{start: 0, end: 5},
88 time.Unix(0, 0),
89 time.Unix(10, 0),
90 true,
91 },
92 {
93 &clInterval{start: 10, end: 20},
94 time.Unix(0, 0),
95 time.Unix(10, 0),
96 true,
97 },
98 {
99 &clInterval{start: 10, end: 20},
100 time.Unix(0, 0),
101 time.Unix(9, 0),
102 false,
103 },
104 {
105 &clInterval{start: 0, end: 5},
106 time.Unix(6, 0),
107 time.Unix(10, 0),
108 false,
109 },
110 }
111
112 for _, tc := range testCases {
113 if got, want := tc.interval.intersects(tc.t0, tc.t1), tc.intersects; got != want {
114 t.Errorf("(%v).intersects(%v, %v): got %v; want %v", tc.interval, tc.t0, tc.t1, got, want)
115 }
116 }
117}