diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-11-24 01:04:21 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-11-24 01:04:21 +0100 |
| commit | 5a47d63887a0878243b17799b19c4a0f76d3756d (patch) | |
| tree | 72da1070587a0cd5c0a9599f6aacf8d4cb15b9c2 /ft_read_test.c | |
| parent | 97e84015b635cf51d32b00000dc3fa25390251b4 (diff) | |
| download | libasm_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_read_test.c')
| -rw-r--r-- | ft_read_test.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/ft_read_test.c b/ft_read_test.c index 78246b6..08c3c70 100644 --- a/ft_read_test.c +++ b/ft_read_test.c @@ -1,7 +1,67 @@ #include "libasm_test.h" +#define FT_READ_BUF_SIZE (1 << 12) + +static int ft_read_pipe[2]; +static char buf[FT_READ_BUF_SIZE]; +static int ret; + +#define FT_READ_EXPECT(str) do { \ + if (pipe(ft_read_pipe) < 0) \ + exit(EXIT_FAILURE); \ + fcntl(ft_read_pipe[0], F_SETFL, O_NONBLOCK); \ + write(ft_read_pipe[1], str, strlen(str)); \ + ret = ft_read(ft_read_pipe[0], buf, FT_READ_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_read_pipe[1]); \ + close(ft_read_pipe[0]); \ +} while (0); + +void +ft_read_test_segfault(void) +{ + int tmp[2]; + if (pipe(tmp) < 0) + exit(EXIT_FAILURE); + TEST_ASM_FUNCTION(ft_read(tmp[1], "test", 5)); + TEST_ASM_FUNCTION(ft_read(tmp[1], "t", 1)); + TEST_ASM_FUNCTION(ft_read(tmp[1], "", 0)); + TEST_ASM_FUNCTION(ft_read(tmp[1], "test", 4)); + TEST_ASM_FUNCTION(ft_read(tmp[1], "test", 2)); + TEST_ASM_FUNCTION(ft_read(tmp[1], NULL, 2)); + close(tmp[0]); + close(tmp[1]); + TEST_ASM_FUNCTION(ft_read(-1, "tt", 2)); + TEST_ASM_FUNCTION(ft_read(OPEN_MAX + 1, "tt", 2)); +} + +void +ft_read_test_compare(void) +{ + FT_READ_EXPECT(""); + FT_READ_EXPECT("bon"); + FT_READ_EXPECT("bonjour"); + FT_READ_EXPECT("%c%s%p%x%X%e%f%g"); + FT_READ_EXPECT("the\0hidden"); + FT_READ_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_read_test(void) { + test_name = "ft_read.s"; + ft_read_test_segfault(); + if (!signaled) + ft_read_test_compare(); } |
