Beispiel #1
0
/* 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);
}
Beispiel #2
0
/* Test delete with DeleteRearElement */
void test9(void)
{
    int i, j;

    printf("Testing DeleteRearElement");
    while(LSQ_GetSize(handleAll))
    {
        LSQ_IteratorT iter = LSQ_GetFrontElement(handleAll);
        assert( iter != NULL);
//        print_LSQ(handleAll);
        for(j = 0; j < LSQ_GetSize(handleAll); j++)
        {
//            printf("\nFound = %d \t Expecting = %d \t at index = %d", *LSQ_DereferenceIterator(iter), all[j], j);
            assert( *LSQ_DereferenceIterator(iter) == all[j]);
            assert( *LSQ_DereferenceIterator(iter) != MAX_ELEMENT_VALUE + 1);
            LSQ_AdvanceOneElement(iter);
        }
        LSQ_DestroyIterator(iter);
        LSQ_DeleteRearElement(handleAll);
    }
    printf("\t\t ---\t OK \n");
    for(i = 0; i < MAX_handleALL_LEN; i++)
    {
        LSQ_InsertRearElement(handleAll, all[i]);
    }
}
Beispiel #3
0
/* 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);

}
Beispiel #4
0
LSQ_IteratorT LSQ_GetFrontElement(LSQ_HandleT handle) {
    int i = 0;
    HashTableDataT* container = NULL;
    IteratorT* iter = NULL;
    assert(handle != NULL);
    container = (HashTableDataT*)handle;
    iter = CreateIterator(container, NULL, ITS_BEFORE_FIRST);
    LSQ_AdvanceOneElement(iter);
    return iter;
}
Beispiel #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);
}
Beispiel #6
0
LSQ_IteratorT LSQ_GetFrontElement(LSQ_HandleT handle)
{
    IteratorPtr iter = NULL;
    TreePtr tree = handle;
    if (tree == LSQ_HandleInvalid) return NULL;
    ALLOC_CHECK(iter = malloc(sizeof(Iterator)));
    
    iter->tree = tree;
    iter->node = tree->before_first;
    LSQ_AdvanceOneElement(iter);
    return iter;
RESCUE:
    return NULL;
}
Beispiel #7
0
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++;
    }
}