diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-14 15:50:09 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-14 15:50:09 +0100 |
| commit | 1ab2fedd108b26c9624454a897e2c518aaff7d32 (patch) | |
| tree | fff428b72e018b2f17bea7c3cd5eb19ff096ea7f /test/ft_read_test.c | |
| parent | 66bfb5efc23b4dd9819bf70b5a709c81ccf7a820 (diff) | |
| download | libasm_test-1ab2fedd108b26c9624454a897e2c518aaff7d32.tar.gz libasm_test-1ab2fedd108b26c9624454a897e2c518aaff7d32.tar.bz2 libasm_test-1ab2fedd108b26c9624454a897e2c518aaff7d32.zip | |
Linux portability, moved tests to test/ dir
Diffstat (limited to 'test/ft_read_test.c')
| -rw-r--r-- | test/ft_read_test.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/test/ft_read_test.c b/test/ft_read_test.c new file mode 100644 index 0000000..50a85bd --- /dev/null +++ b/test/ft_read_test.c @@ -0,0 +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(); +} |
