package main import "testing" func TestParseRange(t *testing.T) { cases := []struct { hdr string size, off, length int64 partial, ok bool }{ {"", 100, 0, 100, false, true}, {"bytes=0-9", 100, 0, 10, true, true}, {"bytes=90-", 100, 90, 10, true, true}, {"bytes=-5", 100, 95, 5, true, true}, {"bytes=-500", 100, 0, 100, true, true}, {"bytes=50-1000", 100, 50, 50, true, true}, {"bytes=100-", 100, 0, 0, false, false}, {"bytes=9-3", 100, 0, 0, false, false}, {"bytes=0-1,5-6", 100, 0, 100, false, true}, // multi-range: whole file } for _, c := range cases { off, length, partial, ok := parseRange(c.hdr, c.size) if ok != c.ok || (ok && (off != c.off || length != c.length || partial != c.partial)) { t.Errorf("%q/%d: got %d,%d,%v,%v want %d,%d,%v,%v", c.hdr, c.size, off, length, partial, ok, c.off, c.length, c.partial, c.ok) } } } func TestCleanName(t *testing.T) { for in, want := range map[string]string{ "song.mp3": "song.mp3", "a/b/c.txt": "c.txt", `..\..\x.png`: "x.png", "..": "", "": "", " photo.jpg ": "photo.jpg", } { if got := cleanName(in); got != want { t.Errorf("cleanName(%q) = %q, want %q", in, got, want) } } }