irc-go/ircmsg/message_test.go

90 lines
1.8 KiB
Go
Raw Normal View History

2016-01-17 00:19:51 +00:00
package ircmsg
2016-01-16 17:10:15 +00:00
import (
"reflect"
"testing"
)
2016-01-16 23:45:14 +00:00
type testcode struct {
2016-01-16 17:10:15 +00:00
raw string
message IrcMessage
}
2016-01-16 23:45:14 +00:00
var decodetests = []testcode{
{":dan-!d@localhost PRIVMSG dan #test :What a cool message\r\n",
2016-01-16 17:10:15 +00:00
MakeMessage(nil, "dan-!d@localhost", "PRIVMSG", "dan", "#test", "What a cool message")},
2016-01-16 23:45:14 +00:00
{"@time=12732;re TEST *\r\n",
2016-01-16 23:32:30 +00:00
MakeMessage(MakeTags("time", "12732", "re", nil), "", "TEST", "*")},
2016-01-16 17:10:15 +00:00
}
func TestDecode(t *testing.T) {
2016-01-16 23:45:14 +00:00
for _, pair := range decodetests {
2016-01-16 17:10:15 +00:00
ircmsg, err := ParseLine(pair.raw)
if err != nil {
2016-01-16 23:45:14 +00:00
t.Error(
"For", pair.raw,
"Failed to parse line:", err,
)
2016-01-16 17:10:15 +00:00
}
if !reflect.DeepEqual(ircmsg, pair.message) {
t.Error(
"For", pair.raw,
"expected", pair.message,
"got", ircmsg,
)
}
}
}
2016-01-16 23:45:14 +00:00
var encodetests = []testcode{
{":dan-!d@localhost PRIVMSG dan #test :What a cool message\r\n",
MakeMessage(nil, "dan-!d@localhost", "PRIVMSG", "dan", "#test", "What a cool message")},
{"@time=12732 TEST *\r\n",
MakeMessage(MakeTags("time", "12732"), "", "TEST", "*")},
{"@re TEST *\r\n",
MakeMessage(MakeTags("re", nil), "", "TEST", "*")},
}
func TestEncode(t *testing.T) {
for _, pair := range encodetests {
line, err := pair.message.Line()
if err != nil {
t.Error(
"For", pair.raw,
"Failed to parse line:", err,
)
}
if line != pair.raw {
t.Error(
"For", pair.message,
"expected", pair.raw,
"got", line,
)
}
}
// make sure we fail on no command
msg := MakeMessage(nil, "example.com", "", "*")
_, err := msg.Line()
if err == nil {
t.Error(
"For", "Test Failure 1",
"expected", "an error",
"got", err,
)
}
// make sure we fail with params in right way
msg = MakeMessage(nil, "example.com", "TEST", "*", "t s", "", "Param after empty!")
_, err = msg.Line()
if err == nil {
t.Error(
"For", "Test Failure 2",
"expected", "an error",
"got", err,
)
}
2016-01-16 23:45:14 +00:00
}