summaryrefslogtreecommitdiff
path: root/chronos/chronos_test.go
blob: 692af148cccb7d5a85dae6a7fd51bf4656a292fa (plain)
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
package chronos

import (
	"testing"
	"time"
)

func mktime(y int, month time.Month, d, h, min int) time.Time {
	return time.Date(y, month, d, h, min, 0, 0, time.Local)
}

func TestChronos(t *testing.T) {
	tbl := []struct {
		start time.Time
		end   time.Time
		unit  TimeUnit
		count uint
		now   time.Time
		want  time.Time
	}{
		{mktime(1991, 4, 30, 0, 0), nilTime, Year, 1, mktime(2013, 8, 26, 13, 37), mktime(2014, 4, 30, 0, 0)},
		{mktime(2013, 1, 1, 0, 0), nilTime, Year, 0, mktime(2013, 8, 26, 13, 37), nilTime},
		{mktime(2013, 1, 1, 0, 0), nilTime, Year, 0, mktime(2012, 1, 1, 0, 0), mktime(2013, 1, 1, 0, 0)},
		{mktime(1900, 12, 24, 12, 34), nilTime, Year, 5, mktime(2013, 8, 26, 13, 37), mktime(2015, 12, 24, 12, 34)},
		{mktime(1900, 12, 24, 12, 34), mktime(2010, 1, 1, 1, 1), Year, 5, mktime(2013, 8, 26, 13, 37), nilTime},
		{mktime(2013, 8, 1, 4, 2), nilTime, Week, 3, mktime(2013, 8, 26, 13, 37), mktime(2013, 9, 12, 4, 2)},
		{mktime(2013, 8, 26, 13, 37), nilTime, Year, 0, mktime(2013, 8, 26, 13, 37), mktime(2013, 8, 26, 13, 37)},
		{mktime(2013, 8, 25, 13, 37), nilTime, Day, 1, mktime(2013, 8, 26, 13, 37), mktime(2013, 8, 26, 13, 37)},
	}

	for i, e := range tbl {
		have := Chronos{e.start, e.end, Frequency{e.unit, e.count}}.NextAfter(e.now)
		if !have.Equal(e.want) {
			t.Errorf("#%d: Want: %s, Have: %s", i, e.want, have)
		}
	}
}