예제 #1
0
파일: lsq_tests.c 프로젝트: Taller/Rhonda
/* 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);

}
예제 #2
0
파일: lsq_tests.c 프로젝트: Taller/Rhonda
/* 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);
}
예제 #4
0
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);
}
예제 #5
0
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);
}
예제 #6
0
파일: lsq_tests.c 프로젝트: Taller/Rhonda
/* 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);
}	
예제 #7
0
파일: avl-tree.c 프로젝트: twigil/loulou
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++;
    }
}
예제 #8
0
파일: lsq_tests.c 프로젝트: Taller/Rhonda
/* 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");

}
예제 #9
0
파일: lsq_tests.c 프로젝트: Taller/Rhonda
/* 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");
}