-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgemini_test.go
49 lines (45 loc) · 1.89 KB
/
gemini_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main
import (
"errors"
"testing"
)
type ParseMetaResult struct {
mediatype string
params map[string]string
err error
}
func TestParseMeta(t *testing.T) {
var tests = []struct {
meta string
res ParseMetaResult
}{
{"", ParseMetaResult{"text/gemini", map[string]string{"charset": "utf-8"}, nil}},
{"text/gemini;", ParseMetaResult{"text/gemini", make(map[string]string), nil}},
{"text/gemini; lang=en", ParseMetaResult{"text/gemini", map[string]string{"lang": "en"}, nil}},
{"text/gemini; charset=utf-8;", ParseMetaResult{"text/gemini", map[string]string{"charset": "utf-8"}, nil}},
{"text/plain; charset=utf-8;", ParseMetaResult{"text/plain", map[string]string{"charset": "utf-8"}, nil}},
{"text/gemini; lang=es;", ParseMetaResult{"text/gemini", map[string]string{"lang": "es"}, nil}},
{"text/plain; charset=utf-8;lang=ru", ParseMetaResult{"text/plain", map[string]string{"charset": "utf-8", "lang": "ru"}, nil}},
{"foobar", ParseMetaResult{"foobar", make(map[string]string), nil}},
{"foo=;", ParseMetaResult{"", make(map[string]string), errors.New("mime: expected slash after first token")}},
{";", ParseMetaResult{"", make(map[string]string), errors.New("mime: no media type")}},
{"application/octet-stream", ParseMetaResult{"application/octet-stream", make(map[string]string), nil}},
}
for _, test := range tests {
mediatype, params, err := ParseMeta(test.meta)
if mediatype != test.res.mediatype {
t.Errorf("parseMeta(%q) mediatype = %q, want %q", test.meta, mediatype, test.res.mediatype)
}
for k, v := range test.res.params {
if params[k] != v {
t.Errorf("parseMeta(%q) params[%q] = %q, want %q", test.meta, k, params[k], v)
}
}
if err == nil && test.res.err == nil {
continue
}
if (err != nil && test.res.err == nil) || (err.Error() != test.res.err.Error()) {
t.Errorf("parseMeta(%q) err = %q, want %q", test.meta, err, test.res.err)
}
}
}