]> granicus.if.org Git - neomutt/commitdiff
test: improve test_mutt_buffer_add_printf()
authorRichard Russon <rich@flatcap.org>
Fri, 24 May 2019 22:24:04 +0000 (23:24 +0100)
committerRichard Russon <rich@flatcap.org>
Sun, 26 May 2019 15:35:38 +0000 (16:35 +0100)
mutt/buffer.c
test/buffer/mutt_buffer_add_printf.c

index 68142657fb14d525c7b58928fca0f6a70035a516..63dd332e4f83f9333367dac700d2e4ced60aa120 100644 (file)
@@ -232,6 +232,7 @@ void mutt_buffer_fix_dptr(struct Buffer *buf)
  * @param fmt printf-style format string
  * @param ... Arguments to be formatted
  * @retval num Characters written
+ * @retval -1  Error
  */
 int mutt_buffer_add_printf(struct Buffer *buf, const char *fmt, ...)
 {
index fa21b9381a0a4a78baaa7db190f26387ea9cd80f..47e3fbd048b79e71538d164ac28f788ceb210f77 100644 (file)
@@ -37,4 +37,92 @@ void test_mutt_buffer_add_printf(void)
     struct Buffer buf = { 0 };
     TEST_CHECK(mutt_buffer_add_printf(&buf, NULL) != 0);
   }
+
+  TEST_CASE("printf to an empty Buffer");
+
+  {
+    TEST_CASE("Empty");
+    struct Buffer *buf = mutt_buffer_new();
+    TEST_CHECK(mutt_buffer_add_printf(buf, "") == 0);
+    TEST_CHECK(strlen(mutt_b2s(buf)) == 0);
+    mutt_buffer_free(&buf);
+  }
+
+  {
+    TEST_CASE("Static");
+    const char *str = "apple";
+    struct Buffer *buf = mutt_buffer_new();
+    TEST_CHECK(mutt_buffer_add_printf(buf, str) == 5);
+    TEST_CHECK(strcmp(mutt_b2s(buf), str) == 0);
+    mutt_buffer_free(&buf);
+  }
+
+  {
+    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";
+    struct Buffer *buf = mutt_buffer_new();
+    TEST_CHECK(mutt_buffer_add_printf(buf, str) == 195);
+    TEST_CHECK(strcmp(mutt_b2s(buf), str) == 0);
+    mutt_buffer_free(&buf);
+  }
+
+  {
+    TEST_CASE("Varargs");
+    const char *str = "apple";
+    const char *result = "app 1234567 3.1416";
+    struct Buffer *buf = mutt_buffer_new();
+    TEST_CHECK(mutt_buffer_add_printf(buf, "%.3s %ld %3.4f", str, 1234567, 3.141592654) == 18);
+    TEST_CHECK(strcmp(mutt_b2s(buf), result) == 0);
+    mutt_buffer_free(&buf);
+  }
+
+  TEST_CASE("printf to a non-empty Buffer");
+
+  {
+    TEST_CASE("Empty");
+    const char *str = "test";
+    struct Buffer *buf = mutt_buffer_from(str);
+    TEST_CHECK(mutt_buffer_add_printf(buf, "") == 0);
+    TEST_CHECK(strcmp(mutt_b2s(buf), str) == 0);
+    mutt_buffer_free(&buf);
+  }
+
+  {
+    TEST_CASE("Static");
+    const char *str = "apple";
+    const char *result = "testapple";
+    struct Buffer *buf = mutt_buffer_from("test");
+    TEST_CHECK(mutt_buffer_add_printf(buf, str) == 5);
+    TEST_CHECK(strcmp(mutt_b2s(buf), result) == 0);
+    mutt_buffer_free(&buf);
+  }
+
+  {
+    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";
+    const char *result =
+        "testapple 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";
+    struct Buffer *buf = mutt_buffer_from("test");
+    TEST_CHECK(mutt_buffer_add_printf(buf, str) == 195);
+    TEST_CHECK(strcmp(mutt_b2s(buf), result) == 0);
+    mutt_buffer_free(&buf);
+  }
+
+  {
+    TEST_CASE("Varargs");
+    const char *str = "apple";
+    const char *result = "testapp 1234567 3.1416";
+    struct Buffer *buf = mutt_buffer_from("test");
+    TEST_CHECK(mutt_buffer_add_printf(buf, "%.3s %ld %3.4f", str, 1234567, 3.141592654) == 18);
+    TEST_CHECK(strcmp(mutt_b2s(buf), result) == 0);
+    mutt_buffer_free(&buf);
+  }
 }