refactor(build): add static_library
This commit is contained in:
@@ -1,49 +1,49 @@
|
||||
#include <assert.h>
|
||||
|
||||
#include "../../queue/myqueue.h"
|
||||
|
||||
void test_q1(void) {
|
||||
/* Allocate a new queue */
|
||||
queue_s *queue = queue_new(3, sizeof(int));
|
||||
assert(queue != NULL);
|
||||
|
||||
int val, out;
|
||||
|
||||
/* Push value to the ring buffer */
|
||||
val = 1;
|
||||
assert(queue_push(queue, &val) == 0);
|
||||
|
||||
val = 2;
|
||||
assert(queue_push(queue, &val) == 0);
|
||||
|
||||
/* Retrieve values */
|
||||
int front, rear;
|
||||
assert(queue_get_front(queue, &front) == 0);
|
||||
assert(queue_get_rear(queue, &rear) == 0);
|
||||
assert(front == 1);
|
||||
assert(rear == 2);
|
||||
|
||||
/* Remove an element from the buffer */
|
||||
assert(queue_pop(queue, &out) == 0);
|
||||
assert(out == 1);
|
||||
|
||||
assert(queue_get_front(queue, &front) == 0);
|
||||
assert(front == 2);
|
||||
|
||||
val = 3;
|
||||
assert(queue_push(queue, &val) == 0);
|
||||
|
||||
assert(queue_get_rear(queue, &rear) == 0);
|
||||
assert(rear == 3);
|
||||
|
||||
val = 4;
|
||||
assert(queue_push(queue, &val) == 0);
|
||||
|
||||
/* Clear queue */
|
||||
while (queue_pop(queue, &out) == 0) {
|
||||
}
|
||||
assert(queue->size == 0);
|
||||
|
||||
/* Deallocate memory */
|
||||
queue_free(queue);
|
||||
}
|
||||
#include <assert.h>
|
||||
|
||||
#include "../../queue/myqueue.h"
|
||||
|
||||
void test_queue1(void) {
|
||||
/* Allocate a new queue */
|
||||
queue_s *queue = queue_new(3, sizeof(int));
|
||||
assert(queue != NULL);
|
||||
|
||||
int val, out;
|
||||
|
||||
/* Push value to the ring buffer */
|
||||
val = 1;
|
||||
assert(queue_push(queue, &val) == 0);
|
||||
|
||||
val = 2;
|
||||
assert(queue_push(queue, &val) == 0);
|
||||
|
||||
/* Retrieve values */
|
||||
int front, rear;
|
||||
assert(queue_get_front(queue, &front) == 0);
|
||||
assert(queue_get_rear(queue, &rear) == 0);
|
||||
assert(front == 1);
|
||||
assert(rear == 2);
|
||||
|
||||
/* Remove an element from the buffer */
|
||||
assert(queue_pop(queue, &out) == 0);
|
||||
assert(out == 1);
|
||||
|
||||
assert(queue_get_front(queue, &front) == 0);
|
||||
assert(front == 2);
|
||||
|
||||
val = 3;
|
||||
assert(queue_push(queue, &val) == 0);
|
||||
|
||||
assert(queue_get_rear(queue, &rear) == 0);
|
||||
assert(rear == 3);
|
||||
|
||||
val = 4;
|
||||
assert(queue_push(queue, &val) == 0);
|
||||
|
||||
/* Clear queue */
|
||||
while (queue_pop(queue, &out) == 0) {
|
||||
}
|
||||
assert(queue->size == 0);
|
||||
|
||||
/* Deallocate memory */
|
||||
queue_free(queue);
|
||||
}
|
||||
40
test/socket/socket1.c
Normal file
40
test/socket/socket1.c
Normal file
@@ -0,0 +1,40 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../../socket/mysocket.h"
|
||||
|
||||
void test_socket1() {
|
||||
sock_platform_init();
|
||||
|
||||
struct addrinfo hints, *res, *p;
|
||||
char ipstr[INET6_ADDRSTRLEN];
|
||||
memset(&hints, 0, sizeof hints);
|
||||
hints.ai_family = AF_UNSPEC;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
|
||||
char hostname[1024];
|
||||
printf("hostname> ");
|
||||
fscanf(stdin, "%s", hostname);
|
||||
|
||||
if (getaddrinfo(hostname, NULL, &hints, &res) != 0) {
|
||||
fprintf(stderr, "getaddrinfo()\n");
|
||||
sock_platform_shutdown();
|
||||
}
|
||||
|
||||
for (p = res; p != NULL; p = p->ai_next) {
|
||||
void *addr = 0;
|
||||
char *ipver = 0;
|
||||
struct sockaddr_in *ipv4;
|
||||
|
||||
if (p->ai_family == AF_INET) {
|
||||
ipv4 = (struct sockaddr_in *)p->ai_addr;
|
||||
addr = &(ipv4->sin_addr);
|
||||
ipver = "IPv4";
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
inet_ntop(p->ai_family, addr, ipstr, sizeof ipstr);
|
||||
printf("%s: %s\n", ipver, ipstr);
|
||||
}
|
||||
|
||||
sock_platform_shutdown();
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "../../stack/mystack.h"
|
||||
|
||||
void test_s1(void) {
|
||||
void test_stack1(void) {
|
||||
stack_s *stack = stack_new(32, sizeof(int));
|
||||
int num = 10;
|
||||
stack_push(stack, &num);
|
||||
19
test/test.c
19
test/test.c
@@ -7,15 +7,17 @@
|
||||
|
||||
void test_hm1(void);
|
||||
|
||||
void test_q1(void);
|
||||
void test_queue1(void);
|
||||
|
||||
void test_str1(void);
|
||||
void test_str2(void);
|
||||
void test_str3(void);
|
||||
|
||||
void test_v1(void);
|
||||
void test_vec1(void);
|
||||
|
||||
void test_s1(void);
|
||||
void test_stack1(void);
|
||||
|
||||
void test_socket1();
|
||||
|
||||
int main(void) {
|
||||
puts("==== [Running Hashmap tests] ====");
|
||||
@@ -24,7 +26,7 @@ int main(void) {
|
||||
puts("");
|
||||
|
||||
puts("==== [Running Queue tests] ====");
|
||||
test_q1();
|
||||
test_queue1();
|
||||
puts("OK!");
|
||||
puts("");
|
||||
|
||||
@@ -36,12 +38,17 @@ int main(void) {
|
||||
puts("");
|
||||
|
||||
puts("==== [Running Vector tests] ====");
|
||||
test_v1();
|
||||
test_vec1();
|
||||
puts("OK!");
|
||||
puts("");
|
||||
|
||||
puts("==== [Running Stack tests] ====");
|
||||
test_s1();
|
||||
test_stack1();
|
||||
puts("OK!");
|
||||
puts("");
|
||||
|
||||
puts("==== [Running Socket tests] ====");
|
||||
test_socket1();
|
||||
puts("OK!");
|
||||
puts("");
|
||||
|
||||
|
||||
@@ -1,80 +1,80 @@
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../../vector/myvector.h"
|
||||
|
||||
typedef struct my_elem {
|
||||
char name[32];
|
||||
int age;
|
||||
} my_elem_s;
|
||||
|
||||
/* Functions used to iterate for each vector's element */
|
||||
static void multiply(size_t index, void *elem) {
|
||||
my_elem_s *e = (my_elem_s *)elem;
|
||||
e->age = e->age * 2;
|
||||
}
|
||||
|
||||
/* Another way to use foreach
|
||||
static void print(size_t index, void *elem) {
|
||||
my_elem_s *e = (my_elem_s *)elem;
|
||||
printf("%s (%d)\n", e->name, e->age);
|
||||
}
|
||||
*/
|
||||
|
||||
/* Compare function used to sort */
|
||||
int my_cmp(const void *a, const void *b) {
|
||||
/* Sort by age */
|
||||
my_elem_s *ma = (my_elem_s *)a;
|
||||
my_elem_s *mb = (my_elem_s *)b;
|
||||
|
||||
return ma->age - mb->age;
|
||||
}
|
||||
|
||||
void test_v1() {
|
||||
/* Allocate a new vector */
|
||||
size_t elem_size = sizeof(my_elem_s);
|
||||
vec_s *v = vec_new(10, elem_size);
|
||||
assert(vec_size(v) == 0);
|
||||
assert(vec_cap(v) == 16);
|
||||
|
||||
/* Push an element */
|
||||
my_elem_s e1 = {
|
||||
.age = 21,
|
||||
.name = "John",
|
||||
};
|
||||
vec_push(v, &e1);
|
||||
assert(vec_size(v) == 1);
|
||||
|
||||
/* Retrieve an element (Remember to free) */
|
||||
my_elem_s *e1_v = (my_elem_s *)vec_get(v, 0);
|
||||
free(e1_v);
|
||||
|
||||
/* Pop last element (Remember to free) */
|
||||
my_elem_s *pop = (my_elem_s *)vec_pop(v);
|
||||
free(pop);
|
||||
|
||||
/* Insert an element */
|
||||
vec_push(v, &e1);
|
||||
e1.age = 25;
|
||||
vec_push(v, &e1);
|
||||
e1.age = 19;
|
||||
vec_insert(v, 2, &e1);
|
||||
my_elem_s last = {
|
||||
.age = 33,
|
||||
.name = "Last",
|
||||
};
|
||||
vec_push(v, &last);
|
||||
my_elem_s *lastv = (my_elem_s *)vec_pop(v);
|
||||
free(lastv);
|
||||
|
||||
/* Iterate for each element */
|
||||
vec_foreach(v, multiply);
|
||||
/* Print each element */
|
||||
// vec_foreach(v, print);
|
||||
|
||||
/* Sort */
|
||||
vec_sort(v, my_cmp);
|
||||
|
||||
/* Deallocate the vector */
|
||||
vec_free(v);
|
||||
}
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../../vector/myvector.h"
|
||||
|
||||
typedef struct my_elem {
|
||||
char name[32];
|
||||
int age;
|
||||
} my_elem_s;
|
||||
|
||||
/* Functions used to iterate for each vector's element */
|
||||
static void multiply(size_t index, void *elem) {
|
||||
my_elem_s *e = (my_elem_s *)elem;
|
||||
e->age = e->age * 2;
|
||||
}
|
||||
|
||||
/* Another way to use foreach
|
||||
static void print(size_t index, void *elem) {
|
||||
my_elem_s *e = (my_elem_s *)elem;
|
||||
printf("%s (%d)\n", e->name, e->age);
|
||||
}
|
||||
*/
|
||||
|
||||
/* Compare function used to sort */
|
||||
int my_cmp(const void *a, const void *b) {
|
||||
/* Sort by age */
|
||||
my_elem_s *ma = (my_elem_s *)a;
|
||||
my_elem_s *mb = (my_elem_s *)b;
|
||||
|
||||
return ma->age - mb->age;
|
||||
}
|
||||
|
||||
void test_vec1() {
|
||||
/* Allocate a new vector */
|
||||
size_t elem_size = sizeof(my_elem_s);
|
||||
vec_s *v = vec_new(10, elem_size);
|
||||
assert(vec_size(v) == 0);
|
||||
assert(vec_cap(v) == 16);
|
||||
|
||||
/* Push an element */
|
||||
my_elem_s e1 = {
|
||||
.age = 21,
|
||||
.name = "John",
|
||||
};
|
||||
vec_push(v, &e1);
|
||||
assert(vec_size(v) == 1);
|
||||
|
||||
/* Retrieve an element (Remember to free) */
|
||||
my_elem_s *e1_v = (my_elem_s *)vec_get(v, 0);
|
||||
free(e1_v);
|
||||
|
||||
/* Pop last element (Remember to free) */
|
||||
my_elem_s *pop = (my_elem_s *)vec_pop(v);
|
||||
free(pop);
|
||||
|
||||
/* Insert an element */
|
||||
vec_push(v, &e1);
|
||||
e1.age = 25;
|
||||
vec_push(v, &e1);
|
||||
e1.age = 19;
|
||||
vec_insert(v, 2, &e1);
|
||||
my_elem_s last = {
|
||||
.age = 33,
|
||||
.name = "Last",
|
||||
};
|
||||
vec_push(v, &last);
|
||||
my_elem_s *lastv = (my_elem_s *)vec_pop(v);
|
||||
free(lastv);
|
||||
|
||||
/* Iterate for each element */
|
||||
vec_foreach(v, multiply);
|
||||
/* Print each element */
|
||||
// vec_foreach(v, print);
|
||||
|
||||
/* Sort */
|
||||
vec_sort(v, my_cmp);
|
||||
|
||||
/* Deallocate the vector */
|
||||
vec_free(v);
|
||||
}
|
||||
Reference in New Issue
Block a user