Exemplo n.º 1
0
static void test_copyCompareBuffer(void)
{
    char *element0 = xstrdup("element0");
    unsigned int element0size = strlen(element0);
    char *element1 = xstrdup("element1");
    unsigned int element1size = strlen(element1);

    Buffer *buffer0 = NULL;
    Buffer *buffer1 = NULL;
    Buffer *buffer2 = NULL;

    assert_int_equal(0, BufferCompare(buffer0, buffer1));
    buffer0 = BufferNew();
    assert_int_equal(-1, BufferCompare(NULL, buffer0));
    assert_int_equal(1, BufferCompare(buffer0, NULL));
    buffer1 = BufferNew();
    assert_int_equal(0, BufferCompare(buffer0, buffer0));
    assert_int_equal(0, BufferCompare(buffer0, buffer1));
    assert_int_equal(0, BufferCopy(buffer0, &buffer2));
    assert_int_equal(0, BufferCompare(buffer0, buffer2));

    // Add some flavour
    assert_int_equal(0, BufferDestroy(&buffer2));
    assert_int_equal(element0size, BufferSet(buffer0, element0, element0size));
    assert_int_equal(element1size, BufferSet(buffer1, element1, element1size));
    assert_int_equal(0, BufferCompare(buffer0, buffer0));
    assert_int_equal(-1, BufferCompare(buffer0, buffer1));
    assert_int_equal(1, BufferCompare(buffer1, buffer0));
    assert_int_equal(0, BufferCopy(buffer0, &buffer2));
    assert_int_equal(0, BufferCompare(buffer0, buffer2));

    // Destroy the buffers
    assert_int_equal(0, BufferDestroy(&buffer0));
    assert_int_equal(0, BufferDestroy(&buffer1));
    assert_int_equal(0, BufferDestroy(&buffer2));

    free (element0);
    free (element1);
}
Exemplo n.º 2
0
static void test_iterator(void)
{
    BufferList *list = NULL;
    list = BufferListNew();
    assert_true(list != NULL);

    BufferListIterator *emptyListIterator = NULL;
    emptyListIterator = BufferListIteratorGet(list);
    assert_true(emptyListIterator == NULL);
    char *element0 = strdup("this is a test string");
    Buffer *buffer0 = BufferNewFrom(element0, strlen(element0));
    char *element1 = strdup("another test string");
    Buffer *buffer1 = BufferNewFrom(element1, strlen(element1));
    char *element2 = strdup("yet another test string");
    Buffer *buffer2 = BufferNewFrom(element2, strlen(element2));
    char *element3 = strdup("and one more test string");
    Buffer *buffer3 = BufferNewFrom(element3, strlen(element3));

    // We add elements to the list.
    assert_int_equal(BufferListPrepend(list, buffer0), 0);
    assert_int_equal(BufferListPrepend(list, buffer1), 0);
    assert_int_equal(BufferListPrepend(list, buffer2), 0);
    assert_int_equal(BufferListPrepend(list, buffer3), 0);

    BufferListIterator *iterator0 = NULL;
    iterator0 = BufferListIteratorGet(list);
    // Check the iterator
    assert_true(iterator0 != NULL);

    // Remove element1 which is in the middle of the list, this will invalidate the iterator
    assert_int_equal(BufferListRemove(list, buffer1), 0);
    // Check that the iterator is not valid by trying to advance it
    assert_int_equal(BufferListIteratorNext(iterator0), -1);
    // Destroy the iterator
    assert_int_equal(BufferListIteratorDestroy(&iterator0), 0);
    assert_int_equal(iterator0, NULL);

    // Create a new iterator and move it
    BufferListIterator *iterator1 = NULL;
    iterator1 = BufferListIteratorGet(list);
    // Check the iterator
    assert_int_not_equal(iterator1, NULL);
    Buffer *value = NULL;
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer3), 0);

    // Advance it
    assert_int_equal(BufferListIteratorNext(iterator1), 0);
    // Check the value, it should be equal to element2
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer2), 0);

    // Advance it, now we are at the last element
    assert_int_equal(BufferListIteratorNext(iterator1), 0);
    // Check the value, it should be equal to element0
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer0), 0);

    // Advance it, should fail and the iterator should stay where it was
    assert_int_equal(BufferListIteratorNext(iterator1), -1);
    // Check the value, it should be equal to element0
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer0), 0);

    // Go back
    assert_int_equal(BufferListIteratorPrevious(iterator1), 0);
    // Check the value, it should be equal to element2
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer2), 0);

    // Go back, now we are at the beginning of the list
    assert_int_equal(BufferListIteratorPrevious(iterator1), 0);
    // Check the value, it should be equal to element3
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer3), 0);

    // Go back, should fail and the iterator should stay where it was
    assert_int_equal(BufferListIteratorPrevious(iterator1), -1);
    // Check the value, it should be equal to element3
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer3), 0);

    // Jump to the last element
    assert_int_equal(BufferListIteratorLast(iterator1), 0);
    // Check the value, it should be equal to element0
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer0), 0);

    // Go back
    assert_true(BufferListIteratorHasPrevious(iterator1));
    assert_int_equal(BufferListIteratorPrevious(iterator1), 0);
    // Check the value, it should be equal to element2
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer2), 0);

    // Jump to the first element
    assert_int_equal(BufferListIteratorFirst(iterator1), 0);
    // Check the value, it should be equal to element3
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer3), 0);

    // Advance it
    assert_true(BufferListIteratorHasNext(iterator1));
    assert_int_equal(BufferListIteratorNext(iterator1), 0);
    // Check the value, it should be equal to element2
    value = BufferListIteratorData(iterator1);
    assert_int_equal(BufferCompare(value, buffer2), 0);

    // Remove the elements
    assert_int_equal(BufferListRemove(list, buffer3), 0);
    assert_int_equal(BufferListRemove(list, buffer0), 0);
    assert_int_equal(BufferListRemove(list, buffer2), 0);

    // Now we destroy the list.
    assert_int_equal(BufferListDestroy(&list), 0);
    assert_int_equal(BufferListIteratorDestroy(&iterator1), 0);
    free (element0);
    free (element1);
    free (element2);
    free (element3);
}