165 lines
5.1 KiB
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
|
|
}
|
|
}
|
|
}
|