in Message
expected string
}{
- {Message{Prefix{}, "foo", Params{[]string{}, ""}}, "foo"},
- {Message{Prefix{}, "foo", Params{[]string{"bar"}, ""}}, "foo bar"},
- {Message{Prefix{"host", "", ""}, "foo", Params{[]string{"bar"}, ""}}, ":host foo bar"},
- {Message{Prefix{"host", "user", ""}, "foo", Params{[]string{"bar"}, ""}}, ":host!user foo bar"},
- {Message{Prefix{"host", "user", "host"}, "foo", Params{[]string{"bar"}, ""}}, ":host!user@host foo bar"},
- {Message{Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, ""}}, ":host@host foo bar"},
- {Message{Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}}, ":host@host foo bar :spam"},
+ {Message{Tags{}, Prefix{}, "foo", Params{[]string{}, ""}}, "foo"},
+ {Message{Tags{}, Prefix{}, "foo", Params{[]string{"bar"}, ""}}, "foo bar"},
+ {Message{Tags{}, Prefix{"host", "", ""}, "foo", Params{[]string{"bar"}, ""}}, ":host foo bar"},
+ {Message{Tags{}, Prefix{"host", "user", ""}, "foo", Params{[]string{"bar"}, ""}}, ":host!user foo bar"},
+ {Message{Tags{}, Prefix{"host", "user", "host"}, "foo", Params{[]string{"bar"}, ""}}, ":host!user@host foo bar"},
+ {Message{Tags{}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, ""}}, ":host@host foo bar"},
+ {Message{Tags{}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}}, ":host@host foo bar :spam"},
+ {Message{Tags{Tag{false, "", "key", ""}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}}, "@key :host@host foo bar :spam"},
+ {Message{Tags{Tag{false, "", "key", "value"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}}, "@key=value :host@host foo bar :spam"},
+ {Message{Tags{Tag{false, "", "key", "foo bar"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}}, "@key=foo\\sbar :host@host foo bar :spam"},
+ {Message{Tags{Tag{false, "vend", "key", "foo bar"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}}, "@vend/key=foo\\sbar :host@host foo bar :spam"},
+ {Message{Tags{Tag{true, "vend", "key", "foo bar"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}}, "@+vend/key=foo\\sbar :host@host foo bar :spam"},
+ {Message{Tags{Tag{false, "", "pos", "one"}, Tag{false, "", "pos", "two"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}}, "@pos=one;pos=two :host@host foo bar :spam"},
}
for _, d := range data {
out := d.in.String()
if out != d.expected {
- t.Errorf("%#v.ToString() = %#v but expected %#v\n", d.in, out, d.expected)
+ t.Errorf("%#v.ToString() = \n%#v\n but expected \n%#v\n", d.in, out, d.expected)
}
}
}
func TestParseAfterString(t *testing.T) {
data := []Message{
- Message{Prefix{}, "foo", Params{}},
- Message{Prefix{}, "foo", Params{[]string{"bar"}, ""}},
- Message{Prefix{"host", "", ""}, "foo", Params{[]string{"bar"}, ""}},
- Message{Prefix{"host", "user", ""}, "foo", Params{[]string{"bar"}, ""}},
- Message{Prefix{"host", "user", "host"}, "foo", Params{[]string{"bar"}, ""}},
- Message{Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, ""}},
- Message{Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}},
+ Message{Tags{}, Prefix{}, "foo", Params{}},
+ Message{Tags{}, Prefix{}, "foo", Params{[]string{"bar"}, ""}},
+ Message{Tags{}, Prefix{"host", "", ""}, "foo", Params{[]string{"bar"}, ""}},
+ Message{Tags{}, Prefix{"host", "user", ""}, "foo", Params{[]string{"bar"}, ""}},
+ Message{Tags{}, Prefix{"host", "user", "host"}, "foo", Params{[]string{"bar"}, ""}},
+ Message{Tags{}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, ""}},
+ Message{Tags{}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}},
+ Message{Tags{Tag{false, "", "key", ""}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}},
+ Message{Tags{Tag{false, "", "key", "value"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}},
+ Message{Tags{Tag{false, "", "key", "foo bar"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}},
+ Message{Tags{Tag{false, "vend", "key", "foo bar"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}},
+ Message{Tags{Tag{true, "vend", "key", "foo bar"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}},
+ Message{Tags{Tag{false, "", "pos", "one"}, Tag{false, "", "pos", "two"}}, Prefix{"host", "", "host"}, "foo", Params{[]string{"bar"}, "spam"}},
}
for _, d := range data {
in string
expected Message
}{
- {":server!user@host command param1 param2 param3 :trailing", Message{Prefix{"server", "user", "host"}, Command("command"), Params{[]string{"param1", "param2", "param3"}, "trailing"}}},
- {":server!user@host command param1 param2 param3 :trailing space", Message{Prefix{"server", "user", "host"}, Command("command"), Params{[]string{"param1", "param2", "param3"}, "trailing space"}}},
- {"foo", Message{Prefix{}, Command("foo"), Params{}}},
- {"foo bar spam", Message{Prefix{}, Command("foo"), Params{[]string{"bar", "spam"}, ""}}},
- {"foo bar :spam", Message{Prefix{}, Command("foo"), Params{[]string{"bar"}, "spam"}}},
- {"foo bar :", Message{Prefix{}, Command("foo"), Params{[]string{"bar"}, ""}}},
- {":server foo", Message{Prefix{"server", "", ""}, Command("foo"), Params{}}},
- {":server!user foo", Message{Prefix{"server", "user", ""}, Command("foo"), Params{}}},
- {":server@host foo", Message{Prefix{"server", "", "host"}, Command("foo"), Params{}}},
- {":server@host foo", Message{Prefix{"server", "", "host"}, Command("foo"), Params{}}},
+ {":server!user@host command param1 param2 param3 :trailing", Message{Tags{}, Prefix{"server", "user", "host"}, Command("command"), Params{[]string{"param1", "param2", "param3"}, "trailing"}}},
+ {":server!user@host command param1 param2 param3 :trailing space", Message{Tags{}, Prefix{"server", "user", "host"}, Command("command"), Params{[]string{"param1", "param2", "param3"}, "trailing space"}}},
+ {"foo", Message{Tags{}, Prefix{}, Command("foo"), Params{}}},
+ {"foo bar spam", Message{Tags{}, Prefix{}, Command("foo"), Params{[]string{"bar", "spam"}, ""}}},
+ {"foo bar :spam", Message{Tags{}, Prefix{}, Command("foo"), Params{[]string{"bar"}, "spam"}}},
+ {"foo bar :", Message{Tags{}, Prefix{}, Command("foo"), Params{[]string{"bar"}, ""}}},
+ {":server foo", Message{Tags{}, Prefix{"server", "", ""}, Command("foo"), Params{}}},
+ {":server!user foo", Message{Tags{}, Prefix{"server", "user", ""}, Command("foo"), Params{}}},
+ {":server@host foo", Message{Tags{}, Prefix{"server", "", "host"}, Command("foo"), Params{}}},
+ {":server@host foo", Message{Tags{}, Prefix{"server", "", "host"}, Command("foo"), Params{}}},
+ {"@key=val foo", Message{Tags{Tag{false, "", "key", "val"}}, Prefix{"", "", ""}, Command("foo"), Params{}}},
+ {"@key=val;key=b\\sa\\sr foo", Message{Tags{Tag{false, "", "key", "val"}, Tag{false, "", "key", "b a r"}}, Prefix{"", "", ""}, Command("foo"), Params{}}},
}
for _, d := range data {
":server@host foo",
":server@host foo :trailing",
":server@host foo spam bar :trailing",
+ "@+foo/bar=baz;escape=all\\sthe\\nthings\\rno\\:matter\\\\what :server@host foo spam bar :trailing",
// String ∘ Parsing is not a bijection because of whitespace
//":server@host foo spam bar :",
//":server!user@host command param1 param2 param3 :trailing space",