61 lines
1.8 KiB
Go
61 lines
1.8 KiB
Go
package time
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestShrink(t *testing.T) {
|
|
var d Duration
|
|
err := d.UnmarshalText([]byte("1s"))
|
|
if err != nil {
|
|
t.Fatalf("TestShrink: d.UnmarshalText failed!err:=%v", err)
|
|
}
|
|
c := context.Background()
|
|
to, ctx, cancel := d.Shrink(c)
|
|
defer cancel()
|
|
if time.Duration(to) != time.Second {
|
|
t.Fatalf("new timeout must be equal 1 second")
|
|
}
|
|
if deadline, ok := ctx.Deadline(); !ok || time.Until(deadline) > time.Second || time.Until(deadline) < time.Millisecond*500 {
|
|
t.Fatalf("ctx deadline must be less than 1s and greater than 500ms")
|
|
}
|
|
}
|
|
|
|
func TestShrinkWithTimeout(t *testing.T) {
|
|
var d Duration
|
|
err := d.UnmarshalText([]byte("1s"))
|
|
if err != nil {
|
|
t.Fatalf("TestShrink: d.UnmarshalText failed!err:=%v", err)
|
|
}
|
|
c, cancel := context.WithTimeout(context.Background(), time.Second*2)
|
|
defer cancel()
|
|
to, ctx, cancel := d.Shrink(c)
|
|
defer cancel()
|
|
if time.Duration(to) != time.Second {
|
|
t.Fatalf("new timeout must be equal 1 second")
|
|
}
|
|
if deadline, ok := ctx.Deadline(); !ok || time.Until(deadline) > time.Second || time.Until(deadline) < time.Millisecond*500 {
|
|
t.Fatalf("ctx deadline must be less than 1s and greater than 500ms")
|
|
}
|
|
}
|
|
|
|
func TestShrinkWithDeadline(t *testing.T) {
|
|
var d Duration
|
|
err := d.UnmarshalText([]byte("1s"))
|
|
if err != nil {
|
|
t.Fatalf("TestShrink: d.UnmarshalText failed!err:=%v", err)
|
|
}
|
|
c, cancel := context.WithTimeout(context.Background(), time.Millisecond*500)
|
|
defer cancel()
|
|
to, ctx, cancel := d.Shrink(c)
|
|
defer cancel()
|
|
if time.Duration(to) >= time.Millisecond*500 {
|
|
t.Fatalf("new timeout must be less than 500 ms")
|
|
}
|
|
if deadline, ok := ctx.Deadline(); !ok || time.Until(deadline) > time.Millisecond*500 || time.Until(deadline) < time.Millisecond*200 {
|
|
t.Fatalf("ctx deadline must be less than 500ms and greater than 200ms")
|
|
}
|
|
}
|