Add tests for parseMessage

This commit is contained in:
Daniele Tricoli 2015-08-12 16:21:14 +02:00
parent 05cd075d1d
commit cc07728c53
2 changed files with 36 additions and 4 deletions

View File

@ -104,7 +104,9 @@ func doPrivmsg(event *irc.Event) {
if channel == conf.IRC.Nickname {
return
}
command, person, extra, argument := parseMessage(event.Message(), conf.I18N.Lang)
command, person, extra, argument := parseMessage(event.Message(),
conf.I18N.Lang,
conf.IRC.Nickname)
if command != "" && person != "" {
@ -118,10 +120,10 @@ func doPrivmsg(event *irc.Event) {
}
}
func parseMessage(message, lang string) (command, person, extra, argument string) {
func parseMessage(message, lang, nickname string) (command, person, extra, argument string) {
var names []string
reArgument := regexp.MustCompile(conf.IRC.Nickname +
reArgument := regexp.MustCompile(nickname +
`:?` +
`\s+` +
`(?P<command>` + i18nKeyJoin(lang, "quote") + `)` +
@ -132,7 +134,7 @@ func parseMessage(message, lang string) (command, person, extra, argument string
`(?:\s+)` +
`(?P<argument>[\w\s-'\p{Latin}]+)`)
re := regexp.MustCompile(conf.IRC.Nickname +
re := regexp.MustCompile(nickname +
`:?` +
`\s+` +
`(?P<command>` + i18nKeyJoin(lang, "quote") + `)` +

View File

@ -31,3 +31,33 @@ func TestI18nKeyJoin(t *testing.T) {
assert.Equal(t, s, "su|sul|sulla|sullo|sui|sugli|sulle",
"quote key for it language error")
}
func TestParseMessageEmpty(t *testing.T) {
var message string
command, person, extra, argument := parseMessage(message, "it", "perpetua")
assert.Equal(t, command, "", "test empty command")
assert.Equal(t, person, "", "test empty person")
assert.Equal(t, extra, "", "test empty extra")
assert.Equal(t, argument, "", "test empty argument")
}
func TestParseMessageNoArgument(t *testing.T) {
message := "perpetua: cita Alan Turing"
command, person, extra, argument := parseMessage(message, "it", "perpetua")
assert.Equal(t, command, "cita", "parsed command")
assert.Equal(t, person, "Alan Turing", "parsed person")
assert.Equal(t, extra, "", "parsed extra")
assert.Equal(t, argument, "", "parsed argument")
}
func TestParseMessageArgument(t *testing.T) {
message := "perpetua: cita Alan Turing sui computer"
command, person, extra, argument := parseMessage(message, "it", "perpetua")
assert.Equal(t, command, "cita", "parsed command")
assert.Equal(t, person, "Alan Turing", "parsed person")
assert.Equal(t, extra, "sui", "parsed extra")
assert.Equal(t, argument, "computer", "parsed argument")
}