diff options
author | EuAndreh <eu@euandre.org> | 2024-10-31 16:14:40 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-10-31 16:14:40 -0300 |
commit | 52f3dc51f84f71b89e0ac6566c395a143a9c1c1e (patch) | |
tree | c9bf60d24dddf8b639879d7f9fa967815688dfae /tests | |
parent | Add initial implementation of some of `queriesT` functions (diff) | |
download | papod-52f3dc51f84f71b89e0ac6566c395a143a9c1c1e.tar.gz papod-52f3dc51f84f71b89e0ac6566c395a143a9c1c1e.tar.xz |
tests/papod.go: Adapt old tests to use TestStart() and Testing()
Diffstat (limited to 'tests')
-rw-r--r-- | tests/papod.go | 775 |
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) + } + }) } |