summaryrefslogtreecommitdiff
path: root/tests/test_string.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_string.c')
-rw-r--r--tests/test_string.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/test_string.c b/tests/test_string.c
index 6446806..ef0e2a9 100644
--- a/tests/test_string.c
+++ b/tests/test_string.c
@@ -40,6 +40,17 @@ static void test_dynamic() {
upb_string_recycle(&str);
assert(str != NULL);
+ // Take a ref and recycle; should create a new string and release a ref
+ // on the old one.
+ upb_string *strcp = upb_string_getref(str);
+ assert(strcp == str);
+ assert(upb_atomic_read(&str->refcount) == 2);
+ upb_string_recycle(&str);
+ assert(strcp != str);
+ assert(upb_atomic_read(&str->refcount) == 1);
+ assert(upb_atomic_read(&strcp->refcount) == 1);
+ upb_string_unref(strcp);
+
upb_strcpyc(str, static_str);
assert(upb_string_len(str) == (sizeof(static_str) - 1));
const char *robuf = upb_string_getrobuf(str);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback