// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package time_test

import (
	"testing";
	. "time";
)

func TestTicker(t *testing.T) {
	const (
		Delta	= 100 * 1e6;
		Count	= 10;
	)
	ticker := NewTicker(Delta);
	t0 := Nanoseconds();
	for i := 0; i < Count; i++ {
		<-ticker.C
	}
	ticker.Stop();
	t1 := Nanoseconds();
	ns := t1 - t0;
	target := int64(Delta * Count);
	slop := target * 2 / 10;
	if ns < target-slop || ns > target+slop {
		t.Fatalf("%d ticks of %g ns took %g ns, expected %g", Count, float64(Delta), float64(ns), float64(target))
	}
	// Now test that the ticker stopped
	Sleep(2 * Delta);
	_, received := <-ticker.C;
	if received {
		t.Fatalf("Ticker did not shut down")
	}
}
