#include #include #include #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); }