commit d44cf21f1126a13920da529945a697174dc0d671
parent ee7621ad8828e7cf9948848f9ff93ff4f630a7f6
Author: Mario Rosell R. Martinez <mario@mariorosell.es>
Date: Sat, 28 Mar 2026 21:38:54 +0100
anntp_article: Add tests
Diffstat:
| M | tests/test.c | | | 63 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 63 insertions(+), 0 deletions(-)
diff --git a/tests/test.c b/tests/test.c
@@ -144,6 +144,67 @@ test_group(void)
anntp_freeconn(c);
}
+void
+test_article(void)
+{
+ AnntpConnection* c = anntp_mkconn("news.eternal-september.org", "119", false);
+ require(c != NULL, "connection for ARTICLE test");
+
+ char line[256];
+ anntp_readline(c, line, sizeof(line));
+
+ AnntpGroup g;
+ int err = anntp_group(c, "eternal-september.talk", &g);
+ require(err == ANE_OK, "group for article");
+
+ AnntpArticle art;
+ memset(&art, 0, sizeof(art));
+
+ ssize_t r = anntp_article(c, g.first, &art);
+
+ require(r > 0, "anntp_article fetch");
+ require(art.body != NULL, "article body present");
+
+ require(art.from != NULL || art.id != NULL, "some headers parsed");
+
+ anntp_article_free(&art);
+ anntp_freeconn(c);
+}
+
+static int
+article_count_cb(const char* line, void* extra)
+{
+ size_t* count = (size_t*)extra;
+ if (line && line[0] != '\0')
+ (*count)++;
+ return 0;
+}
+
+void
+test_article_cb(void)
+{
+ AnntpConnection* c = anntp_mkconn("news.eternal-september.org", "119", false);
+ require(c != NULL, "connection for ARTICLE_CB test");
+
+ char line[256];
+ anntp_readline(c, line, sizeof(line));
+
+ /* select a group */
+ AnntpGroup g;
+ int err = anntp_group(c, "eternal-september.talk", &g);
+ require(err == ANE_OK, "group for article_cb");
+
+ size_t count = 0;
+
+ /* try reading first available article */
+ err = anntp_article_cb(c, g.first, article_count_cb, &count);
+
+ require(err == ANE_OK, "anntp_article_cb execution");
+ require(count > 0, "article_cb received lines");
+
+ anntp_freeconn(c);
+}
+
/*********************************************************************************************************************/
int
@@ -158,6 +219,8 @@ main(void)
test_auth();
test_group();
test_list();
+ test_article();
+ test_article_cb();
printf("> INFO: %u out of %u tests failed (%u succeeded).\n",
nfailed, ntests, ntests - nfailed);