/* Test moving on list with Advance/Rewind */ void test5(void) { int i; LSQ_IteratorT iter = LSQ_GetFrontElement(handleAll); assert( iter != NULL); // print_LSQ(handleAll); printf("Testing Advance"); for(i = 0; i < LSQ_GetSize(handleAll); i++) { assert( *LSQ_DereferenceIterator(iter) == all[i]); assert( *LSQ_DereferenceIterator(iter) != MAX_ELEMENT_VALUE + 1); LSQ_AdvanceOneElement(iter); } printf("\t\t ---\t OK \n"); printf("Testing Rewind"); iter = LSQ_GetPastRearElement(handleAll); for(i = LSQ_GetSize(handleAll)-1; i >= 0; i--) { LSQ_RewindOneElement(iter); assert( *LSQ_DereferenceIterator(iter) == all[i]); assert( *LSQ_DereferenceIterator(iter) != MAX_ELEMENT_VALUE + 1); } printf("\t\t ---\t OK \n"); LSQ_DestroyIterator(iter); }
extern void LSQ_DeleteRearElement(LSQ_HandleT handle) { LSQ_IteratorT iterator = LSQ_GetPastRearElement(handle); LSQ_RewindOneElement(iterator); LSQ_DeleteGivenElement(iterator); LSQ_DestroyIterator(iterator); }
extern void LSQ_DeleteRearElement(LSQ_HandleT handle) { IteratorT *iterator = (IteratorT *)LSQ_GetPastRearElement(handle); LSQ_RewindOneElement(iterator); LSQ_DeleteElement(handle, iterator->node->key); LSQ_DestroyIterator(iterator); }
/* Функция, удаляющая последний элемент контейнера */ void LSQ_DeleteRearElement(LSQ_HandleT handle){ TypeIterator *iterator = ITR(LSQ_GetPastRearElement(handle)); if(iterator != LSQ_HandleInvalid){ iterator->node = iterator->node->prev; LSQ_DeleteGivenElement(iterator); LSQ_DestroyIterator(iterator); } }
/* Функция, добавляющая элемент в конец контейнера */ void LSQ_InsertRearElement(LSQ_HandleT handle, LSQ_BaseTypeT element){ TypeIterator *iterator = ITR(LSQ_GetPastRearElement(handle)); if(iterator != LSQ_HandleInvalid){ LSQ_InsertElementBeforeGiven( iterator, element); LSQ_DestroyIterator(iterator); } }
/* Test before first and past rear */ void test3(void) { LSQ_IteratorT iter = LSQ_GetFrontElement(handle); assert( iter != NULL); assert(LSQ_IsIteratorBeforeFirst(iter) != 1); LSQ_RewindOneElement(iter); assert(LSQ_IsIteratorBeforeFirst(iter) == 1); printf("LSQ_IsIteratorBeforeFirst\t --- \t OK \n"); LSQ_IteratorT iter2 = LSQ_GetPastRearElement(handle); assert( iter2 != NULL); assert(LSQ_IsIteratorPastRear(iter2) == 1); LSQ_RewindOneElement(iter2); assert(LSQ_IsIteratorPastRear(iter2) != 1); printf("LSQ_IsIteratorPastRear\t\t --- \t OK \n"); LSQ_DestroyIterator(iter); LSQ_DestroyIterator(iter2); }
/* Test moving on list with ShiftPosition */ void test6(void) { int i, j; LSQ_IteratorT iter; srand ( time(NULL) ); // print_LSQ(handleAll); printf("Testing ShiftPosition forward"); for(i = 0; i < MAX_TEST_ATTEMPTS; i++) { iter = LSQ_GetFrontElement(handleAll); assert( iter != NULL); j = rand() % LSQ_GetSize(handleAll); LSQ_ShiftPosition(iter, j); assert(*LSQ_DereferenceIterator(iter) == all[j]); assert( *LSQ_DereferenceIterator(iter) != MAX_ELEMENT_VALUE + 1); LSQ_DestroyIterator(iter); } printf("\t\t ---\t OK \n"); printf("Testing ShiftPosition backward"); for(i = 0; i < MAX_TEST_ATTEMPTS; i++) { iter = LSQ_GetPastRearElement(handleAll); LSQ_RewindOneElement(iter); assert( iter != NULL); j = rand() % LSQ_GetSize(handleAll); LSQ_ShiftPosition(iter, -j); assert( *LSQ_DereferenceIterator(iter) == all[LSQ_GetSize(handleAll) - 1 - j]); assert( *LSQ_DereferenceIterator(iter) != MAX_ELEMENT_VALUE + 1); LSQ_DestroyIterator(iter); // printf("i = %d \t j = %d\n", i, j); } printf("\t\t ---\t OK \n"); }
/* Test IsIteratorDereferencable, DeleteGivenElement pastReaer, beforeFirst */ void test10(void) { int i, j; printf("Testing IsIteratorDereferencable"); LSQ_IteratorT iterator = LSQ_GetPastRearElement(handleAll); assert(LSQ_IsIteratorDereferencable(iterator) == 0); assert(LSQ_IsIteratorPastRear(iterator) == 1); LSQ_DeleteGivenElement(iterator); LSQ_DestroyIterator(iterator); printf("\t\t ---\t OK \n"); iterator = LSQ_GetFrontElement(handleAll); LSQ_RewindOneElement(iterator); printf("Testing IsIteratorBeforeFirst"); assert(LSQ_IsIteratorDereferencable(iterator) == 0); assert(LSQ_IsIteratorBeforeFirst(iterator) == 1); LSQ_DeleteGivenElement(iterator); LSQ_DestroyIterator(iterator); printf("\t\t ---\t OK \n"); }
extern void LSQ_InsertRearElement(LSQ_HandleT handle, LSQ_BaseTypeT element) { LSQ_IteratorT iterator = LSQ_GetPastRearElement(handle); LSQ_InsertElementBeforeGiven(iterator, element); LSQ_DestroyIterator(iterator); }