hid: port IRC tests from liberty, fix tag parsing

This commit is contained in:
Přemysl Eric Janouch 2018-08-06 12:09:18 +02:00
parent 62418ebb54
commit f32e2f1483
Signed by: p
GPG Key ID: A0420B94F92B9493
2 changed files with 30 additions and 1 deletions

View File

@ -420,7 +420,7 @@ func ircFnmatch(pattern string, s string) bool {
}
var reMsg = regexp.MustCompile(
`^(@[^ ]* +)?(?::([^! ]*)(?:!([^@]*)@([^ ]*))? +)?([^ ]+)(.*)?$`)
`^(?:@([^ ]*) +)?(?::([^! ]*)(?:!([^@]*)@([^ ]*))? +)?([^ ]+)(.*)?$`)
var reArgs = regexp.MustCompile(`:.*| [^: ][^ ]*`)
type message struct {

View File

@ -137,3 +137,32 @@ func TestDetectTLS(t *testing.T) {
}
})
}
func TestIRC(t *testing.T) {
msg := ircParseMessage(
`@first=a\:\s\r\n\\;2nd :srv hi there :good m8 :how are you?`)
if !reflect.DeepEqual(msg.tags, map[string]string{
"first": "a; \r\n\\",
"2nd": "",
}) {
t.Error("tags parsed incorrectly")
}
if msg.nick != "srv" || msg.user != "" || msg.host != "" {
t.Error("server name parsed incorrectly")
}
if msg.command != "hi" {
t.Error("command name parsed incorrectly")
}
if !reflect.DeepEqual(msg.params,
[]string{"there", "good m8 :how are you?"}) {
t.Error("params parsed incorrectly")
}
if !ircEqual("[fag]^", "{FAG}~") {
t.Error("string case comparison not according to RFC 2812")
}
// TODO: More tests.
}