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 } } }