static void test_substring_negative(void) { char *new_string = StringSubstring("abcdef", 6, -3, -1); assert_string_equal(new_string, "de"); free(new_string); }
static void test_substring_positive(void) { char *new_string = StringSubstring("abcdef", 6, 2, 3); assert_string_equal(new_string, "cde"); free(new_string); }
static void test_substring_overshoot(void) { char *new_string = StringSubstring("abcdef", 6, 0, 10); assert_string_equal(new_string, "abcdef"); free(new_string); }
static void test_substring_negative_length(void **state) { char *new_string = StringSubstring("abcdef", 6, 2, -1); assert_string_equal(new_string, "cde"); free(new_string); }
void VarRefSetMeta(VarRef *ref, bool enabled) { if (enabled) { if (!VarRefIsMeta(ref)) { char *tmp = ref->scope; memcpy(ref->scope, StringConcatenate(2, ref->scope, "_meta"), sizeof(char*)); free(tmp); } } else { if (VarRefIsMeta(ref)) { char *tmp = ref->scope; size_t len = strlen(ref->scope); memcpy(ref->scope, StringSubstring(ref->scope, len, 0, len - strlen("_meta")), sizeof(char*)); free(tmp); } } ref->hash = VarRefHash(ref); }
static void test_substring_evil(void) { char *new_string = StringSubstring("abcdef", 6, 4, -4); assert_int_equal(new_string, NULL); }