diff --git a/.gitignore b/.gitignore index 12d0fb0..6f50b8a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,3 @@ docs zig-out zig-cache .zig-cache -*.o -*.elf diff --git a/.woodpecker/test.yaml b/.woodpecker/test.yaml deleted file mode 100644 index 9eece92..0000000 --- a/.woodpecker/test.yaml +++ /dev/null @@ -1,20 +0,0 @@ -when: - - event: push - branch: master - -steps: - - name: build - image: debian - commands: - - apt update - - apt install libcmocka-dev -y - - apt install gcc -y - - apt install make -y - - make -j$(nproc) test/test.elf - - - name: run-tests - image: debian - commands: - - apt update - - apt install libcmocka0 -y - - ./test/test.elf diff --git a/Makefile b/Makefile index 4c5b92b..861b543 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ # Compiler -CC ?= gcc +CC := gcc + +GITHASH := $(shell git rev-parse --short HEAD) -# GITHASH := $(shell git rev-parse --short HEAD | echo "") -# # Compiler flags -CFLAGS := -Wall -Wextra -Wpedantic -Wunused -std=c99 -Isrc +CFLAGS := -Wall -Wextra -Wpedantic -std=c2x # Directories SRC_DIR := src @@ -25,14 +25,6 @@ TARGET := $(BUILD_DIR)/CTree # Default target all: $(TARGET) -test/test.o: test/test.c - -test/test.elf: test/test.o src/tree.o - $(CC) $(CFLAGS) $^ -o $@ - -test: test/test.elf - ./test/test.elf - # Rule to build the target executable $(TARGET): $(OBJS) $(CC) $(CFLAGS) $^ -o $@ @@ -49,17 +41,18 @@ run: $(TARGET) fmt: clang-format -i $(SRCS) $(HEADERS) +# Clean rule clean: - rm -rf $(BUILD_DIR) $(TARGET) test/test.o tester docs + rm -rf $(BUILD_DIR) $(TARGET) docs: PROJECT_NUMBER=git-$(GITHASH) doxygen Doxyfile cppcheck: - cppcheck --enable=all --inconclusive --std=c99 --language=c --platform=unix64 --suppress=missingIncludeSystem $(SRCS) test/test.c + cppcheck --enable=all --inconclusive --std=c11 --language=c --platform=unix64 --suppress=missingIncludeSystem $(SRCS) valgrind: $(TARGET) valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./$(TARGET) # Mark rules as phony -.PHONY: all run clean docs docs test +.PHONY: all run clean docs docs diff --git a/src/tree.h b/src/tree.h index db2e282..c89a820 100644 --- a/src/tree.h +++ b/src/tree.h @@ -56,4 +56,4 @@ bool tree_contains(Node *node, int data); // Print the tree in order void tree_inorder(Node *node); -#endif // TREE_H +#endif // TREE_H \ No newline at end of file diff --git a/test/test.c b/test/test.c deleted file mode 100644 index 907571e..0000000 --- a/test/test.c +++ /dev/null @@ -1,66 +0,0 @@ -#include "tree.h" - -// Function prototypes for helper functions -void test_insert(Tree *tree); -void test_remove(Tree *tree); -void test_contains(Tree *tree); -void test_inorder(Tree *tree); - -int main() { - Tree tree = { .root = NULL }; - - printf("\n-- Testing Insert --\n"); - test_insert(&tree); - - printf("\n-- Testing Contains --\n"); - test_contains(&tree); - - printf("\n-- Testing Inorder Traversal --\n"); - test_inorder(&tree); - - printf("\n-- Testing Remove --\n"); - test_remove(&tree); - - printf("\n-- Clearing Tree --\n"); - tree_clear(&tree); - printf("Tree cleared.\n"); - - return 0; -} - -void test_insert(Tree *tree) { - int values[] = {10, 5, 15, 3, 7, 12, 18}; - for (int i = 0; i < 7; i++) { - printf("Inserting %d\n", values[i]); - tree_insert(tree, values[i]); - } -} - -void test_remove(Tree *tree) { - int values_to_remove[] = {15, 5, 10}; - for (int i = 0; i < 3; i++) { - printf("Removing %d\n", values_to_remove[i]); - if (tree_remove(&tree->root, values_to_remove[i]) == 0) { - printf("Successfully removed %d\n", values_to_remove[i]); - } else { - printf("Failed to remove %d\n", values_to_remove[i]); - } - } - printf("Remaining elements (in-order traversal):\n"); - tree_inorder(tree->root); - printf("\n"); -} - -void test_contains(Tree *tree) { - int values_to_check[] = {7, 15, 20}; - for (int i = 0; i < 3; i++) { - printf("Checking if tree contains %d: %s\n", values_to_check[i], - tree_contains(tree->root, values_to_check[i]) ? "Yes" : "No"); - } -} - -void test_inorder(Tree *tree) { - printf("Tree elements (in-order traversal):\n"); - tree_inorder(tree->root); - printf("\n"); -}