Files

70 lines
1.6 KiB
Go
Raw Permalink Normal View History

package store
import (
"testing"
"time"
)
func TestAddUpload_AverageOfOne(t *testing.T) {
s := New(nil)
id := DeviceID("device-1")
d := 197331667813 * time.Nanosecond // ~3m17.331667813s
s.AddUpload(id, d)
if got := s.AverageUploadTime(id); got != d {
t.Fatalf("avg = %v, want %v", got, d)
}
}
func TestAddUpload_AverageOfMany(t *testing.T) {
s := New(nil)
id := DeviceID("device-1")
s.AddUpload(id, 100*time.Nanosecond)
s.AddUpload(id, 200*time.Nanosecond)
s.AddUpload(id, 300*time.Nanosecond)
// (100+200+300)/3 = 200
if got := s.AverageUploadTime(id); got != 200*time.Nanosecond {
t.Fatalf("avg = %v, want 200ns", got)
}
}
func TestAverageUploadTime_UnknownDevice(t *testing.T) {
s := New(nil)
if got := s.AverageUploadTime(DeviceID("missing")); got != 0 {
t.Fatalf("avg = %v, want 0", got)
}
}
func TestAverageUploadTime_IsPerDevice(t *testing.T) {
s := New(nil)
a := DeviceID("device-1")
b := DeviceID("device-2")
s.AddUpload(a, 100*time.Nanosecond)
s.AddUpload(a, 300*time.Nanosecond)
s.AddUpload(b, 50*time.Nanosecond)
if got := s.AverageUploadTime(a); got != 200*time.Nanosecond {
t.Fatalf("device-1 avg = %v, want 200ns", got)
}
if got := s.AverageUploadTime(b); got != 50*time.Nanosecond {
t.Fatalf("device-2 avg = %v, want 50ns", got)
}
}
func TestAverageUploadTime_TruncatingDivision(t *testing.T) {
s := New(nil)
id := DeviceID("device-1")
// 10+11 = 21; 21/2 = 10 in integer division
s.AddUpload(id, 10*time.Nanosecond)
s.AddUpload(id, 11*time.Nanosecond)
if got := s.AverageUploadTime(id); got != 10*time.Nanosecond {
t.Fatalf("avg = %v, want 10ns (truncating)", got)
}
}