示例#1
0
文件: lsq_tests.c 项目: Taller/Rhonda
/* Test moving on list with setPosition */
void test4(void)
{
    int i, j;
    srand ( time(NULL) );
    LSQ_IteratorT iter = LSQ_GetFrontElement(handleAll);
    assert( iter != NULL);

//    print_LSQ(handleAll);
    printf("Testing SetPosition");
    for(i = 0; i < MAX_TEST_ATTEMPTS; i++)
    {
        j = rand() % 1000;
//        printf("\n Step = %d \t setPosition = %d ", i, j);
        LSQ_SetPosition(iter, j);
        if( j < LSQ_GetSize(handleAll))
        {
//            printf("\n Expecting value = %d \t ", all[j]);
//            printf("\n Found value = %d \t ", iter->self->value);
            assert( *LSQ_DereferenceIterator(iter) == all[j]);
            assert( *LSQ_DereferenceIterator(iter) != MAX_ELEMENT_VALUE + 1);
        } 
    }
    printf("\t\t ---\t OK \n");
    LSQ_DestroyIterator(iter);
}	
示例#2
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);

}
示例#3
0
文件: tree.c 项目: FooBarrior/IMCS
LSQ_IteratorT LSQ_GetFrontElement(LSQ_HandleT handle){
    TreeIteratorPtr it = malloc(sizeof(TreeIterator));
    if(NULL == it) return NULL;
    it->tree = handle;
    LSQ_SetPosition(it, 0);
    
    return it;
}
示例#4
0
文件: tree.c 项目: FooBarrior/IMCS
void LSQ_ShiftPosition(LSQ_IteratorT iterator, LSQ_IntegerIndexT shift){
    if(NULL == iterator || !shift) return;
    TreeIteratorPtr it = iterator;

    if(it->state == IT_PAST_REAR && shift > 0 || it->state == IT_BEFORE_FIRST && shift < 0)
        return;
    if(it->state == IT_BEFORE_FIRST){
        LSQ_SetPosition(it, 0);
        shift--;
    } else if(it->state == IT_PAST_REAR){
        LSQ_SetPosition(it, it->tree->size - 1);
        shift++;
    }
    
    if(shift > 0) shiftForward(it, shift);
    else shiftBackward(it, -shift);

}
示例#5
0
void LSQ_ShiftPosition(LSQ_IteratorT iterator, LSQ_IntegerIndexT shift)
{
    _iterator *iter = iterator;
    if (iter != NULL)
    {
        shift += iter->index;
        LSQ_SetPosition(iter, shift);
    }
}
示例#6
0
/* Функция, возвращающая итератор, ссылающийся на элемент с указанным индексом */
LSQ_IteratorT LSQ_GetElementByIndex(LSQ_HandleT handle, LSQ_IntegerIndexT index){
	TypeIterator *iterator = NULL;

	if(handle == NULL)
		return(LSQ_HandleInvalid);

	iterator = (TypeIterator*)malloc(sizeof(TypeIterator));
	iterator->list = SEQ(handle);
	LSQ_SetPosition(iterator, index);
	
	return(iterator);
}