-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathdate_test.go
161 lines (157 loc) · 5.23 KB
/
date_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package ledger
import (
"testing"
"time"
)
type boundCase struct {
period Period
start, end time.Time
bounds []time.Time
}
var boundCases = []boundCase{
{
PeriodYear,
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2021, time.March, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.January, 01, 0, 0, 0, 0, time.UTC),
time.Date(2020, time.January, 01, 0, 0, 0, 0, time.UTC),
time.Date(2021, time.January, 01, 0, 0, 0, 0, time.UTC),
time.Date(2022, time.January, 01, 0, 0, 0, 0, time.UTC),
},
},
{
PeriodSemiYear,
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2021, time.September, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.January, 01, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.July, 01, 0, 0, 0, 0, time.UTC),
time.Date(2020, time.January, 01, 0, 0, 0, 0, time.UTC),
time.Date(2020, time.July, 01, 0, 0, 0, 0, time.UTC),
time.Date(2021, time.January, 01, 0, 0, 0, 0, time.UTC),
time.Date(2021, time.July, 01, 0, 0, 0, 0, time.UTC),
time.Date(2022, time.January, 01, 0, 0, 0, 0, time.UTC),
},
},
{
PeriodSemiYear,
time.Date(2019, time.September, 23, 0, 0, 0, 0, time.UTC),
time.Date(2021, time.September, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.July, 01, 0, 0, 0, 0, time.UTC),
time.Date(2020, time.January, 01, 0, 0, 0, 0, time.UTC),
time.Date(2020, time.July, 01, 0, 0, 0, 0, time.UTC),
time.Date(2021, time.January, 01, 0, 0, 0, 0, time.UTC),
time.Date(2021, time.July, 01, 0, 0, 0, 0, time.UTC),
time.Date(2022, time.January, 01, 0, 0, 0, 0, time.UTC),
},
},
{
PeriodDay,
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 28, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 24, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 25, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 26, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 27, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 28, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 29, 0, 0, 0, 0, time.UTC),
},
},
{
PeriodWeek,
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.March, 17, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 24, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 31, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 07, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 14, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 21, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 28, 0, 0, 0, 0, time.UTC),
},
},
{
Period2Week,
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.March, 17, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.March, 31, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 14, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 28, 0, 0, 0, 0, time.UTC),
},
},
{
PeriodMonth,
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.March, 01, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 01, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.May, 01, 0, 0, 0, 0, time.UTC),
},
},
{
Period2Month,
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.March, 01, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.May, 01, 0, 0, 0, 0, time.UTC),
},
},
{
PeriodQuarter,
time.Date(2019, time.April, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.May, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.April, 01, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.July, 01, 0, 0, 0, 0, time.UTC),
},
},
{
PeriodQuarter,
time.Date(2019, time.July, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.August, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.July, 01, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.October, 01, 0, 0, 0, 0, time.UTC),
},
},
{
PeriodQuarter,
time.Date(2019, time.October, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.November, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.October, 01, 0, 0, 0, 0, time.UTC),
time.Date(2020, time.January, 01, 0, 0, 0, 0, time.UTC),
},
},
{
Period("Unknown"),
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 23, 0, 0, 0, 0, time.UTC),
[]time.Time{
time.Date(2019, time.March, 23, 0, 0, 0, 0, time.UTC),
time.Date(2019, time.April, 23, 0, 0, 0, 0, time.UTC),
},
},
}
func TestDateBoundaries(t *testing.T) {
for _, tc := range boundCases {
bounds := getDateBoundaries(tc.period, tc.start, tc.end)
if len(bounds) != len(tc.bounds) {
t.Fatalf("Error(%s): expected `%d` bounds, got `%d` bounds", tc.period, len(tc.bounds), len(bounds))
}
for i, b := range bounds {
if !b.Equal(tc.bounds[i]) {
t.Errorf("Error(%s): expected [%d] = `%s` , got `%s`", tc.period, i, tc.bounds[i].Format(time.RFC3339), b.Format(time.RFC3339))
}
}
}
}