56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
package stats
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_ControlFlow(t *testing.T) {
|
|
assert := assert.New(t)
|
|
s := New()
|
|
|
|
// Everything should be 0 at the beginning
|
|
assert.Equal(true, s.timeStart.IsZero())
|
|
assert.Equal(true, s.timeStop.IsZero())
|
|
assert.Equal(true, s.timePause.IsZero())
|
|
|
|
// Should not do anything
|
|
s.Stop()
|
|
assert.Equal(true, s.timeStop.IsZero())
|
|
|
|
// Should not do anything
|
|
s.Pause()
|
|
assert.Equal(true, s.timePause.IsZero())
|
|
|
|
// Should start
|
|
s.Start()
|
|
originalStart := s.timeStart
|
|
assert.Equal(false, s.timeStart.IsZero())
|
|
|
|
// Should pause
|
|
s.Pause()
|
|
assert.Equal(false, s.timePause.IsZero())
|
|
originalPause := s.timePause
|
|
// Should not modify
|
|
s.Pause()
|
|
assert.Equal(originalPause, s.timePause)
|
|
|
|
// Should release
|
|
assert.Equal(int64(0), s.timePaused.Nanoseconds())
|
|
s.Start()
|
|
assert.NotEqual(0, s.timePaused.Nanoseconds())
|
|
originalPausedDuration := s.timePaused
|
|
assert.Equal(true, s.timePause.IsZero())
|
|
assert.Equal(originalStart, s.timeStart)
|
|
|
|
s.Pause()
|
|
time.Sleep(10 * time.Nanosecond)
|
|
s.Start()
|
|
assert.Equal(true, s.timePaused > originalPausedDuration)
|
|
|
|
s.Stop()
|
|
assert.Equal(false, s.timeStop.IsZero())
|
|
}
|