44 lines
747 B
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
|
|
}
|
|
}
|