This commit is contained in:
Rens Pastoor
2025-06-12 11:20:08 +02:00
parent 37013ec1fc
commit 1086760c4a
21 changed files with 444 additions and 256 deletions

Binary file not shown.

View File

@@ -16,14 +16,13 @@ int addAnimal(const Animal* animalPtr, Animal* animalArray, size_t animalArrayLe
}
int removeAnimal(int animalId, Animal* animalArray, size_t numberOfAnimalsPresent, size_t* newNumberOfAnimalsPresent){
int fault = -1;
int fault = 0;
size_t removedCount = 0;
if (animalArray == NULL || numberOfAnimalsPresent == 0) {
fault = -1; // Invalid
return -1; // Invalid
} else {
size_t writeIndex = 0;
// Copy only animals that don't match the ID
for (size_t readIndex = 0; readIndex < numberOfAnimalsPresent; ++readIndex) {
if (animalArray[readIndex].Id != animalId) {
@@ -33,14 +32,11 @@ int removeAnimal(int animalId, Animal* animalArray, size_t numberOfAnimalsPresen
writeIndex++;
} else {
removedCount++;
fault = 0; // Found some animal(s) to remove
}
}
// Update the number of animals present
numberOfAnimalsPresent -= removedCount;
}
*newNumberOfAnimalsPresent = numberOfAnimalsPresent;
fault = removedCount;
*newNumberOfAnimalsPresent = (numberOfAnimalsPresent - removedCount);
return fault;
}

View File

@@ -18,12 +18,14 @@ const Animal originalArray[5] = {
Animal animalArray[5];
Animal searchArray[5];
Animal idTestArray[5];
Animal removeMultipleTestArray[5];
void administration_setUp(void) {
// Reset both arrays before each test
memcpy(animalArray, originalArray, sizeof(originalArray));
memcpy(searchArray, originalArray, sizeof(originalArray));
memcpy(idTestArray, originalArray, sizeof(originalArray));
memcpy(removeMultipleTestArray, originalArray, sizeof(originalArray));
}
void administration_tearDown(void){}
@@ -31,14 +33,14 @@ void administration_tearDown(void){}
void test_administration_remove_valid(void){
size_t newNumberOfAnimalsPresent = 0;
int errorCode = removeAnimal(2, animalArray, 3, &newNumberOfAnimalsPresent);
TEST_ASSERT_EQUAL(0, errorCode);
TEST_ASSERT_EQUAL(1, errorCode);
TEST_ASSERT_EQUAL(2, newNumberOfAnimalsPresent);
}
void test_administration_remove_invalid(void){
size_t newNumberOfAnimalsPresent = 0;
int errorCode = removeAnimal(12, animalArray, 3, &newNumberOfAnimalsPresent);
TEST_ASSERT_EQUAL(-1, errorCode);
TEST_ASSERT_EQUAL(0, errorCode);
TEST_ASSERT_EQUAL(3, newNumberOfAnimalsPresent);
}
@@ -46,8 +48,7 @@ void test_administration_remove_multiple_of_same_id(void){
Animal newAnimal = {.Id = 3, .Species = Dog, .Age = 3, .Sex = Male, .DateFound = {1, 1, 2023}};
idTestArray[3] = newAnimal;
size_t newNumberOfAnimalsPresent = 0;
int errorCode = removeAnimal(3, animalArray, 3, &newNumberOfAnimalsPresent);
TEST_ASSERT_EQUAL(0, errorCode);
TEST_ASSERT_EQUAL(2, removeAnimal(3, idTestArray, 4, &newNumberOfAnimalsPresent));
TEST_ASSERT_EQUAL(2, newNumberOfAnimalsPresent);
}
@@ -75,6 +76,26 @@ void test_administration_find_valid(void){
TEST_ASSERT_EQUAL(Dog, foundAnimalV.Species);
}
void test_administration_find_xyz(void){
size_t newNumberOfAnimalsPresent = 0;
Animal animals[10] = {0};
animals[0].Id = 1;
animals[1].Id = 1;
animals[2].Id = 2;
animals[3].Id = 1;
animals[4].Id = 1;
animals[5].Id = 3;
animals[6].Id = 3;
animals[7].Id = 1;
animals[8].Id = 1;
TEST_ASSERT_EQUAL(6, removeAnimal(1, animals, 9, &newNumberOfAnimalsPresent));
TEST_ASSERT_EQUAL(3, newNumberOfAnimalsPresent);
}
void test_administration_find_invalid(void){
Animal foundAnimalinV;
int errorCode = findAnimalById(12, searchArray, 3, &foundAnimalinV);
@@ -93,6 +114,7 @@ void run_administration_tests()
MY_RUN_TEST(test_administration_find_valid);
MY_RUN_TEST(test_administration_find_invalid);
MY_RUN_TEST(test_administration_remove_multiple_of_same_id);
MY_RUN_TEST(test_administration_find_xyz);
UnityUnregisterSetupTearDown();
}