2023-08-11 19:08:28 +00:00
|
|
|
package mediarange_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"sourcecode.social/reiver/go-httpaccept/mediarange"
|
|
|
|
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestParse(t *testing.T) {
|
|
|
|
|
|
|
|
tests := []struct{
|
|
|
|
MediaRange string
|
|
|
|
Expected mediarange.MediaRange
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
MediaRange: "*/*",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=0.0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=0.5",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=1",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=1.0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ;q=0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ;q=0.0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ;q=0.5",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ;q=1",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ;q=1.0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MediaRange: "*/*; q=0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*; q=0.0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*; q=0.5",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*; q=1",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*; q=1.0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ; q=0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ; q=0.0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ; q=0.5",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ; q=1",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/* ; q=1.0",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=0;once=1;twice=22;thrice=333;fource=4444",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=0.0;once=1;twice=22;thrice=333;fource=4444",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=0.5;once=1;twice=22;thrice=333;fource=4444",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=1;once=1;twice=22;thrice=333;fource=4444",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "*/*;q=1.0;once=1;twice=22;thrice=333;fource=4444",
|
|
|
|
Expected: mediarange.Create("*", "*"),
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MediaRange: "application/*",
|
|
|
|
Expected: mediarange.Create("application", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "audio/*",
|
|
|
|
Expected: mediarange.Create("audio", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "font/*",
|
|
|
|
Expected: mediarange.Create("font", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "image/*",
|
|
|
|
Expected: mediarange.Create("image", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "text/*",
|
|
|
|
Expected: mediarange.Create("text", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "video/*",
|
|
|
|
Expected: mediarange.Create("video", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "xyz/*",
|
|
|
|
Expected: mediarange.Create("xyz", "*"),
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MediaRange: "Application/*",
|
|
|
|
Expected: mediarange.Create("application", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "audIO/*",
|
|
|
|
Expected: mediarange.Create("audio", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "FonT/*",
|
|
|
|
Expected: mediarange.Create("font", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "IMAGE/*",
|
|
|
|
Expected: mediarange.Create("image", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "tEXT/*",
|
|
|
|
Expected: mediarange.Create("text", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "vIDeo/*",
|
|
|
|
Expected: mediarange.Create("video", "*"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "Xyz/*",
|
|
|
|
Expected: mediarange.Create("xyz", "*"),
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MediaRange: "application/XHTML+XML",
|
|
|
|
Expected: mediarange.Create("application", "xhtml+xml"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "IMAGE/png",
|
|
|
|
Expected: mediarange.Create("image", "png"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "text/html",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "Text/html",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "TexT/html",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "tExt/html",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "teXt/html",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "texT/html",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "text/Html",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "text/hTml",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "text/htMl",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "text/htmL",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "TeXT/HTml",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "TEXT/html",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "text/HTML",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
MediaRange: "TEXT/HTML",
|
|
|
|
Expected: mediarange.Create("text", "html"),
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for testNumber, test := range tests {
|
|
|
|
|
|
|
|
actual, err := mediarange.Parse(test.MediaRange)
|
|
|
|
if nil != err {
|
|
|
|
t.Errorf("For test #%d, did not expect an error but actually got one.", testNumber)
|
|
|
|
t.Logf("MEDIA-RANGE: %q", test.MediaRange)
|
|
|
|
t.Logf("ERROR: (%T) %s", err, err)
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
expected := test.Expected
|
|
|
|
|
|
|
|
if expected != actual {
|
2023-08-11 23:23:51 +00:00
|
|
|
t.Errorf("For test #%d, the actual resulting media-range is not what was expected.", testNumber)
|
2023-08-11 19:08:28 +00:00
|
|
|
t.Logf("MEDIA-RANGE: %q", test.MediaRange)
|
|
|
|
t.Logf("EXPECTED: %q %#v", expected, expected)
|
|
|
|
t.Logf("ACTUAL: %q %#v", actual, actual)
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|