pico-http/llist/test.c
Andrew Gundersen 9904bd2212 init commit
2022-05-02 08:00:44 -05:00

83 lines
No EOL
1.6 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "llist.h"
typedef struct
{
char* name;
char* team;
int age;
}
Player;
Player* create_player(char* name, char* team, int age)
{
Player* p = malloc(sizeof(*p));
p->team = strdup(team);
p->name = strdup(name);
p->age = age;
return p;
}
int find_player(void* data, void* arg)
{
Player* player = data;
return strcmp(player->name, (char*) arg);
}
int change_team(void* data, void* arg)
{
Player* player = data;
player->team = (char*) arg;
return 0;
}
int main(void)
{
puts("Creating new linked list...");
LL* ll = ll_create();
puts("Pushing some data...");
Player* lebron = create_player("Lebron James", "Lakers", 37);
Player* giannis = create_player("Giannis Antetokounmpo", "Bucks", 27);
ll_push(ll, lebron);
ll_push(ll, giannis);
puts("Finding the data that was pushed...");
assert(ll_search(ll, find_player, "Lebron James") == lebron);
puts("Appending some data...");
Player* kd = create_player("Kevin Durant", "Nets", 33);
ll_append(ll, kd);
puts("Finding the data that was appended...");
assert(ll_search(ll, find_player, "Kevin Durant") == kd);
puts("Looping over linked list and applying change...");
ll_loop(ll, change_team, "Bucks");
Player* kd_ref = ll_search(ll, find_player, "Kevin Durant");
assert(strcmp(kd_ref->team, "Bucks") == 0);
puts("Deleting data from linked list...");
ll_delete(ll, find_player, "Lebron James");
assert(ll_search(ll, find_player, "Lebron James") == NULL);
puts("Tests complete!");
return 0;
}