c-md/tests/cli/test_cli.c
2026-01-12 10:18:47 +01:00

162 lines
2.8 KiB
C

#include <criterion/criterion.h>
#include "cli.h"
Test(cli, parse_ext_short)
{
t_args args;
char *argv[] = {"c-md", "-e", "c"};
int8_t ret;
ret = cli_parse(&args, 3, argv);
cr_assert_eq(ret, 0);
cr_assert_not_null(args.ext);
cr_assert_str_eq(args.ext, "c");
cr_assert_eq(args.show_help, 0);
}
Test(cli, parse_ext_long)
{
t_args args;
char *argv[] = {"c-md", "--ext", "python"};
int8_t ret;
ret = cli_parse(&args, 3, argv);
cr_assert_eq(ret, 0);
cr_assert_not_null(args.ext);
cr_assert_str_eq(args.ext, "python");
}
/*
** TESTS: cli/cli.c - Input option
*/
Test(cli, parse_input_short)
{
t_args args;
char *argv[] = {"c-md", "-i", "input.md"};
int8_t ret;
ret = cli_parse(&args, 3, argv);
cr_assert_eq(ret, 0);
cr_assert_not_null(args.input);
cr_assert_str_eq(args.input, "input.md");
}
Test(cli, parse_input_long)
{
t_args args;
char *argv[] = {"c-md", "--input", "input.md"};
int8_t ret;
ret = cli_parse(&args, 3, argv);
cr_assert_eq(ret, 0);
cr_assert_not_null(args.input);
cr_assert_str_eq(args.input, "input.md");
}
/*
** TESTS: cli/cli.c - Output option
*/
Test(cli, parse_output)
{
t_args args;
char *argv[] = {"c-md", "-o", "output.c"};
int8_t ret;
ret = cli_parse(&args, 3, argv);
cr_assert_eq(ret, 0);
cr_assert_not_null(args.output);
cr_assert_str_eq(args.output, "output.c");
}
/*
** TESTS: cli/cli.c - Map option
*/
Test(cli, parse_map_short)
{
t_args args;
char *argv[] = {"c-md", "-m", "output.map"};
int8_t ret;
ret = cli_parse(&args, 3, argv);
cr_assert_eq(ret, 0);
cr_assert_not_null(args.map_path);
cr_assert_str_eq(args.map_path, "output.map");
}
Test(cli, parse_map_long)
{
t_args args;
char *argv[] = {"c-md", "--map", "output.map"};
int8_t ret;
ret = cli_parse(&args, 3, argv);
cr_assert_eq(ret, 0);
cr_assert_not_null(args.map_path);
cr_assert_str_eq(args.map_path, "output.map");
}
/*
** TESTS: cli/cli.c - Multiple arguments
*/
Test(cli, parse_multiple_args)
{
t_args args;
char *argv[] = {
"c-md", "-e", "c", "-i", "input.c.md",
"-o", "output.c", "-m", "output.map"
};
int8_t ret;
ret = cli_parse(&args, 9, argv);
cr_assert_eq(ret, 0);
cr_assert_str_eq(args.ext, "c");
cr_assert_str_eq(args.input, "input.c.md");
cr_assert_str_eq(args.output, "output.c");
cr_assert_str_eq(args.map_path, "output.map");
cr_assert_eq(args.show_help, 0);
}
/*
** TESTS: cli/cli.c - Edge cases
*/
Test(cli, parse_no_args)
{
t_args args;
char *argv[] = {"c-md"};
int8_t ret;
ret = cli_parse(&args, 1, argv);
cr_assert_eq(ret, 0);
cr_assert_null(args.ext);
cr_assert_null(args.input);
cr_assert_null(args.output);
cr_assert_null(args.map_path);
cr_assert_eq(args.show_help, 0);
}
//TODO: mute stderr
Test(cli, parse_invalid_arg)
{
t_args args;
char *argv[] = {"c-md", "-x"};
int8_t ret;
ret = cli_parse(&args, 2, argv);
cr_assert_neq(ret, 0);
}