timer/tickprinter_test.go

44 lines
747 B
Go

package main
import (
"io/ioutil"
"os"
"strings"
"testing"
"time"
)
func TestTickPrinter(t *testing.T) {
defer testOut(t)()
name := os.Stdout.Name()
tp := NewTickPrinter(time.Millisecond * 250)
go tp.Start()
time.Sleep(time.Millisecond * 300)
tp.Stop()
b, err := ioutil.ReadFile(name)
if err != nil {
t.Fatal(err)
}
ts, err := time.Parse("15:04:05", strings.TrimSpace(string(b)))
if err != nil {
t.Fatal(err)
}
if (time.Now().Minute()*60+time.Now().Hour())-(ts.Minute()*60+ts.Hour()) > 1 {
t.Fatal(ts)
}
}
func testOut(t *testing.T) func() {
wasOut := os.Stdout
var err error
if os.Stdout, err = ioutil.TempFile(os.TempDir(), "testOut*"); err != nil {
t.Fatal(err)
}
return func() {
os.Stdout = wasOut
}
}