]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
tests: add testing for strtoim family functions
authorBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 16 Dec 2021 11:28:01 +0000 (12:28 +0100)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 16 Dec 2021 11:28:01 +0000 (12:28 +0100)
tests/mlmmj.c

index 028a71c4bc0c76445ccc0f90630417937c8bc5dd..8f8479c81824cc5eae0f7fa0a7941d29683a3ffb 100644 (file)
@@ -29,6 +29,7 @@
 #include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <errno.h>
 
 #include "chomp.h"
 #include "mlmmj.h"
@@ -36,6 +37,8 @@
 #include "controls.h"
 #include "prepstdreply.h"
 #include "strgen.h"
+#include "utils.h"
+#include "memory.h"
 
 ATF_TC(random_int);
 ATF_TC(statctrl);
@@ -44,6 +47,8 @@ ATF_TC(open_text);
 ATF_TC(chomp);
 ATF_TC(mydirname);
 ATF_TC(mybasename);
+ATF_TC(strtoim);
+ATF_TC(strtotimet);
 
 ATF_TC_HEAD(random_int, tc) { }
 ATF_TC_HEAD(statctrl, tc) { }
@@ -52,6 +57,8 @@ ATF_TC_HEAD(open_text, tc) {}
 ATF_TC_HEAD(chomp, tc) {}
 ATF_TC_HEAD(mydirname, tc) {}
 ATF_TC_HEAD(mybasename, tc) {}
+ATF_TC_HEAD(strtoim, tc) {}
+ATF_TC_HEAD(strtotimet, tc) {}
 
 #ifndef NELEM
 #define NELEM(array)    (sizeof(array) / sizeof((array)[0]))
@@ -264,6 +271,39 @@ ATF_TC_BODY(mybasename, tc)
        ATF_REQUIRE_STREQ(mybasename(plop1), "file");
 }
 
+ATF_TC_BODY(strtoim, tc)
+{
+       const char *errp;
+       ATF_REQUIRE_EQ(strtoim("10", 0, 10, &errp), 10);
+       ATF_CHECK(errp == NULL);
+       ATF_REQUIRE_EQ(strtoim("10", 0, 9, &errp), 0);
+       ATF_REQUIRE(errp != NULL);
+       ATF_REQUIRE_STREQ(errp, "too large");
+       ATF_REQUIRE_EQ(strtoim("-1", 0, 9, &errp), 0);
+       ATF_REQUIRE(errp != NULL);
+       ATF_REQUIRE_STREQ(errp, "too small");
+       ATF_REQUIRE_EQ(strtoim("-1", 10, 9, &errp), 0);
+       ATF_REQUIRE(errp != NULL);
+       ATF_REQUIRE_STREQ(errp, "invalid");
+       ATF_REQUIRE_EQ(strtoim("ba12", 0, 9, &errp), 0);
+       ATF_REQUIRE_EQ(errno, EINVAL);
+       ATF_REQUIRE(errp != NULL);
+       ATF_REQUIRE_STREQ(errp, "invalid");
+}
+
+ATF_TC_BODY(strtotimet, tc)
+{
+       const char *errp;
+       char *str;
+       ATF_REQUIRE_EQ(strtotimet("10", &errp), 10);
+       ATF_CHECK(errp == NULL);
+       asprintf(&str, "1%"PRIdMAX, INTMAX_MAX);
+       ATF_REQUIRE_EQ(strtotimet(str, &errp), 0);
+       myfree(str);
+       ATF_REQUIRE(errp != NULL);
+       ATF_REQUIRE_STREQ(errp, "too large");
+}
+
 ATF_TP_ADD_TCS(tp)
 {
        ATF_TP_ADD_TC(tp, random_int);
@@ -273,6 +313,8 @@ ATF_TP_ADD_TCS(tp)
        ATF_TP_ADD_TC(tp, chomp);
        ATF_TP_ADD_TC(tp, mydirname);
        ATF_TP_ADD_TC(tp, mybasename);
+       ATF_TP_ADD_TC(tp, strtoim);
+       ATF_TP_ADD_TC(tp, strtotimet);
 
        return (atf_no_error());
 }