121 lines
4.2 KiB
C
121 lines
4.2 KiB
C
#include <string.h>
|
|
|
|
#include "administration.h"
|
|
#include "unity.h"
|
|
#include "unity_test_module.h"
|
|
|
|
// I rather dislike keeping line numbers updated, so I made my own macro to ditch the line number
|
|
#define MY_RUN_TEST(func) RUN_TEST(func, 0)
|
|
|
|
// Keep the original array constant to prevent modifications
|
|
const Animal originalArray[5] = {
|
|
{.Id = 1, .Species = Cat, .Age = 8, .Sex = Male, .DateFound = {1, 1, 2020}},
|
|
{.Id = 2, .Species = Dog, .Age = 2, .Sex = Female, .DateFound = {1, 1, 2021}},
|
|
{.Id = 3, .Species = GuineaPig, .Age = 92, .Sex = Female, .DateFound = {1, 1, 2022}}
|
|
};
|
|
|
|
// Arrays for testing
|
|
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){}
|
|
|
|
void test_administration_remove_valid(void){
|
|
size_t newNumberOfAnimalsPresent = 0;
|
|
int errorCode = removeAnimal(2, animalArray, 3, &newNumberOfAnimalsPresent);
|
|
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(0, errorCode);
|
|
TEST_ASSERT_EQUAL(3, newNumberOfAnimalsPresent);
|
|
}
|
|
|
|
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;
|
|
TEST_ASSERT_EQUAL(2, removeAnimal(3, idTestArray, 4, &newNumberOfAnimalsPresent));
|
|
TEST_ASSERT_EQUAL(2, newNumberOfAnimalsPresent);
|
|
}
|
|
|
|
void test_administration_add_valid(void){
|
|
Animal newAnimal = {.Id = 4, .Species = Dog, .Age = 3, .Sex = Male, .DateFound = {1, 1, 2023}};
|
|
size_t newNumberOfAnimalsPresent = 0;
|
|
int errorCode = addAnimal(&newAnimal, animalArray, 5, 3, &newNumberOfAnimalsPresent);
|
|
TEST_ASSERT_EQUAL(0, errorCode);
|
|
TEST_ASSERT_EQUAL(4, newNumberOfAnimalsPresent);
|
|
}
|
|
|
|
void test_administration_add_invalid(void){
|
|
Animal newAnimal = {.Id = 5, .Species = Cat, .Age = 2, .Sex = Female, .DateFound = {1, 1, 2024}};
|
|
size_t newNumberOfAnimalsPresent = 0;
|
|
int errorCode = addAnimal(&newAnimal, animalArray, 3, 3, &newNumberOfAnimalsPresent);
|
|
TEST_ASSERT_EQUAL(-1, errorCode);
|
|
TEST_ASSERT_NOT_EQUAL(4, newNumberOfAnimalsPresent);
|
|
}
|
|
|
|
void test_administration_find_valid(void){
|
|
Animal foundAnimalV;
|
|
int errorCode = findAnimalById(2, searchArray, 3, &foundAnimalV);
|
|
TEST_ASSERT_EQUAL(0, errorCode);
|
|
TEST_ASSERT_EQUAL(2, foundAnimalV.Id);
|
|
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);
|
|
TEST_ASSERT_EQUAL(-1, errorCode);
|
|
TEST_ASSERT_EQUAL(0, foundAnimalinV.Id);
|
|
}
|
|
|
|
void run_administration_tests()
|
|
{
|
|
UnityRegisterSetupTearDown(administration_setUp, administration_tearDown);
|
|
|
|
MY_RUN_TEST(test_administration_remove_valid);
|
|
MY_RUN_TEST(test_administration_remove_invalid);
|
|
MY_RUN_TEST(test_administration_add_valid);
|
|
MY_RUN_TEST(test_administration_add_invalid);
|
|
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();
|
|
}
|