159 lines
5.7 KiB
C
159 lines
5.7 KiB
C
#include "../../test.h"
|
|
#include "arc/std/bool.h"
|
|
#include "arc/std/errno.h"
|
|
#include "arc/std/vector/inline.h"
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
|
|
ARC_Bool TEST_VectorInline_CompareDataFn(void *dataA, void *dataB){
|
|
if(*(int32_t *)dataA == *(int32_t *)dataB){
|
|
return ARC_True;
|
|
}
|
|
|
|
return ARC_False;
|
|
}
|
|
|
|
//TODO: more tests with destroy data fn added
|
|
void TEST_VectorInline_DestroyDataFn(void *data){
|
|
free((int32_t *)data);
|
|
}
|
|
|
|
ARC_TEST(VectorInline_Add_RemoveIndex_Get){
|
|
ARC_VectorInline *vectorInline;
|
|
ARC_VectorInline_Create(&vectorInline, sizeof(int32_t), NULL, NULL);
|
|
|
|
int32_t val0 = 0;
|
|
int32_t val1 = 1;
|
|
int32_t val2 = 2;
|
|
int32_t val3 = 3;
|
|
int32_t val4 = 4;
|
|
|
|
ARC_VectorInline_Add(vectorInline, &val0);
|
|
ARC_VectorInline_Add(vectorInline, &val1);
|
|
ARC_VectorInline_Add(vectorInline, &val2);
|
|
ARC_VectorInline_Add(vectorInline, &val3);
|
|
ARC_VectorInline_Add(vectorInline, &val4);
|
|
|
|
ARC_CHECK(0 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_CHECK(1 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 1));
|
|
ARC_CHECK(2 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 2));
|
|
ARC_CHECK(3 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 3));
|
|
ARC_CHECK(4 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 4));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 0);
|
|
|
|
ARC_CHECK(1 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_CHECK(2 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 1));
|
|
ARC_CHECK(3 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 2));
|
|
ARC_CHECK(4 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 3));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 3);
|
|
|
|
ARC_CHECK(1 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_CHECK(2 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 1));
|
|
ARC_CHECK(3 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 2));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 1);
|
|
|
|
ARC_CHECK(1 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_CHECK(3 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 1));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 1);
|
|
|
|
ARC_CHECK(1 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 0);
|
|
|
|
ARC_VectorInline_Destroy(vectorInline);
|
|
}
|
|
|
|
ARC_TEST(VectorInline_Add_Remove_Get){
|
|
ARC_VectorInline *vectorInline;
|
|
ARC_Vector_CompareDataFn testCompareDataFn = TEST_VectorInline_CompareDataFn;
|
|
ARC_VectorInline_Create(&vectorInline, sizeof(int32_t), &testCompareDataFn, NULL);
|
|
|
|
int32_t val0 = 0;
|
|
int32_t val1 = 1;
|
|
int32_t val2 = 2;
|
|
int32_t val3 = 3;
|
|
int32_t val4 = 4;
|
|
|
|
ARC_VectorInline_Add(vectorInline, &val0);
|
|
ARC_VectorInline_Add(vectorInline, &val1);
|
|
ARC_VectorInline_Add(vectorInline, &val2);
|
|
ARC_VectorInline_Add(vectorInline, &val3);
|
|
ARC_VectorInline_Add(vectorInline, &val4);
|
|
|
|
ARC_CHECK(0 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_CHECK(1 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 1));
|
|
ARC_CHECK(2 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 2));
|
|
ARC_CHECK(3 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 3));
|
|
ARC_CHECK(4 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 4));
|
|
ARC_VectorInline_Remove(vectorInline, &val0);
|
|
|
|
ARC_CHECK(1 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_CHECK(2 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 1));
|
|
ARC_CHECK(3 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 2));
|
|
ARC_CHECK(4 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 3));
|
|
ARC_VectorInline_Remove(vectorInline, &val4);
|
|
|
|
ARC_CHECK(1 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_CHECK(2 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 1));
|
|
ARC_CHECK(3 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 2));
|
|
ARC_VectorInline_Remove(vectorInline, &val2);
|
|
|
|
ARC_CHECK(1 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_CHECK(3 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 1));
|
|
ARC_VectorInline_Remove(vectorInline, &val1);
|
|
|
|
ARC_CHECK(3 == *(int32_t *)ARC_VectorInline_Get(vectorInline, 0));
|
|
ARC_VectorInline_Remove(vectorInline, &val3);
|
|
|
|
ARC_VectorInline_Destroy(vectorInline);
|
|
}
|
|
|
|
ARC_TEST(VectorInline_Add_RemoveIndex_GetSize){
|
|
ARC_VectorInline *vectorInline;
|
|
ARC_VectorInline_Create(&vectorInline, sizeof(int32_t), NULL, NULL);
|
|
|
|
int32_t val0 = 0;
|
|
int32_t val1 = 1;
|
|
int32_t val2 = 2;
|
|
int32_t val3 = 3;
|
|
int32_t val4 = 4;
|
|
|
|
ARC_VectorInline_Add(vectorInline, &val0);
|
|
ARC_VectorInline_Add(vectorInline, &val1);
|
|
ARC_VectorInline_Add(vectorInline, &val2);
|
|
ARC_VectorInline_Add(vectorInline, &val3);
|
|
ARC_VectorInline_Add(vectorInline, &val4);
|
|
|
|
ARC_CHECK(5 == ARC_VectorInline_GetSize(vectorInline));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 0);
|
|
|
|
ARC_CHECK(4 == ARC_VectorInline_GetSize(vectorInline));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 0);
|
|
|
|
ARC_CHECK(3 == ARC_VectorInline_GetSize(vectorInline));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 0);
|
|
|
|
ARC_CHECK(2 == ARC_VectorInline_GetSize(vectorInline));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 0);
|
|
|
|
ARC_CHECK(1 == ARC_VectorInline_GetSize(vectorInline));
|
|
ARC_VectorInline_RemoveIndex(vectorInline, 0);
|
|
|
|
ARC_CHECK(0 == ARC_VectorInline_GetSize(vectorInline));
|
|
|
|
ARC_VectorInline_Destroy(vectorInline);
|
|
}
|
|
|
|
ARC_TEST(VectorInline_Add_RemoveIndex_Get_Try_Out_Of_Bounds){
|
|
ARC_Vector *vector;
|
|
ARC_Vector_Create(&vector, NULL, NULL);
|
|
|
|
int32_t val0 = 0;
|
|
|
|
ARC_Vector_Add(vector, &val0);
|
|
ARC_CHECK(NULL == ARC_Vector_Get(vector, 1));
|
|
arc_errno = 0;
|
|
|
|
ARC_Vector_RemoveIndex(vector, 0);
|
|
|
|
ARC_Vector_Destroy(vector);
|
|
}
|