/* Checking front and rear filling */ void test2(void) { int i; // print_LSQ(handle); LSQ_IteratorT iter = LSQ_GetFrontElement(handle); assert( iter != NULL); for(i = 49; i >= 0; i--) { // printf("front = %d \t index i = %d \t value = %d \n",front[i], i, *LSQ_DereferenceIterator(iter)); assert( *LSQ_DereferenceIterator(iter) == front[i] ); assert( *LSQ_DereferenceIterator(iter) != MAX_ELEMENT_VALUE + 1 ); LSQ_AdvanceOneElement(iter); } LSQ_SetPosition(iter, LSQ_GetSize(handle)-1); assert( iter != NULL); // print_LSQ(handle); // printf("iter = %p \t node = %p \t value = %d \n", iter, iter->self, iter->self->value); for(i = 49; i >= 0; i--) { // printf("rear = %d \t index i = %d \t value = %d \n",rear[i], i, *LSQ_DereferenceIterator(iter)); assert( *LSQ_DereferenceIterator(iter) == rear[i] ); assert( *LSQ_DereferenceIterator(iter) != MAX_ELEMENT_VALUE + 1 ); LSQ_RewindOneElement(iter); } // print_LSQ(handle); LSQ_DestroyIterator(iter); }
/* 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); }
extern void LSQ_ShiftPosition(LSQ_IteratorT iterator, LSQ_IntegerIndexT shift) { IteratorT * iter = (IteratorT *)iterator; if IS_HANDLE_INVALID(iterator) return; for(; shift > 0; shift--) LSQ_AdvanceOneElement(iterator); for(; shift < 0; shift++) LSQ_RewindOneElement(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); }
void LSQ_ShiftPosition(LSQ_IteratorT iterator, LSQ_IntegerIndexT shift) { IteratorPtr iter = iterator; if (iter == NULL) return; while (shift > 0) { LSQ_AdvanceOneElement(iter); shift--; } while (shift < 0) { LSQ_RewindOneElement(iter); shift++; } }
/* 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"); }