summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-10-31 16:14:40 -0300
committerEuAndreh <eu@euandre.org>2024-10-31 16:14:40 -0300
commit52f3dc51f84f71b89e0ac6566c395a143a9c1c1e (patch)
treec9bf60d24dddf8b639879d7f9fa967815688dfae
parentAdd initial implementation of some of `queriesT` functions (diff)
downloadpapod-52f3dc51f84f71b89e0ac6566c395a143a9c1c1e.tar.gz
papod-52f3dc51f84f71b89e0ac6566c395a143a9c1c1e.tar.xz
tests/papod.go: Adapt old tests to use TestStart() and Testing()
-rw-r--r--tests/papod.go775
1 files changed, 405 insertions, 370 deletions
diff --git a/tests/papod.go b/tests/papod.go
index aa16ded..60e670c 100644
--- a/tests/papod.go
+++ b/tests/papod.go
@@ -1494,435 +1494,470 @@ func test_queriesTclose() {
}
func test_splitOnCRLF() {
- type tableT struct{
- input string
- expected []string
- }
- table := []tableT{
- {
- "",
- nil,
- },
- {
- "\r\n",
- []string{ "" },
- },
- {
- "abc\r\n",
- []string{ "abc" },
- },
- {
- "abc\r\n ",
- []string{ "abc" },
- },
- {
- "abc\r\n \r\n",
- []string{ "abc", " " },
- },
- {
- " \r\n \r\n",
- []string{ " ", " " },
- },
- {
- "aaa\r\nbbb\r\nccc\r\n",
- []string{ "aaa", "bbb", "ccc" },
- },
- {
- "\r\nsplit \r \n CRLF\r\n\r\n",
- []string{ "", "split \r \n CRLF", "" },
- },
- }
+ g.TestStart("splitOnCRLF()")
- for _, entry := range table {
- var given []string
- scanner := bufio.NewScanner(strings.NewReader(entry.input))
- scanner.Split(splitOnCRLF)
- for scanner.Scan() {
- given = append(given, scanner.Text())
+ g.Testing("we need an ending \\r\\n to get output", func() {
+ type tableT struct{
+ input string
+ expected []string
+ }
+ table := []tableT{
+ {
+ "",
+ nil,
+ },
+ {
+ "\r\n",
+ []string{ "" },
+ },
+ {
+ "abc\r\n",
+ []string{ "abc" },
+ },
+ {
+ "abc\r\n ",
+ []string{ "abc" },
+ },
+ {
+ "abc\r\n This gets ignored.\n",
+ []string{ "abc" },
+ },
+ {
+ "abc\r\n \r\n",
+ []string{ "abc", " " },
+ },
+ {
+ " \r\n \r\n",
+ []string{ " ", " " },
+ },
+ {
+ "aaa\r\nbbb\r\nccc\r\n",
+ []string{ "aaa", "bbb", "ccc" },
+ },
+ {
+ "\r\nsplit \r \n CRLF\r\n\r\n",
+ []string{ "", "split \r \n CRLF", "" },
+ },
}
- err := scanner.Err()
- g.TErrorIf(err)
- g.TAssertEqual(given, entry.expected)
- }
+ for _, entry := range table {
+ var given []string
+ scanner := bufio.NewScanner(
+ strings.NewReader(entry.input),
+ )
+ scanner.Split(splitOnCRLF)
+ for scanner.Scan() {
+ given = append(given, scanner.Text())
+ }
+
+ err := scanner.Err()
+ g.TErrorIf(err)
+ g.TAssertEqual(given, entry.expected)
+ }
+ })
}
func test_splitOnRawMessage() {
- type tableT struct{
- input string
- expected []string
- }
- table := []tableT{
- {
- "first message\r\nsecond message\r\n",
- []string{ "first message", "second message" },
- },
- {
- "message 1\r\n\r\nmessage 2\r\n\r\nignored",
- []string{ "message 1", "message 2" },
- },
- }
-
+ g.TestStart("splitOnRawMessage()")
- for _, entry := range table {
- var given []string
- scanner := bufio.NewScanner(strings.NewReader(entry.input))
- scanner.Split(splitOnRawMessage)
- for scanner.Scan() {
- given = append(given, scanner.Text())
+ g.Testing("empty messages get dropped", func() {
+ type tableT struct{
+ input string
+ expected []string
+ }
+ table := []tableT{
+ /*
+ FIXME
+ {
+ "\r\nfirst\r\n\r\nsecond\r\n \r\n",
+ []string{ "first", "second", " " },
+ },
+ */
+ {
+ "first message\r\nsecond message\r\n",
+ []string{ "first message", "second message" },
+ },
+ {
+ "message 1\r\n\r\nmessage 2\r\n\r\nignored",
+ []string{ "message 1", "message 2" },
+ },
}
- err := scanner.Err()
- g.TErrorIf(err)
- g.TAssertEqual(given, entry.expected)
- }
+
+ for _, entry := range table {
+ var given []string
+ scanner := bufio.NewScanner(strings.NewReader(
+ entry.input,
+ ))
+ scanner.Split(splitOnRawMessage)
+ for scanner.Scan() {
+ given = append(given, scanner.Text())
+ }
+
+ err := scanner.Err()
+ g.TErrorIf(err)
+ g.TAssertEqual(given, entry.expected)
+ }
+ })
}
func test_parseMessageParams() {
- type tableT struct{
- input string
- expected messageParamsT
- }
- table := []tableT{
- {
- "",
- messageParamsT{
- middle: []string { },
- trailing: "",
+ g.TestStart("parseMessageParams()")
+
+ g.Testing("we can parse the string params", func() {
+ type tableT struct{
+ input string
+ expected messageParamsT
+ }
+ table := []tableT{
+ {
+ "",
+ messageParamsT{
+ middle: []string { },
+ trailing: "",
+ },
},
- },
- {
- " ",
- messageParamsT{
- middle: []string { },
- trailing: "",
+ {
+ " ",
+ messageParamsT{
+ middle: []string { },
+ trailing: "",
+ },
},
- },
- {
- " :",
- messageParamsT{
- middle: []string { },
- trailing: "",
+ {
+ " :",
+ messageParamsT{
+ middle: []string { },
+ trailing: "",
+ },
},
- },
- {
- " : ",
- messageParamsT{
- middle: []string { },
- trailing: " ",
+ {
+ " : ",
+ messageParamsT{
+ middle: []string { },
+ trailing: " ",
+ },
},
- },
- {
- ": ",
- messageParamsT{
- middle: []string { ":" },
- trailing: "",
+ {
+ ": ",
+ messageParamsT{
+ middle: []string { ":" },
+ trailing: "",
+ },
},
- },
- {
- ": ",
- messageParamsT{
- middle: []string { ":" },
- trailing: "",
+ {
+ ": ",
+ messageParamsT{
+ middle: []string { ":" },
+ trailing: "",
+ },
},
- },
- {
- " : ",
- messageParamsT{
- middle: []string { },
- trailing: " ",
+ {
+ " : ",
+ messageParamsT{
+ middle: []string { },
+ trailing: " ",
+ },
},
- },
- {
- " :",
- messageParamsT{
- middle: []string { },
- trailing: "",
+ {
+ " :",
+ messageParamsT{
+ middle: []string { },
+ trailing: "",
+ },
},
- },
- {
- " :",
- messageParamsT{
- middle: []string { },
- trailing: "",
+ {
+ " :",
+ messageParamsT{
+ middle: []string { },
+ trailing: "",
+ },
},
- },
- {
- "a",
- messageParamsT{
- middle: []string { "a" },
- trailing: "",
+ {
+ "a",
+ messageParamsT{
+ middle: []string { "a" },
+ trailing: "",
+ },
},
- },
- {
- "ab",
- messageParamsT{
- middle: []string { "ab" },
- trailing: "",
+ {
+ "ab",
+ messageParamsT{
+ middle: []string { "ab" },
+ trailing: "",
+ },
},
- },
- {
- "a b",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: "",
+ {
+ "a b",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: "",
+ },
},
- },
- {
- "a b c",
- messageParamsT{
- middle: []string { "a", "b", "c" },
- trailing: "",
+ {
+ "a b c",
+ messageParamsT{
+ middle: []string { "a", "b", "c" },
+ trailing: "",
+ },
},
- },
- {
- "a b:c",
- messageParamsT{
- middle: []string { "a", "b:c" },
- trailing: "",
+ {
+ "a b:c",
+ messageParamsT{
+ middle: []string { "a", "b:c" },
+ trailing: "",
+ },
},
- },
- {
- "a b:c:",
- messageParamsT{
- middle: []string { "a", "b:c:" },
- trailing: "",
+ {
+ "a b:c:",
+ messageParamsT{
+ middle: []string { "a", "b:c:" },
+ trailing: "",
+ },
},
- },
- {
- "a b :c",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: "c",
+ {
+ "a b :c",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: "c",
+ },
},
- },
- {
- "a b :c:",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: "c:",
+ {
+ "a b :c:",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: "c:",
+ },
},
- },
- {
- "a b :c ",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: "c ",
+ {
+ "a b :c ",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: "c ",
+ },
},
- },
- {
- "a b : c",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: " c",
+ {
+ "a b : c",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: " c",
+ },
},
- },
- {
- "a b : c ",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: " c ",
+ {
+ "a b : c ",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: " c ",
+ },
},
- },
- {
- "a b : c :",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: " c :",
+ {
+ "a b : c :",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: " c :",
+ },
},
- },
- {
- "a b : c : ",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: " c : ",
+ {
+ "a b : c : ",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: " c : ",
+ },
},
- },
- {
- "a b : c :d",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: " c :d",
+ {
+ "a b : c :d",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: " c :d",
+ },
},
- },
- {
- "a b : c :d ",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: " c :d ",
+ {
+ "a b : c :d ",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: " c :d ",
+ },
},
- },
- {
- "a b : c : d ",
- messageParamsT{
- middle: []string { "a", "b" },
- trailing: " c : d ",
+ {
+ "a b : c : d ",
+ messageParamsT{
+ middle: []string { "a", "b" },
+ trailing: " c : d ",
+ },
},
- },
- }
+ }
- for _, entry := range table {
- given := parseMessageParams(entry.input)
- g.TAssertEqual(given, entry.expected)
- }
+ for _, entry := range table {
+ given := parseMessageParams(entry.input)
+ g.TAssertEqual(given, entry.expected)
+ }
+ })
}
func test_parseMessage() {
- type tableTOK struct{
- input string
- expected messageT
- }
- tableOK := []tableTOK {{
- "NICK joebloe ",
- messageT{
- prefix: "",
- command: "NICK",
- params: messageParamsT{
- middle: []string { "joebloe" },
- trailing: "",
+ g.TestStart("parseMessage()")
+
+ g.Testing("we can parse a full message", func() {
+ type tableTOK struct{
+ input string
+ expected messageT
+ }
+ tableOK := []tableTOK {{
+ "NICK joebloe ",
+ messageT{
+ prefix: "",
+ command: "NICK",
+ params: messageParamsT{
+ middle: []string { "joebloe" },
+ trailing: "",
+ },
+ raw: "NICK joebloe ",
},
- raw: "NICK joebloe ",
- },
- }, {
- "USER joebloe 0.0.0.0 joe :Joe Bloe",
- messageT{
- prefix: "",
- command: "USER",
- params: messageParamsT{
- middle: []string {
- "joebloe", "0.0.0.0", "joe",
+ }, {
+ "USER joebloe 0.0.0.0 joe :Joe Bloe",
+ messageT{
+ prefix: "",
+ command: "USER",
+ params: messageParamsT{
+ middle: []string {
+ "joebloe", "0.0.0.0", "joe",
+ },
+ trailing: "Joe Bloe",
},
- trailing: "Joe Bloe",
+ raw: "USER joebloe 0.0.0.0 joe :Joe Bloe",
},
- raw: "USER joebloe 0.0.0.0 joe :Joe Bloe",
- },
- }, {
- ":pre USER joebloe 0.0.0.0 joe :Joe Bloe",
- messageT{
- prefix: "pre",
- command: "USER",
- params: messageParamsT{
- middle: []string {
- "joebloe", "0.0.0.0", "joe",
+ }, {
+ ":pre USER joebloe 0.0.0.0 joe :Joe Bloe",
+ messageT{
+ prefix: "pre",
+ command: "USER",
+ params: messageParamsT{
+ middle: []string {
+ "joebloe", "0.0.0.0", "joe",
+ },
+ trailing: "Joe Bloe",
},
- trailing: "Joe Bloe",
+ raw: ":pre USER joebloe 0.0.0.0 joe :Joe Bloe",
},
- raw: ":pre USER joebloe 0.0.0.0 joe :Joe Bloe",
- },
- }, {
- ":pre USER joebloe 0.0.0.0 joe : Joe Bloe ",
- messageT{
- prefix: "pre",
- command: "USER",
- params: messageParamsT{
- middle: []string {
- "joebloe", "0.0.0.0", "joe",
+ }, {
+ ":pre USER joebloe 0.0.0.0 joe : Joe Bloe ",
+ messageT{
+ prefix: "pre",
+ command: "USER",
+ params: messageParamsT{
+ middle: []string {
+ "joebloe", "0.0.0.0", "joe",
+ },
+ trailing: " Joe Bloe ",
},
- trailing: " Joe Bloe ",
+ raw: ":pre USER joebloe 0.0.0.0 " +
+ "joe : Joe Bloe ",
},
- raw: ":pre USER joebloe 0.0.0.0 joe : Joe Bloe ",
- },
- }, {
- ":pre USER joebloe: 0:0:0:1 joe::a: : Joe Bloe ",
- messageT{
- prefix: "pre",
- command: "USER",
- params: messageParamsT{
- middle: []string {
- "joebloe:", "0:0:0:1", "joe::a:",
+ }, {
+ ":pre USER jbloe: 0:0:0:1 joe::a: : Joe Bloe ",
+ messageT{
+ prefix: "pre",
+ command: "USER",
+ params: messageParamsT{
+ middle: []string {
+ "jbloe:", "0:0:0:1", "joe::a:",
+ },
+ trailing: " Joe Bloe ",
},
- trailing: " Joe Bloe ",
+ raw: ":pre USER jbloe: 0:0:0:1 " +
+ "joe::a: : Joe Bloe ",
},
- raw: ":pre USER joebloe: 0:0:0:1 joe::a: : Joe Bloe ",
- },
- }, {
- ":pre USER :Joe Bloe",
- messageT{
- prefix: "pre",
- command: "USER",
- params: messageParamsT{
- middle: []string { },
- trailing: "Joe Bloe",
+ }, {
+ ":pre USER :Joe Bloe",
+ messageT{
+ prefix: "pre",
+ command: "USER",
+ params: messageParamsT{
+ middle: []string { },
+ trailing: "Joe Bloe",
+ },
+ raw: ":pre USER :Joe Bloe",
},
- raw: ":pre USER :Joe Bloe",
- },
- }, {
- ":pre USER : Joe Bloe",
- messageT{
- prefix: "pre",
- command: "USER",
- params: messageParamsT{
- middle: []string { },
- trailing: " Joe Bloe",
+ }, {
+ ":pre USER : Joe Bloe",
+ messageT{
+ prefix: "pre",
+ command: "USER",
+ params: messageParamsT{
+ middle: []string { },
+ trailing: " Joe Bloe",
+ },
+ raw: ":pre USER : Joe Bloe",
},
- raw: ":pre USER : Joe Bloe",
- },
- }, {
- ":pre USER : Joe Bloe",
- messageT{
- prefix: "pre",
- command: "USER",
- params: messageParamsT{
- middle: []string { },
- trailing: " Joe Bloe",
+ }, {
+ ":pre USER : Joe Bloe",
+ messageT{
+ prefix: "pre",
+ command: "USER",
+ params: messageParamsT{
+ middle: []string { },
+ trailing: " Joe Bloe",
+ },
+ raw: ":pre USER : Joe Bloe",
},
- raw: ":pre USER : Joe Bloe",
- },
- }, {
- ":pre USER : ",
- messageT{
- prefix: "pre",
- command: "USER",
- params: messageParamsT{
- middle: []string { },
- trailing: " ",
+ }, {
+ ":pre USER : ",
+ messageT{
+ prefix: "pre",
+ command: "USER",
+ params: messageParamsT{
+ middle: []string { },
+ trailing: " ",
+ },
+ raw: ":pre USER : ",
},
- raw: ":pre USER : ",
- },
- }, {
- ":pre USER :",
- messageT{
- prefix: "pre",
- command: "USER",
- params: messageParamsT{
- middle: []string { },
- trailing: "",
+ }, {
+ ":pre USER :",
+ messageT{
+ prefix: "pre",
+ command: "USER",
+ params: messageParamsT{
+ middle: []string { },
+ trailing: "",
+ },
+ raw: ":pre USER :",
},
- raw: ":pre USER :",
- },
- }}
+ }}
- for _, entry := range tableOK {
- given, err := parseMessage(entry.input)
- g.TErrorIf(err)
- g.TAssertEqual(given, entry.expected)
- }
+ for _, entry := range tableOK {
+ given, err := parseMessage(entry.input)
+ g.TErrorIf(err)
+ g.TAssertEqual(given, entry.expected)
+ }
+ })
- type tableErrorT struct{
- input string
- expected error
- }
- parseErr := errors.New("Can't parse message")
- tableError := []tableErrorT{
- {
- ":pre",
- parseErr,
- },
- {
- ": pre",
- parseErr,
- },
- {
- ":pre N1CK",
- parseErr,
- },
- }
+ g.Testing("bad messages are rejected", func() {
+ type tableErrorT struct{
+ input string
+ expected error
+ }
+ parseErr := errors.New("Can't parse message")
+ tableError := []tableErrorT{
+ {
+ ":pre",
+ parseErr,
+ },
+ {
+ ": pre",
+ parseErr,
+ },
+ {
+ ":pre N1CK",
+ parseErr,
+ },
+ }
- for _, entry := range tableError {
- _, given := parseMessage(entry.input)
- g.TAssertEqual(given, entry.expected)
- }
+ for _, entry := range tableError {
+ _, given := parseMessage(entry.input)
+ g.TAssertEqual(given, entry.expected)
+ }
+ })
}