]> granicus.if.org Git - neomutt/commitdiff
test: improve test_mutt_str_asprintf()
authorRichard Russon <rich@flatcap.org>
Sun, 26 May 2019 15:02:23 +0000 (16:02 +0100)
committerRichard Russon <rich@flatcap.org>
Sun, 26 May 2019 16:18:13 +0000 (17:18 +0100)
mutt/string.c
test/string/mutt_str_asprintf.c

index f8ac0609828a69d7078cb3a0f939df9b226706d3..fc2a08fe360efc2fd6d3dc073b9b4a9ac93d8ecf 100644 (file)
@@ -1240,8 +1240,8 @@ int mutt_str_asprintf(char **strp, const char *fmt, ...)
    * is undefined when the return code is -1.  */
   if (n < 0)
   {
-    mutt_error(_("Out of memory"));
-    mutt_exit(1);
+    mutt_error(_("Out of memory")); /* LCOV_EXCL_LINE */
+    mutt_exit(1); /* LCOV_EXCL_LINE */
   }
 
   if (n == 0)
index 2770a911b8589d1da5dda84f761527bdfdb00f2f..26abe20ee590f672af6b20f62bbb9f6a70880d4a 100644 (file)
@@ -37,4 +37,42 @@ void test_mutt_str_asprintf(void)
     char *ptr = NULL;
     TEST_CHECK(mutt_str_asprintf(&ptr, NULL) == -1);
   }
+
+  {
+    TEST_CASE("Empty");
+    char *result = NULL;
+    TEST_CHECK(mutt_str_asprintf(&result, "") == 0);
+    TEST_CHECK(result == NULL);
+  }
+
+  {
+    TEST_CASE("Static");
+    const char *str = "apple";
+    char *result = NULL;
+    TEST_CHECK(mutt_str_asprintf(&result, str) == 5);
+    TEST_CHECK(strcmp(result, str) == 0);
+    FREE(&result);
+  }
+
+  {
+    TEST_CASE("Static big");
+    const char *str =
+        "apple banana cherry damson elderberry fig guava hawthorn ilama "
+        "jackfruit kumquat lemon mango nectarine olive papaya quince raspberry "
+        "strawberry tangerine ugli vanilla wolfberry xigua yew ziziphus";
+    char *result = NULL;
+    TEST_CHECK(mutt_str_asprintf(&result, str) == 195);
+    TEST_CHECK(strcmp(result, str) == 0);
+    FREE(&result);
+  }
+
+  {
+    TEST_CASE("Varargs");
+    const char *str = "apple";
+    const char *expected = "app 1234567 3.1416";
+    char *result = NULL;
+    TEST_CHECK(mutt_str_asprintf(&result, "%.3s %ld %3.4f", str, 1234567, 3.141592654) == 18);
+    TEST_CHECK(strcmp(result, expected) == 0);
+    FREE(&result);
+  }
 }