46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
package limit
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLimiterConvertsMbpsToBytesPerSecond(t *testing.T) {
|
|
limiter := New(80)
|
|
|
|
if !limiter.Enabled() {
|
|
t.Fatal("limiter is disabled, want enabled")
|
|
}
|
|
if limiter.Mbps() != 80 {
|
|
t.Fatalf("Mbps = %.2f, want 80", limiter.Mbps())
|
|
}
|
|
if limiter.BytesPerSecond() != 10_000_000 {
|
|
t.Fatalf("BytesPerSecond = %d, want 10000000", limiter.BytesPerSecond())
|
|
}
|
|
}
|
|
|
|
func TestLimiterCalculatesDelay(t *testing.T) {
|
|
limiter := New(80)
|
|
|
|
delay := limiter.DelayFor(10_000_000, 500*time.Millisecond)
|
|
if delay != 500*time.Millisecond {
|
|
t.Fatalf("DelayFor = %s, want 500ms", delay)
|
|
}
|
|
|
|
noDelay := limiter.DelayFor(10_000_000, time.Second)
|
|
if noDelay != 0 {
|
|
t.Fatalf("DelayFor at expected elapsed = %s, want 0", noDelay)
|
|
}
|
|
}
|
|
|
|
func TestUnlimitedLimiterDoesNotDelay(t *testing.T) {
|
|
limiter := New(0)
|
|
|
|
if limiter.Enabled() {
|
|
t.Fatal("limiter is enabled, want disabled")
|
|
}
|
|
if delay := limiter.DelayFor(10_000_000, 0); delay != 0 {
|
|
t.Fatalf("DelayFor unlimited = %s, want 0", delay)
|
|
}
|
|
}
|