master
go 53 lines 1.11 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package tickstate
4
5 import (
6 "testing"
7 "time"
8
9 "github.com/stretchr/testify/assert"
10 )
11
12 func TestSkipTrackerScenarios(t *testing.T) {
13 tests := map[string]struct {
14 run func(t *testing.T)
15 }{
16 "skip and resume snapshots are consistent": {
17 run: func(t *testing.T) {
18 var tr SkipTracker
19 start := time.Unix(10, 0)
20 stop := time.Unix(12, 0)
21 next := time.Unix(20, 0)
22
23 s1 := tr.MarkSkipped()
24 assert.Equal(t, 1, s1.Count)
25 assert.True(t, s1.RunStarted.IsZero())
26
27 tr.MarkRunStart(start)
28 tr.MarkRunStop(stop)
29
30 s2 := tr.MarkSkipped()
31 assert.Equal(t, 1, s2.Count)
32 assert.Equal(t, start, s2.RunStarted)
33
34 s3 := tr.MarkSkipped()
35 assert.Equal(t, 2, s3.Count)
36 assert.Equal(t, start, s3.RunStarted)
37
38 resume := tr.MarkRunStart(next)
39 assert.Equal(t, 2, resume.Skipped)
40 assert.Equal(t, start, resume.RunStarted)
41 assert.Equal(t, stop, resume.RunStopped)
42
43 s4 := tr.MarkSkipped()
44 assert.Equal(t, 1, s4.Count)
45 assert.Equal(t, next, s4.RunStarted)
46 },
47 },
48 }
49
50 for name, tc := range tests {
51 t.Run(name, tc.run)
52 }
53 }