Tests
This commit is contained in:
		
							parent
							
								
									6d885040f3
								
							
						
					
					
						commit
						5a02d6537d
					
				
					 2 changed files with 81 additions and 8 deletions
				
			
		
							
								
								
									
										23
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										23
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -1,10 +1,10 @@ | ||||||
| # Compiler
 | # Compiler
 | ||||||
| CC := gcc | CC ?= gcc | ||||||
| 
 |  | ||||||
| GITHASH := $(shell git rev-parse --short HEAD) |  | ||||||
| 
 | 
 | ||||||
|  | # GITHASH := $(shell git rev-parse --short HEAD | echo "")
 | ||||||
|  | #
 | ||||||
| # Compiler flags
 | # Compiler flags
 | ||||||
| CFLAGS := -Wall -Wextra -Wpedantic -std=c2x | CFLAGS := -Wall -Wextra -Wpedantic -Wunused -std=c99 -Isrc | ||||||
| 
 | 
 | ||||||
| # Directories
 | # Directories
 | ||||||
| SRC_DIR := src | SRC_DIR := src | ||||||
|  | @ -25,6 +25,14 @@ TARGET := $(BUILD_DIR)/CTree | ||||||
| # Default target
 | # Default target
 | ||||||
| all: $(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
 | # Rule to build the target executable
 | ||||||
| $(TARGET): $(OBJS) | $(TARGET): $(OBJS) | ||||||
| 	$(CC) $(CFLAGS) $^ -o $@ | 	$(CC) $(CFLAGS) $^ -o $@ | ||||||
|  | @ -41,18 +49,17 @@ run: $(TARGET) | ||||||
| fmt: | fmt: | ||||||
| 	clang-format -i $(SRCS) $(HEADERS) | 	clang-format -i $(SRCS) $(HEADERS) | ||||||
| 
 | 
 | ||||||
| # Clean rule
 |  | ||||||
| clean: | clean: | ||||||
| 	rm -rf $(BUILD_DIR) $(TARGET) | 	rm -rf $(BUILD_DIR) $(TARGET) test/test.o tester docs | ||||||
| 
 | 
 | ||||||
| docs: | docs: | ||||||
| 	PROJECT_NUMBER=git-$(GITHASH) doxygen Doxyfile | 	PROJECT_NUMBER=git-$(GITHASH) doxygen Doxyfile | ||||||
| 
 | 
 | ||||||
| cppcheck: | cppcheck: | ||||||
| 	cppcheck --enable=all --inconclusive --std=c11 --language=c --platform=unix64 --suppress=missingIncludeSystem $(SRCS) | 	cppcheck --enable=all --inconclusive --std=c99 --language=c --platform=unix64 --suppress=missingIncludeSystem $(SRCS) test/test.c | ||||||
| 
 | 
 | ||||||
| valgrind: $(TARGET) | valgrind: $(TARGET) | ||||||
| 	valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./$(TARGET) | 	valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./$(TARGET) | ||||||
| 
 | 
 | ||||||
| # Mark rules as phony
 | # Mark rules as phony
 | ||||||
| .PHONY: all run clean docs docs | .PHONY: all run clean docs docs test | ||||||
|  |  | ||||||
							
								
								
									
										66
									
								
								test/test.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								test/test.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,66 @@ | ||||||
|  | #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"); | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus