aboutsummaryrefslogtreecommitdiff
path: root/ft_write_test.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-11-24 01:04:21 +0100
committerCharles <sircharlesaze@gmail.com>2019-11-24 01:04:21 +0100
commit5a47d63887a0878243b17799b19c4a0f76d3756d (patch)
tree72da1070587a0cd5c0a9599f6aacf8d4cb15b9c2 /ft_write_test.c
parent97e84015b635cf51d32b00000dc3fa25390251b4 (diff)
downloadlibasm_test-5a47d63887a0878243b17799b19c4a0f76d3756d.tar.gz
libasm_test-5a47d63887a0878243b17799b19c4a0f76d3756d.tar.bz2
libasm_test-5a47d63887a0878243b17799b19c4a0f76d3756d.zip
ft_write.s, ft_read.s, ft_strdup.s tests and prettier
Diffstat (limited to 'ft_write_test.c')
-rw-r--r--ft_write_test.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/ft_write_test.c b/ft_write_test.c
index 8b7d126..c98c153 100644
--- a/ft_write_test.c
+++ b/ft_write_test.c
@@ -1,7 +1,67 @@
#include "libasm_test.h"
+#define FT_WRITE_BUF_SIZE (1 << 12)
+
+static int ft_write_pipe[2];
+static char buf[FT_WRITE_BUF_SIZE];
+static int ret;
+
+#define FT_WRITE_EXPECT(str) do { \
+ if (pipe(ft_write_pipe) < 0) \
+ exit(EXIT_FAILURE); \
+ fcntl(ft_write_pipe[0], F_SETFL, O_NONBLOCK); \
+ ft_write(ft_write_pipe[1], str, strlen(str)); \
+ ret = read(ft_write_pipe[0], buf, FT_WRITE_BUF_SIZE); \
+ buf[ret] = '\0'; \
+ if (strcmp(buf, str) != 0) \
+ printf("KO: [COMPARE]: %s: expected: \"%s\" got: \"%s\"\n", test_name, str, buf); \
+ else \
+ print_ok(); \
+ close(ft_write_pipe[1]); \
+ close(ft_write_pipe[0]); \
+} while (0);
+
+void
+ft_write_test_segfault(void)
+{
+ int tmp[2];
+ if (pipe(tmp) < 0)
+ exit(EXIT_FAILURE);
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "test", 5));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "t", 1));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "", 0));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "test", 4));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "test", 2));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], NULL, 2));
+ close(tmp[0]);
+ close(tmp[1]);
+ TEST_ASM_FUNCTION(ft_write(-1, "tt", 2));
+ TEST_ASM_FUNCTION(ft_write(OPEN_MAX + 1, "tt", 2));
+}
+
+void
+ft_write_test_compare(void)
+{
+ FT_WRITE_EXPECT("");
+ FT_WRITE_EXPECT("bon");
+ FT_WRITE_EXPECT("bonjour");
+ FT_WRITE_EXPECT("%c%s%p%x%X%e%f%g");
+ FT_WRITE_EXPECT("the\0hidden");
+ FT_WRITE_EXPECT("Lorem ipsum dolor sit amet, consectetur adipiscing\
+elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
+bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
+volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
+felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
+ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
+tortor, sit amet consequat amet.");
+}
+
void
ft_write_test(void)
{
+ test_name = "ft_write.s";
+ ft_write_test_segfault();
+ if (!signaled)
+ ft_write_test_compare();
}