go-httpaccept/httpaccept_parse_test.go

165 lines
5.1 KiB
Go

package httpaccept_test
import (
"sourcecode.social/reiver/go-httpaccept"
"sourcecode.social/reiver/go-httpaccept/mediarange"
"reflect"
"testing"
)
func TestParse(t *testing.T) {
tests := []struct{
Values []string
Expected httpaccept.HTTPAccept
}{
{
Values: nil,
Expected: httpaccept.Create(),
},
{
Values: []string(nil),
Expected: httpaccept.Create(),
},
{
Values: []string{},
Expected: httpaccept.Create(),
},
{
Values: []string{"*/*"},
Expected: httpaccept.Create(mediarange.Create("*","*")),
},
{
Values: []string{"text/html"},
Expected: httpaccept.Create(mediarange.Create("text","html")),
},
{
Values: []string{"tEXt/HtmL"},
Expected: httpaccept.Create(mediarange.Create("text","html")),
},
{
Values: []string{"Text/html"},
Expected: httpaccept.Create(mediarange.Create("text","html")),
},
{
Values: []string{"TEXT/html"},
Expected: httpaccept.Create(mediarange.Create("text","html")),
},
{
Values: []string{"text/Html"},
Expected: httpaccept.Create(mediarange.Create("text","html")),
},
{
Values: []string{"text/HTML"},
Expected: httpaccept.Create(mediarange.Create("text","html")),
},
{
Values: []string{"TEXT/HTML"},
Expected: httpaccept.Create(mediarange.Create("text","html")),
},
{
Values: []string{"text/html,application/xhtml+xml"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml")),
},
{
Values: []string{"tEXt/HtmL, APPlication/xhtml+xml"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml")),
},
{
Values: []string{"Text/html , APPLICATION/xhtml+xml"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml")),
},
{
Values: []string{"TEXT/html ,appLICATION/xhtml+XML"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml")),
},
{
Values: []string{"text/Html , application/xhtml+xml"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml")),
},
{
Values: []string{"text/HTML, application/XHTML+xml"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml")),
},
{
Values: []string{"TEXT/HTML,APPLICATION/XHTML+XML"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml")),
},
{
Values: []string{"text/html,application/xhtml+xml", "*/*"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml"),mediarange.Create("*","*")),
},
{
Values: []string{"tEXt/HtmL, APPlication/xhtml+xml", "*/*"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml"),mediarange.Create("*","*")),
},
{
Values: []string{"Text/html , APPLICATION/xhtml+xml", "*/*"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml"),mediarange.Create("*","*")),
},
{
Values: []string{"TEXT/html ,appLICATION/xhtml+XML", "*/*"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml"),mediarange.Create("*","*")),
},
{
Values: []string{"text/Html , application/xhtml+xml", "*/*"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml"),mediarange.Create("*","*")),
},
{
Values: []string{"text/HTML, application/XHTML+xml", "*/*"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml"),mediarange.Create("*","*")),
},
{
Values: []string{"TEXT/HTML,APPLICATION/XHTML+XML", "*/*"},
Expected: httpaccept.Create(mediarange.Create("text","html"),mediarange.Create("application","xhtml+xml"),mediarange.Create("*","*")),
},
{
Values: []string{"application/activity+json", "application/json"},
Expected: httpaccept.Create(mediarange.Create("application","activity+json"),mediarange.Create("application","json")),
},
{
Values: []string{"application/activity+json", "application/json", "application/*"},
Expected: httpaccept.Create(mediarange.Create("application","activity+json"),mediarange.Create("application","json"),mediarange.Create("application","*")),
},
}
for testNumber, test := range tests {
actual, err := httpaccept.Parse(test.Values...)
if nil != err {
t.Errorf("For test #%d, did not expect an error but actually got one.", testNumber)
t.Logf("VALUES: %#v", test.Values)
t.Logf("EXPECTED: %q %#v", test.Expected, test.Expected)
t.Logf("ERROR: (%T) %s", err, err)
continue
}
expected := test.Expected
if !reflect.DeepEqual(expected, actual) {
t.Errorf("For test #%d, the actual resulting HTTP Accept is not what was expected.", testNumber)
t.Logf("VALUES: %#v", test.Values)
t.Logf("EXPECTED: %q %#v", expected, expected)
t.Logf("ACTUAL: %q %#v", actual, actual)
continue
}
}
}