diff test/test-putc.c @ 0:b1991ee4451d

misc: initial import
author David Demelier <markand@malikania.fr>
date Thu, 29 Oct 2020 17:24:30 +0100
parents
children 939fe74cd80a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test-putc.c	Thu Oct 29 17:24:30 2020 +0100
@@ -0,0 +1,69 @@
+/*
+ * test-putc.c -- test buf_putc
+ *
+ * Copyright (c) 2019-2020 David Demelier <markand@malikania.fr>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define GREATEST_USE_ABBREVS 0
+#include <greatest.h>
+
+#include "buf.h"
+
+GREATEST_TEST
+putc_empty(void)
+{
+	struct buf b = {0};
+
+	/* This will allocate one byte and then increase by power of two. */
+	buf_putc(&b, 'a');
+	GREATEST_ASSERT_STR_EQ(b.data, "a");
+	GREATEST_ASSERT_EQ(b.length, 1U);
+	GREATEST_ASSERT_EQ(b.capacity, 1U);
+
+	buf_putc(&b, 'b');
+	GREATEST_ASSERT_STR_EQ(b.data, "ab");
+	GREATEST_ASSERT_EQ(b.length, 2U);
+	GREATEST_ASSERT_EQ(b.capacity, 2U);
+
+	buf_putc(&b, 'c');
+	GREATEST_ASSERT_STR_EQ(b.data, "abc");
+	GREATEST_ASSERT_EQ(b.length, 3U);
+	GREATEST_ASSERT_EQ(b.capacity, 4U);
+
+	/* No reallocation since there is still one byte left. */
+	buf_putc(&b, 'd');
+	GREATEST_ASSERT_STR_EQ(b.data, "abcd");
+	GREATEST_ASSERT_EQ(b.length, 4U);
+	GREATEST_ASSERT_EQ(b.capacity, 4U);
+
+	/* New reallocation here. */
+	buf_putc(&b, 'e');
+	GREATEST_ASSERT_STR_EQ(b.data, "abcde");
+	GREATEST_ASSERT_EQ(b.length, 5U);
+	GREATEST_ASSERT_EQ(b.capacity, 8U);
+	buf_finish(&b);
+
+	GREATEST_PASS();
+}
+
+GREATEST_MAIN_DEFS();
+
+int
+main(int argc, char **argv)
+{
+	GREATEST_MAIN_BEGIN();
+	GREATEST_RUN_TEST(putc_empty);
+	GREATEST_MAIN_END();
+}