Test for endOfStream line type in tests
This commit is contained in:
parent
dc6a0150d9
commit
bb0b5a1bcc
4 changed files with 49 additions and 37 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue