tests: add infrastructure for writing tests in C

This commit is contained in:
Khaïs COLIN 2025-02-06 15:48:48 +01:00
parent e022ca0ce7
commit 60d9b212fb
No known key found for this signature in database
4 changed files with 92 additions and 0 deletions

21
tests/Makefile Normal file
View file

@ -0,0 +1,21 @@
rawtests = \
metacharacters \
tests = $(addprefix test_,$(rawtests))
test_objs = $(addsuffix .o,$(tests))
objs := $(addprefix ../,$(objs))
.PHONY: run
%.o: %.c
$(CC) -c $(CFLAGS) $(LDFLAGS) -o $*.o $*.c
$(CC) -MM $(CFLAGS) $(LDFLAGS) $*.c > $*.d
test_%: %.o $(objs)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $*.o $(objs) $(LDLIBS)
run: $(tests)
$(addprefix ./,$(addsuffix &&,$(tests))) echo "Finished running C tests"
fclean:
rm -f $(tests)

59
tests/metacharacters.c Normal file
View file

@ -0,0 +1,59 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* metacharacters.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: kcolin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/02/06 15:21:00 by kcolin #+# #+# */
/* Updated: 2025/02/06 15:57:40 by kcolin ### ########.fr */
/* */
/* ************************************************************************** */
#include "../src/parser/matchers/metacharacter.h"
#include <assert.h>
#include <stdio.h>
#include <unistd.h>
void test_metacharacters(void)
{
dup2(STDERR_FILENO, STDIN_FILENO);
char c = 'a';
printf("not metachar:");
while (c != 'z')
{
printf("%c", c);
assert(!is_metacharacter(c));
c++;
}
c = 'A';
while (c != 'Z')
{
printf("%c", c);
assert(!is_metacharacter(c));
c++;
}
c = '0';
while (c != '9')
{
printf("%c", c);
assert(!is_metacharacter(c));
c++;
}
char *metachars = " \t\n|&;()<>";
int i = 0;
printf("\nmetachar:");
while (metachars[i] != '\0')
{
printf("%c", metachars[i]);
assert(is_metacharacter(metachars[i]));
i++;
}
printf("\n");
}
int main(void)
{
test_metacharacters();
return (0);
}