aboutsummaryrefslogtreecommitdiff
path: root/tests/tests.c
blob: 450c6bd7c429103e81ce030e6826c0d5dab099e8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#define LS_TEST_IMPLEMENTATION
#include "ls_test.h"

#include "ls_args.h"

TEST_CASE(basic_args) {
    int help = 0;
    int test = 0;
    int no = 0;
    ls_args args;
    char* argv[] = { "./hello", "-h", "--test", NULL };
    int argc = sizeof(argv) / sizeof(*argv) - 1;

    ls_args_init(&args);
    ls_arg_bool(&args, &help, "h", "help", "Provides help", 0);
    ls_arg_bool(&args, &test, "t", "test", "A test argument", 0);
    ls_arg_bool(&args, &no, "n", "nope", "An argument that isn't present", 0);
    ASSERT(ls_args_parse(&args, argc, argv));
    ASSERT_EQ(help, 1, "%d");
    ASSERT_EQ(test, 1, "%d");
    ASSERT_EQ(no, 0, "%d");
    ls_args_free(&args);
    return 0;
}

TEST_CASE(string_args) {
    const char* input = NULL;
    const char* output = NULL;
    int verbose = 0;
    ls_args args;
    char* argv[] = { "./program", "--input", "file.txt", "-o", "output.txt", "-v", NULL };
    int argc = sizeof(argv) / sizeof(*argv) - 1;

    ls_args_init(&args);
    ls_arg_string(&args, &input, "i", "input", "Input file path", 0);
    ls_arg_string(&args, &output, "o", "output", "Output file path", 0);
    ls_arg_bool(&args, &verbose, "v", "verbose", "Verbose output", 0);
    ASSERT(ls_args_parse(&args, argc, argv));
    ASSERT(strcmp(input, "file.txt") == 0);
    ASSERT(strcmp(output, "output.txt") == 0);
    ASSERT_EQ(verbose, 1, "%d");
    ls_args_free(&args);
    return 0;
}

TEST_MAIN