Test for endOfStream line type in tests

This commit is contained in:
Nathan Fisher 2023-10-30 01:20:43 -04:00
parent dc6a0150d9
commit bb0b5a1bcc
4 changed files with 49 additions and 37 deletions

View file

@ -612,33 +612,35 @@ int parseGemtext(gemtextParser *parser, gemtextLineQueue *lq) {
return ret;
}
} else {
switch (parser->mode) {
case normalMode:
ret = gemtextParserSend(parser, normalLine, lq);
break;
case preformattedMode:
ret = gemtextParserSendPreformatted(parser, lq);
break;
case quoteMode:
ret = gemtextParserSend(parser, quoteLine, lq);
break;
case linkMode:
ret = gemtextParserSendLink(parser, lq);
break;
case h1Mode:
ret = gemtextParserSend(parser, h1Line, lq);
break;
case h2Mode:
ret = gemtextParserSend(parser, h2Line, lq);
break;
case h3Mode:
ret = gemtextParserSend(parser, h3Line, lq);
break;
case listMode:
ret = gemtextParserSend(parser, listLine, lq);
break;
if (parser->state != lineStart && parser->state != trimStart) {
switch (parser->mode) {
case normalMode:
ret = gemtextParserSend(parser, normalLine, lq);
break;
case preformattedMode:
ret = gemtextParserSendPreformatted(parser, lq);
break;
case quoteMode:
ret = gemtextParserSend(parser, quoteLine, lq);
break;
case linkMode:
ret = gemtextParserSendLink(parser, lq);
break;
case h1Mode:
ret = gemtextParserSend(parser, h1Line, lq);
break;
case h2Mode:
ret = gemtextParserSend(parser, h2Line, lq);
break;
case h3Mode:
ret = gemtextParserSend(parser, h3Line, lq);
break;
case listMode:
ret = gemtextParserSend(parser, listLine, lq);
break;
}
if (ret) return ret;
}
if (ret) return ret;
line = calloc(1, sizeof(gemtextLine));
if (line == NULL) return errno;
line->lineType = endOfStream;

View file

@ -47,16 +47,16 @@ typedef enum {
* An enum type representing the various line types in gemtext markup
*/
typedef enum {
normalLine, ///< A normal text line
linkLine, ///< A link line
listLine, ///< A list member
h1Line, ///< An H1 heading
h2Line, ///< An H2 heading
h3Line, ///< An H3 heading
preformattedLine, ///< A preformatted text block
quoteLine, ///< A Quote block
endOfStream, /**< Notifies the receiver that the stream is over and no
more lines are to be expected */
normalLine = 0, ///< A normal text line
linkLine = 1, ///< A link line
listLine = 2, ///< A list member
h1Line = 3, ///< An H1 heading
h2Line = 4, ///< An H2 heading
h3Line = 5, ///< An H3 heading
preformattedLine = 6, ///< A preformatted text block
quoteLine = 7, ///< A Quote block
endOfStream = 8, /**< Notifies the receiver that the stream is over and no
more lines are to be expected */
} gemtextLineType;
/**

View file

@ -92,6 +92,11 @@ int main() {
assert(memcmp(line->node->body, "This is a preformatted block", 28) == 0);
gemtextLineDeinit(line);
line = gemtextLineQueueTryPop(&lq);
assert(line != NULL);
assert(line->lineType == endOfStream);
gemtextLineDeinit(line);
gemtextParserDeinit(&parser);
return ret;
}

View file

@ -95,6 +95,11 @@ int main() {
assert(line->lineType == linkLine);
assert(line->link->display == NULL);
assert(memcmp(line->link->url, "finger://example.org/joe", 24) == 0);
gemtextLineDeinit(line);
line = gemtextLineQueueTryPop(&lq);
assert(line != NULL);
assert(line->lineType == endOfStream);
gemtextLineDeinit(line);
return ret;