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;
|
return ret;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (parser->mode) {
|
if (parser->state != lineStart && parser->state != trimStart) {
|
||||||
case normalMode:
|
switch (parser->mode) {
|
||||||
ret = gemtextParserSend(parser, normalLine, lq);
|
case normalMode:
|
||||||
break;
|
ret = gemtextParserSend(parser, normalLine, lq);
|
||||||
case preformattedMode:
|
break;
|
||||||
ret = gemtextParserSendPreformatted(parser, lq);
|
case preformattedMode:
|
||||||
break;
|
ret = gemtextParserSendPreformatted(parser, lq);
|
||||||
case quoteMode:
|
break;
|
||||||
ret = gemtextParserSend(parser, quoteLine, lq);
|
case quoteMode:
|
||||||
break;
|
ret = gemtextParserSend(parser, quoteLine, lq);
|
||||||
case linkMode:
|
break;
|
||||||
ret = gemtextParserSendLink(parser, lq);
|
case linkMode:
|
||||||
break;
|
ret = gemtextParserSendLink(parser, lq);
|
||||||
case h1Mode:
|
break;
|
||||||
ret = gemtextParserSend(parser, h1Line, lq);
|
case h1Mode:
|
||||||
break;
|
ret = gemtextParserSend(parser, h1Line, lq);
|
||||||
case h2Mode:
|
break;
|
||||||
ret = gemtextParserSend(parser, h2Line, lq);
|
case h2Mode:
|
||||||
break;
|
ret = gemtextParserSend(parser, h2Line, lq);
|
||||||
case h3Mode:
|
break;
|
||||||
ret = gemtextParserSend(parser, h3Line, lq);
|
case h3Mode:
|
||||||
break;
|
ret = gemtextParserSend(parser, h3Line, lq);
|
||||||
case listMode:
|
break;
|
||||||
ret = gemtextParserSend(parser, listLine, lq);
|
case listMode:
|
||||||
break;
|
ret = gemtextParserSend(parser, listLine, lq);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ret) return ret;
|
||||||
}
|
}
|
||||||
if (ret) return ret;
|
|
||||||
line = calloc(1, sizeof(gemtextLine));
|
line = calloc(1, sizeof(gemtextLine));
|
||||||
if (line == NULL) return errno;
|
if (line == NULL) return errno;
|
||||||
line->lineType = endOfStream;
|
line->lineType = endOfStream;
|
||||||
|
|
|
@ -47,16 +47,16 @@ typedef enum {
|
||||||
* An enum type representing the various line types in gemtext markup
|
* An enum type representing the various line types in gemtext markup
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
normalLine, ///< A normal text line
|
normalLine = 0, ///< A normal text line
|
||||||
linkLine, ///< A link line
|
linkLine = 1, ///< A link line
|
||||||
listLine, ///< A list member
|
listLine = 2, ///< A list member
|
||||||
h1Line, ///< An H1 heading
|
h1Line = 3, ///< An H1 heading
|
||||||
h2Line, ///< An H2 heading
|
h2Line = 4, ///< An H2 heading
|
||||||
h3Line, ///< An H3 heading
|
h3Line = 5, ///< An H3 heading
|
||||||
preformattedLine, ///< A preformatted text block
|
preformattedLine = 6, ///< A preformatted text block
|
||||||
quoteLine, ///< A Quote block
|
quoteLine = 7, ///< A Quote block
|
||||||
endOfStream, /**< Notifies the receiver that the stream is over and no
|
endOfStream = 8, /**< Notifies the receiver that the stream is over and no
|
||||||
more lines are to be expected */
|
more lines are to be expected */
|
||||||
} gemtextLineType;
|
} gemtextLineType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -92,6 +92,11 @@ int main() {
|
||||||
assert(memcmp(line->node->body, "This is a preformatted block", 28) == 0);
|
assert(memcmp(line->node->body, "This is a preformatted block", 28) == 0);
|
||||||
gemtextLineDeinit(line);
|
gemtextLineDeinit(line);
|
||||||
|
|
||||||
|
line = gemtextLineQueueTryPop(&lq);
|
||||||
|
assert(line != NULL);
|
||||||
|
assert(line->lineType == endOfStream);
|
||||||
|
gemtextLineDeinit(line);
|
||||||
|
|
||||||
gemtextParserDeinit(&parser);
|
gemtextParserDeinit(&parser);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
|
@ -95,6 +95,11 @@ int main() {
|
||||||
assert(line->lineType == linkLine);
|
assert(line->lineType == linkLine);
|
||||||
assert(line->link->display == NULL);
|
assert(line->link->display == NULL);
|
||||||
assert(memcmp(line->link->url, "finger://example.org/joe", 24) == 0);
|
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);
|
gemtextLineDeinit(line);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Add table
Reference in a new issue