示例#1
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);
}
示例#3
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);
}
示例#4
0
/* Функция, удаляющая последний элемент контейнера */
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);
	}
}
示例#5
0
/* Функция, добавляющая элемент в конец контейнера */
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);
	}
}
示例#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
文件: 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");

}
示例#8
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");
}
extern void LSQ_InsertRearElement(LSQ_HandleT handle, LSQ_BaseTypeT element)
{
    LSQ_IteratorT iterator = LSQ_GetPastRearElement(handle);
    LSQ_InsertElementBeforeGiven(iterator, element);
    LSQ_DestroyIterator(iterator);
}