Initial commit

This commit is contained in:
2025-09-02 10:27:53 +02:00
commit abb9f8ccde
30 changed files with 1423 additions and 0 deletions

58
test/argp.test.c Normal file
View File

@@ -0,0 +1,58 @@
/* argp.test.c */
#include <argp.h>
#include "../lib/libtap.h"
#include "../lib/macros.h"
// Define the structure to store the arguments
struct arguments {
int port;
int timeout;
};
// Define the argument parser
static struct argp_option options[] = {
{"port", 'p', "PORT", 0, "Port number"},
{"timeout", 't', "TIMEOUT", 0, "Timeout in seconds"},
{0}
};
static error_t parse_opt(int key, char* arg, struct argp_state* state) {
struct arguments* arguments = state->input;
switch (key) {
case 'p':
arguments->port = atoi(arg);
break;
case 't':
arguments->timeout = atoi(arg);
break;
default:
return ARGP_ERR_UNKNOWN;
}
return 0;
}
static struct argp argp = { options, parse_opt, 0, 0 };
void run_argp_tests(int argc, char* argv[], char* env[]) {
printf("\033[0;35m--Tests for parsing CL args--\033[0;0m\n");
/* Unit tests for parsing console arguments */
struct arguments args;
// Set default values for the arguments
args.port = 8080;
args.timeout = 10;
dbg("defaults(Arguments { port: 8080, timeout: 10 })\n", NULL);
// Parse the arguments
argp_parse(&argp, argc, argv, 0, 0, &args);
dbg("parsed(Arguments { port: %d, timeout: %d })\n", args.port, args.timeout);
ok(args.port == 6060, "Arg `port` is `6060`");
ok(args.timeout == 500, "Arg `timeout` is `500`");
}

42
test/main.test.c Normal file
View File

@@ -0,0 +1,42 @@
/* main.test.c */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "main.test.h"
#include "../lib/libtap.h"
#include "../lib/macros.h"
int main(int argc, char* argv[], char* env[]) {
srand(time(NULL));
/* Debug log: argv variables */
dbg("argc:\t%d\n", argc);
dbg("argv:\t", NULL);
for (int i = 0; i < argc; i++) dbg_no_info("%s ", argv[i]);
dbg_no_info("\n", NULL);
/* Debug log: env variables */
dbg("env:\t", NULL);
int colors[] = { 31, 32, 33, 34, 35 };
int colors_len = 4;
int colors_i = 0;
for (int i = 0; env[i] != NULL; i++) {
dbg_no_info("\033[0;%dm%s\033[0;0m ", colors[colors_i], env[i]);
colors_i = colors_i == colors_len ? 0 : colors_i + 1;
}
dbg_no_info("\n", NULL);
/* Initialize unit tests */
plan(2);
dbg("Running `run_argp_tests`\n", NULL);
run_argp_tests(argc, argv, env);
done_testing();
return 0;
}

7
test/main.test.h Normal file
View File

@@ -0,0 +1,7 @@
/* main.test.h */
#ifndef TESTS_H
#define TESTS_H
void run_argp_tests(int argc, char* argv[], char* env[]);
#endif