// Pantea Aria // test_main.c // Program to test logistics hub system functions #include #include #include "package_delivery_system.h" int main(void) { printf("=== Creating hubs ===\n"); struct delivery_centre *hub_a = create_centre("Hub A"); struct delivery_centre *hub_b = create_centre("Hub B"); printf("\n=== Testing empty hubs ===\n"); printf("Hub A parcel count: %d\n", count_packages(hub_a)); printf("Hub B parcel count: %d\n", count_packages(hub_b)); printf("\n=== Adding parcels to Hub A ===\n"); insert_package_at_head(hub_a, "Liam", "Noah", 8.5, URGENT, PENDING); insert_package_at_head(hub_a, "Olivia", "Ava", 12.3, EXPRESS, IN_TRANSIT); insert_package_at_head(hub_a, "Emma", "Mia", 6.7, STANDARD, DELIVERED); insert_package_at_head(hub_a, "Sophia", "Lucas", 9.1, EXPRESS, DELIVERED); insert_package_at_head(hub_a, "Isabella", "Ethan", 11.0, STANDARD, IN_TRANSIT); print_packages(hub_a); printf("Hub A parcel count: %d\n", count_packages(hub_a)); printf("\n=== Searching in Hub A ===\n"); struct package *found = search_package(hub_a, "Lucas"); print_single_package(found); found = search_package(hub_a, "Zoe"); print_single_package(found); printf("\n=== Adding parcels to Hub B ===\n"); insert_package_at_head(hub_b, "Mason", "Chloe", 4.2, STANDARD, DELIVERED); insert_package_at_head(hub_b, "Harper", "Ella", 7.8, URGENT, PENDING); insert_package_at_head(hub_b, "Evelyn", "James", 14.5, EXPRESS, DELIVERED); insert_package_at_head(hub_b, "Logan", "Amelia", 5.0, STANDARD, PENDING); insert_package_at_head(hub_b, "Benjamin", "Charlotte", 10.6, STANDARD, PENDING); insert_package_at_head(hub_b, "Elijah", "Henry", 13.2, EXPRESS, IN_TRANSIT); print_packages(hub_b); printf("Hub B parcel count: %d\n", count_packages(hub_b)); printf("\n=== Deleting STANDARD parcels from Hub B ===\n"); delete_package_of_priority(hub_b, STANDARD); print_packages(hub_b); printf("\n=== Rebuilding Hub B for merge test ===\n"); clear_centre(hub_b); hub_b = create_centre("Hub B"); insert_package_at_head(hub_b, "Mason", "Chloe", 4.2, STANDARD, DELIVERED); insert_package_at_head(hub_b, "Harper", "Ella", 7.8, URGENT, PENDING); insert_package_at_head(hub_b, "Evelyn", "James", 14.5, EXPRESS, DELIVERED); insert_package_at_head(hub_b, "Logan", "Amelia", 5.0, STANDARD, PENDING); printf("\n=== Merging Hub A and Hub B ===\n"); struct delivery_centre *merged_hub = merge_centres("Merged Hub", hub_a, hub_b); print_packages(merged_hub); printf("Merged Hub parcel count: %d\n", count_packages(merged_hub)); printf("\n=== Splitting merged hub by status ===\n"); struct delivery_centre *pending = create_centre("pending"); struct delivery_centre *in_transit = create_centre("in_transit"); struct delivery_centre *delivered = create_centre("delivered"); split_centre(merged_hub, pending, in_transit, delivered); printf("\nPending parcels:\n"); print_packages(pending); printf("\nIn-transit parcels:\n"); print_packages(in_transit); printf("\nDelivered parcels:\n"); print_packages(delivered); printf("\n=== Cleaning up memory ===\n"); clear_centre(pending); clear_centre(in_transit); clear_centre(delivered); return 0; }