* SPDX-License-Identifier: MIT
* Copyright (c) Huawei Technologies Co., Ltd. 2025-2026. All rights reserved.
* Description: URMA dynamic string unit tests.
*/
#include "common_fixture.h"
using namespace urma_test_common;
TEST(UrmaCommonTest, DynamicStringCoversMutationAndOwnership)
{
struct dstring dstr = DSTRING_INITIALIZER;
EXPECT_EQ(0U, dstring_get_len(nullptr));
dstring_reset(nullptr);
dstring_clear(nullptr);
dstring_truncate(nullptr, 0);
dstring_destroy(nullptr);
EXPECT_EQ(nullptr, dstring_push_buf(nullptr, 1));
EXPECT_EQ(-1, dstring_put_cstring(nullptr, "x"));
EXPECT_EQ(-1, dstring_put_cstring(&dstr, nullptr));
dstring_put_char(nullptr, 'x');
EXPECT_EQ(nullptr, dstring_to_cstring(nullptr));
EXPECT_FALSE(dstring_chomp(nullptr, '\n'));
ASSERT_NE(nullptr, dstring_push_buf(&dstr, 3));
std::memcpy(dstr.string, "abc", 3);
EXPECT_STREQ("abc", dstring_to_cstring(&dstr));
EXPECT_EQ(3U, dstring_get_len(&dstr));
dstring_put_char(&dstr, 'd');
EXPECT_EQ(0, dstring_put_cstring(&dstr, "ef"));
dstring_printf(&dstr, "-%u-%s", 7U, "tail");
EXPECT_STREQ("abcdef-7-tail", dstring_to_cstring(&dstr));
EXPECT_TRUE(dstring_chomp(&dstr, 'l'));
EXPECT_FALSE(dstring_chomp(&dstr, 'z'));
dstring_truncate(&dstr, 4);
EXPECT_STREQ("abcd", dstring_to_cstring(&dstr));
dstring_clear(&dstr);
EXPECT_EQ(0U, dstring_get_len(&dstr));
EXPECT_STREQ("", dstring_to_cstring(&dstr));
dstring_put_cstring(&dstr, "owned");
char *owned = dstring_pealing(&dstr);
ASSERT_NE(nullptr, owned);
EXPECT_STREQ("owned", owned);
EXPECT_EQ(0U, dstring_get_len(&dstr));
std::free(owned);
dstring_destroy(&dstr);
}