Add tests for parseMessage
This commit is contained in:
parent
05cd075d1d
commit
cc07728c53
10
irc/irc.go
10
irc/irc.go
|
@ -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") + `)` +
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue