Ejemplo n.º 1
0
int main(void) {
    
    LinkedList* list = LinkedList_new();
    
    char* elem1 = "cat";
    LinkedList_add(list, &elem1);
    char* elem2 = "rat";
    LinkedList_add(list, &elem2);
    char* elem3 = "dog";
    LinkedList_add(list, &elem3);
    char* elem4 = "sheep";
    LinkedList_add(list, &elem4);
    char* elem5 = "goat";
    LinkedList_add(list, &elem5);
    char* elem6 = "kebab";
    LinkedList_add(list, &elem6);
    char* elem7 = "pig";
    LinkedList_add(list, &elem7);
    char* elem8 = "cow";
    LinkedList_add(list, &elem8);
    char* elem9 = "chicken";
    LinkedList_add(list, &elem9);
    char* elem10 = "duck";
    LinkedList_add(list, &elem10);
    char* elem11 = "fox";
    LinkedList_add(list, &elem11);
    char* elem12 = "rabbit";
    LinkedList_add(list, &elem12);
    char* elem13 = "mouse";
    LinkedList_add(list, &elem13);
    char* elem14 = "hedgehog";
    LinkedList_add(list, &elem14);
    
    printf("list before: \n");
    for (int i = 0; i < LinkedList_size(list); i++) {
        if (LinkedList_get(list, i) != NULL) {
            printf("%d: %s \n", i, *(char**)LinkedList_get(list, i));
        }
    }
    
    printf("\nremoving element 5, %s\n", *(char**)LinkedList_get(list, 5));
    LinkedList_remove(list, 5);

    printf("\nlist after: \n");
    
    for (int i = 0; i < LinkedList_size(list); i++) {
        if (LinkedList_get(list, i) != NULL) {
            printf("%d: %s \n", i, *(char**)LinkedList_get(list, i));
        }
    }
    
    LinkedList_destroy(list);
    free(list);
    
}
Ejemplo n.º 2
0
END_TEST

START_TEST(test_GettingANonExistentElementFromListReturnsNULL) {
    LinkedList* list = LinkedList_new();
    int elem = 24;
    LinkedList_add(list, &elem);
    int elem1 = 25;
    LinkedList_add(list, &elem1);
    ck_assert_int_eq(*(int*) LinkedList_get(list, 1), 25);
    ck_assert_ptr_eq(LinkedList_get(list, 4), NULL);
    ck_assert_ptr_eq(LinkedList_get(list, -1), NULL);

}
Ejemplo n.º 3
0
END_TEST

START_TEST(test_GettingAStoredElementFromListWorks) {
    LinkedList* list = LinkedList_new();
    int elem = 1337;
    LinkedList_add(list, &elem);
    ck_assert_int_eq(*(int*) LinkedList_get(list, 0), 1337);
}
Ejemplo n.º 4
0
END_TEST

START_TEST(test_StoringEvenMoreElementsToListWorks) {

    int i;

    for (i = 0; i < 10; i++) {
        LinkedList* list = LinkedList_new();

        int elem1 = 1337;
        LinkedList_add(list, &elem1);
        char* elem2 = "theeta";
        LinkedList_add(list, &elem2);
        int elem3 = 74;
        LinkedList_add(list, &elem3);
        char elem4 = 'a';
        LinkedList_add(list, &elem4);
        int elem5 = 55;
        LinkedList_add(list, &elem5);
        int elem6 = 66;
        LinkedList_add(list, &elem6);
        int elem7 = 77;
        LinkedList_add(list, &elem7);
        int elem8 = 88;
        LinkedList_add(list, &elem8);
        int elem9 = 99;
        LinkedList_add(list, &elem9);
        int elem10 = 110;
        LinkedList_add(list, &elem10);
        int elem11 = 111;
        LinkedList_add(list, &elem11);
        int elem12 = 1212;
        LinkedList_add(list, &elem12);
        int elem13 = 1313;
        LinkedList_add(list, &elem13);
        int elem14 = 1414;
        LinkedList_add(list, &elem14);

        ck_assert_int_eq(*(int*) LinkedList_get(list, 0), 1337);
        ck_assert_str_eq(*(char**) LinkedList_get(list, 1), "theeta");
        ck_assert_int_eq(*(int*) LinkedList_get(list, 2), 74);
        ck_assert_int_eq(*(char*) LinkedList_get(list, 3), 'a');
        ck_assert_int_eq(*(int*) LinkedList_get(list, 9), 110);
        ck_assert_int_eq(*(int*) LinkedList_get(list, 10), 111);
        ck_assert_int_eq(*(int*) LinkedList_get(list, 11), 1212);
        ck_assert_int_eq(*(int*) LinkedList_get(list, 12), 1313);
        ck_assert_int_eq(*(int*) LinkedList_get(list, 13), 1414);
        ck_assert_int_eq(LinkedList_size(list), 14);
    }
}
static iterator_item _next(iterator_iterate_on in, int * pos) {
	if (in == NULL || *pos < 0) {
		return NULL;
	}

	LinkedList * self = (LinkedList *) in;
	void * item = LinkedList_get(self, *pos);
	*pos += 1;
	return item;
}
Ejemplo n.º 6
0
END_TEST

START_TEST(test_StoringMultipleElementsToListWorks) {
    LinkedList* list = LinkedList_new();

    int elem1 = 1337;
    LinkedList_add(list, &elem1);
    char* elem2 = "theeta";
    LinkedList_add(list, &elem2);
    int elem3 = 74;
    LinkedList_add(list, &elem3);
    char elem4 = 'a';
    LinkedList_add(list, &elem4);

    ck_assert_int_eq(*(int*) LinkedList_get(list, 0), 1337);
    ck_assert_str_eq(*(char**) LinkedList_get(list, 1), "theeta");
    ck_assert_int_eq(*(int*) LinkedList_get(list, 2), 74);
    ck_assert_int_eq(*(char*) LinkedList_get(list, 3), 'a');
    ck_assert_int_eq(LinkedList_size(list), 4);
}
static _Bool _has_next(iterator_iterate_on in, int pos) {
	if (in == NULL || pos < 0) {
		return false;
	}

	void * item;
	LinkedList * self = (LinkedList *) in;

	item = LinkedList_get(self, pos);

	return item != NULL;
}
Ejemplo n.º 8
0
END_TEST

START_TEST(test_RemovingElementFromListDoesNotFreeItFromMemory) {
    LinkedList* list = LinkedList_new();

    int* elem = malloc(sizeof (int));
    *elem = 35;
    LinkedList_add(list, elem);
    ck_assert_int_eq(*(int*) LinkedList_get(list, 0), 35);
    LinkedList_remove(list, 0);
    ck_assert_int_eq(*elem, 35);
}
Ejemplo n.º 9
0
END_TEST

START_TEST(test_RemovingElementFromListWorks) {
    LinkedList* list = LinkedList_new();

    int elem1 = 1337;
    LinkedList_add(list, &elem1);
    char* elem2 = "theeta";
    LinkedList_add(list, &elem2);
    int elem3 = 74;
    LinkedList_add(list, &elem3);

    ck_assert_int_eq(*(int*) LinkedList_get(list, 0), 1337);
    ck_assert_str_eq(*(char**) LinkedList_get(list, 1), "theeta");
    ck_assert_int_eq(*(int*) LinkedList_get(list, 2), 74);

    LinkedList_remove(list, 1);

    ck_assert_int_eq(*(int*) LinkedList_get(list, 0), 1337);
    ck_assert_int_eq(*(int*) LinkedList_get(list, 1), 74);
    ck_assert_int_eq(LinkedList_size(list), 2);
}
Ejemplo n.º 10
0
_Bool LinkedList_contains(LinkedList * self, void * to_check,  equalsFunction equals) {
	int size = *(self->size);
	void * var = NULL;

	for (int i=1; i <= size; i++) {

		var = LinkedList_get(self, i);

		if ((*equals)(var, to_check))
			return true;
	}

	return false;
}