OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [time/] [tick_test.go] - Rev 748

Go to most recent revision | Compare with Previous | Blame | View Log

// 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 * Millisecond
                Count = 10
        )
        ticker := NewTicker(Delta)
        t0 := Now()
        for i := 0; i < Count; i++ {
                <-ticker.C
        }
        ticker.Stop()
        t1 := Now()
        dt := t1.Sub(t0)
        target := Delta * Count
        slop := target * 2 / 10
        if dt < target-slop || dt > target+slop {
                t.Fatalf("%d %s ticks took %s, expected [%s,%s]", Count, Delta, dt, target-slop, target+slop)
        }
        // Now test that the ticker stopped
        Sleep(2 * Delta)
        select {
        case <-ticker.C:
                t.Fatal("Ticker did not shut down")
        default:
                // ok
        }
}

// Test that a bug tearing down a ticker has been fixed.  This routine should not deadlock.
func TestTeardown(t *testing.T) {
        for i := 0; i < 3; i++ {
                ticker := NewTicker(1e8)
                <-ticker.C
                ticker.Stop()
        }
}

func BenchmarkTicker(b *testing.B) {
        ticker := NewTicker(1)
        b.ResetTimer()
        b.StartTimer()
        for i := 0; i < b.N; i++ {
                <-ticker.C
        }
        b.StopTimer()
        ticker.Stop()
}

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.