143 lines
3.2 KiB
C
143 lines
3.2 KiB
C
#include <criterion/criterion.h>
|
|
#include <criterion/new/assert.h>
|
|
|
|
#include "../../../src/expansion/expansion.h"
|
|
|
|
TestSuite(parse_var_name);
|
|
|
|
Test(parse_var_name, basic_variable)
|
|
{
|
|
char *input = "$MY_VAR";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 7);
|
|
cr_expect_str_eq(extracted_var, "MY_VAR");
|
|
free(extracted_var);
|
|
}
|
|
|
|
Test(parse_var_name, multi_basic_variable)
|
|
{
|
|
char *input = "$MY$VAR";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 3);
|
|
cr_expect_str_eq(extracted_var, "MY");
|
|
free(extracted_var);
|
|
|
|
input += r;
|
|
r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 4);
|
|
cr_expect_str_eq(extracted_var, "VAR");
|
|
free(extracted_var);
|
|
}
|
|
|
|
Test(parse_var_name, variable_with_braces)
|
|
{
|
|
char *input = "${MY_VAR}";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 9);
|
|
cr_expect_str_eq(extracted_var, "MY_VAR");
|
|
free(extracted_var);
|
|
}
|
|
|
|
Test(parse_var_name, special_variable)
|
|
{
|
|
char *input = "$1";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 2);
|
|
cr_expect_str_eq(extracted_var, "1");
|
|
free(extracted_var);
|
|
}
|
|
|
|
Test(parse_var_name, special_variable_with_braces)
|
|
{
|
|
char *input = "${1}";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 4);
|
|
cr_expect_str_eq(extracted_var, "1");
|
|
free(extracted_var);
|
|
}
|
|
|
|
Test(parse_var_name, incomplete_braces)
|
|
{
|
|
char *input = "${MY_VAR";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 0);
|
|
cr_expect(extracted_var == NULL);
|
|
}
|
|
|
|
Test(parse_var_name, empty_braces)
|
|
{
|
|
char *input = "${}";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 0);
|
|
cr_expect(extracted_var == NULL);
|
|
}
|
|
|
|
Test(parse_var_name, dollar_sign_only)
|
|
{
|
|
char *input = "$";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 0);
|
|
cr_expect(extracted_var == NULL);
|
|
}
|
|
|
|
Test(parse_var_name, variable_followed_by_dollar)
|
|
{
|
|
char *input = "$MY$VAR$";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 3);
|
|
cr_expect_str_eq(extracted_var, "MY");
|
|
free(extracted_var);
|
|
|
|
input += r;
|
|
r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 4);
|
|
cr_expect_str_eq(extracted_var, "VAR");
|
|
free(extracted_var);
|
|
|
|
input += r;
|
|
r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 0);
|
|
cr_expect(extracted_var == NULL);
|
|
}
|
|
|
|
Test(parse_var_name, special_variable_followed_by_text)
|
|
{
|
|
char *input = "$1VAR";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 2);
|
|
cr_expect_str_eq(extracted_var, "1");
|
|
free(extracted_var);
|
|
}
|
|
|
|
Test(parse_var_name, bad_variable_with_braces)
|
|
{
|
|
char *input = "${1VAR}";
|
|
char *extracted_var = NULL;
|
|
size_t r = parse_var_name(input, &extracted_var);
|
|
|
|
cr_expect(r == 0);
|
|
cr_expect(extracted_var == NULL);
|
|
}
|