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); }
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); }