void spend_time() { char *str = "STR"; astr *as; int i; as = astr_create(str); for(i = 0; i < 10000; i++) { astr_append(as, str); } astr_free(as); }
int main(void) { astr as1, as2, as3; int i; as1 = astr_new(); astr_assign_cstr(as1, " world"); astr_prepend_cstr(as1, "hello"); astr_append_char(as1, '!'); assert_eq(as1, "hello world!"); as3 = astr_substr(as1, 6, 5); assert_eq(as3, "world"); as2 = astr_new(); astr_assign_cstr(as2, " "); astr_prepend_cstr(as2, "The"); astr_append(as2, as3); astr_append_char(as2, '.'); assert_eq(as2, "The world."); astr_delete(as3); as3 = astr_substr(as1, -6, 5); assert_eq(as3, "world"); astr_assign_cstr(as1, "12345"); astr_delete(as2); as2 = astr_left(as1, 10); assert_eq(as2, "12345"); astr_delete(as2); as2 = astr_left(as1, 3); assert_eq(as2, "123"); astr_delete(as2); as2 = astr_right(as1, 10); assert_eq(as2, "12345"); astr_delete(as2); as2 = astr_right(as1, 3); assert_eq(as2, "345"); astr_assign_cstr(as1, "12345"); astr_insert_cstr(as1, 3, "mid"); astr_insert_cstr(as1, 0, "begin"); astr_insert_cstr(as1, 100, "end"); assert_eq(as1, "begin123mid45end"); astr_assign_cstr(as1, "12345"); astr_insert_char(as1, -2, 'x'); astr_insert_char(as1, -10, 'y'); astr_insert_char(as1, 10, 'z'); assert_eq(as1, "y123x45z"); astr_assign_cstr(as1, "12345"); astr_delete(as2); as2 = astr_substr(as1, -2, 5); assert_eq(as2, "45"); astr_assign_cstr(as1, "12345"); astr_delete(as2); as2 = astr_substr(as1, -10, 5); assert_eq(as2, "12345"); astr_assign_cstr(as1, "1234567"); astr_replace_cstr(as1, -4, 2, "foo"); assert_eq(as1, "123foo67"); astr_assign_cstr(as1, "1234567"); astr_replace_cstr(as1, 1, 3, "foo"); assert_eq(as1, "1foo567"); astr_assign_cstr(as1, "1234567"); astr_replace_cstr(as1, -1, 5, "foo"); assert_eq(as1, "123456foo"); astr_assign_cstr(as1, "1234567"); astr_remove(as1, 4, 10); assert_eq(as1, "1234"); astr_assign_cstr(as1, "abc def de ab cd ab de fg"); while ((i = astr_find_cstr(as1, "de")) >= 0) astr_replace_cstr(as1, i, 2, "xxx"); assert_eq(as1, "abc xxxf xxx ab cd ab xxx fg"); while ((i = astr_find_cstr(as1, "ab")) >= 0) astr_remove(as1, i, 2); assert_eq(as1, "c xxxf xxx cd xxx fg"); while ((i = astr_find_cstr(as1, " ")) >= 0) astr_replace_char(as1, i, 2, ' '); assert_eq(as1, "c xxxf xxx cd xxx fg"); astr_fill(as1, 'x', 3); assert_eq(as1, "xxx"); astr_fmt(as1, "%s * %d = ", "5", 3); astr_afmt(as1, "%d", 15); assert_eq(as1, "5 * 3 = 15"); printf("Input one string: "); fflush(stdout); astr_fgets(as1, stdin); printf("You wrote: \"%s\"\n", astr_cstr(as1)); astr_delete(as1); astr_delete(as2); astr_delete(as3); printf("astr test successful.\n"); return 0; }