mirror of
https://github.com/zoriya/xmlParser.git
synced 2025-12-18 08:35:12 +00:00
The xml parse works for <yes/>. Adding tests
This commit is contained in:
27
Makefile
27
Makefile
@@ -11,11 +11,17 @@ SRC = src/xmlparser.c \
|
||||
|
||||
OBJ = $(SRC:%.c=%.o)
|
||||
|
||||
TESTS = tests/test_basics.c
|
||||
|
||||
TEST_MAIN = tests/test_main.c
|
||||
|
||||
COVERAGE = --coverage -lcriterion
|
||||
|
||||
INCLUDE = -I ./include
|
||||
|
||||
CFLAGS = $(INCLUDE) -Wall -Wextra -Wshadow
|
||||
|
||||
LDFLAGS =
|
||||
LDFLAGS = -lmy -L lib/my/
|
||||
|
||||
CC = gcc
|
||||
|
||||
@@ -23,20 +29,37 @@ AR = ar rc
|
||||
|
||||
NAME = xmlparser.a
|
||||
|
||||
UT = ./ut
|
||||
|
||||
FT = ./ft
|
||||
|
||||
all: build
|
||||
|
||||
build: $(OBJ)
|
||||
$(MAKE) -C lib/my
|
||||
$(AR) $(NAME) $(NAME)
|
||||
|
||||
tests_run:
|
||||
$(CC) -o $(UT) $(SRC) $(TESTS) $(COVERAGE) $(CFLAGS) $(LDFLAGS)
|
||||
$(UT)
|
||||
|
||||
clean:
|
||||
$(MAKE) -C lib/my clean
|
||||
$(RM) $(OBJ)
|
||||
$(RM) *.gc*
|
||||
|
||||
fclean: clean
|
||||
$(MAKE) -C lib/my fclean
|
||||
$(RM) $(NAME)
|
||||
$(RM) $(UT)
|
||||
$(RM) $(FT)
|
||||
|
||||
re: fclean all
|
||||
|
||||
dbg: CFLAGS += -g
|
||||
dbg: re
|
||||
dbg: fclean
|
||||
dbg: $(OBJ)
|
||||
$(MAKE) -C lib/my
|
||||
$(CC) -o $(FT) $(SRC) $(TEST_MAIN) $(CFLAGS) $(LDFLAGS)
|
||||
|
||||
.PHONY: all build clean fclean
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
int count_valid_queens_placements(int n);
|
||||
|
||||
char *my_strchr(char *str, char c);
|
||||
|
||||
int my_compute_power_it(int n, int p);
|
||||
|
||||
int my_compute_power_rec(int n, int p);
|
||||
@@ -74,9 +76,7 @@ char *my_strcat(char *dest, const char *src);
|
||||
|
||||
int my_strcmp(const char *s1, const char *s2);
|
||||
|
||||
char *my_strchr(char *str, char c);
|
||||
|
||||
char *my_strcpy(char *dest, const char *src);
|
||||
char *my_strcpy(const char *str);
|
||||
|
||||
int my_str_isalpha(const char *str);
|
||||
|
||||
|
||||
@@ -27,5 +27,6 @@ struct node
|
||||
node *next;
|
||||
};
|
||||
|
||||
node *xmlparse(char *path);
|
||||
dictionary *property_add(dictionary *list, dictionary *property);
|
||||
node *xml_parsenode(char **nodestr);
|
||||
@@ -17,7 +17,6 @@ LIBOBJ = lib/my/*.o \
|
||||
all: buildlib
|
||||
|
||||
buildlib:
|
||||
cp ./my.h ../../include/my.h
|
||||
gcc -c ./*.c
|
||||
ar rc ./libmy.a ./*.o
|
||||
ar rc ../libmy.a ./*.o
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
int count_valid_queens_placements(int n);
|
||||
|
||||
char *my_strchr(char *str, char c);
|
||||
|
||||
int my_compute_power_it(int n, int p);
|
||||
|
||||
int my_compute_power_rec(int n, int p);
|
||||
|
||||
@@ -17,10 +17,13 @@ char *xml_getname(char **nodestr, bool *has_parameters)
|
||||
|
||||
if ((*nodestr)[0] != '<')
|
||||
return (NULL);
|
||||
*nodestr += 1;
|
||||
if (p) {
|
||||
*has_parameters = true;
|
||||
} else {
|
||||
*has_parameters = false;
|
||||
p = my_strchr(*nodestr, '/');
|
||||
if (!p)
|
||||
p = my_strchr(*nodestr, '>');
|
||||
if (!p)
|
||||
return (NULL);
|
||||
@@ -70,16 +73,24 @@ dictionary *xml_getproperties(char **nodestr, bool *can_have_child)
|
||||
*nodestr += 1;
|
||||
if ((*nodestr)[0] == '/') {
|
||||
*nodestr += 1;
|
||||
*can_have_child = true;
|
||||
*can_have_child = false;
|
||||
}
|
||||
else
|
||||
*can_have_child = false;
|
||||
*can_have_child = true;
|
||||
}
|
||||
return (properties);
|
||||
}
|
||||
|
||||
int xml_checkclosing(node *n, char **nodestr)
|
||||
{
|
||||
if ((*nodestr)[0] == '/' && (*nodestr)[1] == '>') {
|
||||
*nodestr += 2;
|
||||
return (0);
|
||||
}
|
||||
if ((*nodestr)[0] == '>') {
|
||||
*nodestr += 1;
|
||||
return (0);
|
||||
}
|
||||
if ((*nodestr)[0] != '<' || (*nodestr)[1] != '/')
|
||||
return (-1);
|
||||
if (my_strstr(*nodestr, n->name) != *nodestr + 2)
|
||||
|
||||
21
tests/test_basics.c
Normal file
21
tests/test_basics.c
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
** EPITECH PROJECT, 2019
|
||||
** xmlparser
|
||||
** File description:
|
||||
** test_basics
|
||||
*/
|
||||
|
||||
#include "xml.h"
|
||||
#include <criterion/criterion.h>
|
||||
#include <string.h>
|
||||
|
||||
Test(xml, simple)
|
||||
{
|
||||
char *xml = strdup("<yes/>");
|
||||
node *n = xml_parsenode(&xml);
|
||||
|
||||
cr_assert_str_eq(n->name, "yes");
|
||||
cr_assert_eq(n->child, NULL);
|
||||
cr_assert_eq(n->next, NULL);
|
||||
cr_assert_eq(n->properties, NULL);
|
||||
}
|
||||
18
tests/test_main.c
Normal file
18
tests/test_main.c
Normal file
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
** EPITECH PROJECT, 2019
|
||||
** xmlparser
|
||||
** File description:
|
||||
** test_main
|
||||
*/
|
||||
|
||||
#include "xml.h"
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (argc != 2)
|
||||
return (printf("Usage: %s xml_path\n", argv[0]), 0);
|
||||
node *n = xmlparse(argv[1]);
|
||||
(void)n;
|
||||
return (0);
|
||||
}
|
||||
1
tests/xmltest.txt
Normal file
1
tests/xmltest.txt
Normal file
@@ -0,0 +1 @@
|
||||
<yes/>
|
||||
Reference in New Issue
Block a user