This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
stellar-stellar/test/monitor/gtest_sds.cpp
2024-11-07 18:30:58 +08:00

152 lines
3.4 KiB
C++

#include <unistd.h>
#include <stddef.h>
#include <getopt.h>
#include <gtest/gtest.h>
#ifdef __cplusplus
extern "C"
{
#endif
#include "sds/sds.h"
#ifdef __cplusplus
}
#endif
TEST(MONITOR_SDS, sds_new)
{
sds s = sdsnew("hello, world!");
ASSERT_STREQ(s, "hello, world!");
ASSERT_EQ(sdslen(s), strlen("hello, world!"));
sdsfree(s);
}
TEST(MONITOR_SDS, sds_cat)
{
sds s = sdsempty();
ASSERT_EQ(sdslen(s), 0);
s = sdscat(s, "h");
ASSERT_EQ(sdslen(s), 1);
ASSERT_STREQ(s, "h");
s = sdscat(s, "ello");
ASSERT_EQ(sdslen(s), 5);
ASSERT_STREQ(s, "hello");
sdsfree(s);
}
TEST(MONITOR_SDS, sds_cat_printf)
{
sds s = sdsempty();
s = sdscatprintf(s, "%s", "hello");
ASSERT_STREQ(s, "hello");
s = sdscatprintf(s, "%s", ",world!");
ASSERT_STREQ(s, "hello,world!");
s = sdscatprintf(s, "%d", 200);
ASSERT_STREQ(s, "hello,world!200");
sdsfree(s);
}
TEST(MONITOR_SDS, sdstrim)
{
sds s = sdsnew("hello, world!\r\n");
ASSERT_STRNE(s, "hello, world!");
sds s1 = sdstrim(s, "\r\n");
ASSERT_STREQ(s1, "hello, world!");
sdsfree(s);
s = sdsnew("xxxhello, world!xxx\r\n");
s1 = sdstrim(s, "xxx\r\n");
ASSERT_STREQ(s1, "hello, world!");
sdsfree(s);
}
TEST(MONITOR_SDS, sdsrange)
{
sds s = sdsnew("1234567890");
ASSERT_STREQ(s, "1234567890");
ASSERT_EQ(10, sdslen(s));
sdsrange(s, 0, 1);
ASSERT_EQ(2, sdslen(s));
ASSERT_STREQ(s, "12");
sdsfree(s);
}
TEST(MONITOR_SDS, sdscpylen)
{
sds s = sdsnew("1234567890");
ASSERT_EQ(10, sdslen(s));
sds s1 = sdscpylen(s, "abc", 3);
ASSERT_STRNE(s1, "1234567890abc");
sdsfree(s1);
}
TEST(MONITOR_SDS, sdssplitargs)
{
int argc = 0;
sds *array = sdssplitargs("a b c d e f g", &argc);
ASSERT_EQ(argc, 7);
ASSERT_STREQ(array[0], "a");
ASSERT_STREQ(array[1], "b");
ASSERT_STREQ(array[2], "c");
ASSERT_STREQ(array[3], "d");
ASSERT_STREQ(array[4], "e");
ASSERT_STREQ(array[5], "f");
ASSERT_STREQ(array[6], "g");
sdsfreesplitres(array, argc);
array = sdssplitargs("show", &argc);
ASSERT_EQ(argc, 1);
ASSERT_STREQ(array[0], "show");
sdsfreesplitres(array, argc);
array = sdssplitargs("show ", &argc);
ASSERT_EQ(argc, 1);
ASSERT_STREQ(array[0], "show");
sdsfreesplitres(array, argc);
array = sdssplitargs("", &argc);
ASSERT_EQ(argc, 0);
sdsfreesplitres(array, argc);
}
TEST(MONITOR_SDS, sdssplitlen)
{
int count = 0;
const char *sep = "&";
const char *request_url = "key1=value1&key2=value2&key3=value3";
sds *array = sdssplitlen(request_url, strlen(request_url), sep, 1, &count);
ASSERT_EQ(count, 3);
ASSERT_STREQ(array[0], "key1=value1");
ASSERT_STREQ(array[1], "key2=value2");
ASSERT_STREQ(array[2], "key3=value3");
int key1_cnt;
sds *key1_array = sdssplitlen(array[0], sdslen(array[0]), "=", 1, &key1_cnt);
ASSERT_EQ(key1_cnt, 2);
ASSERT_STREQ(key1_array[0], "key1");
ASSERT_STREQ(key1_array[1], "value1");
sdsfreesplitres(key1_array, key1_cnt);
sdsfreesplitres(array, count);
}
TEST(MONITOR_SDS, sdsIncrLen)
{
sds s = sdsnew("hello, world!\r\n");
ASSERT_EQ(sdslen(s), 15);
sdsIncrLen(s, -2);
ASSERT_EQ(sdslen(s), 13);
EXPECT_STREQ(s, "hello, world!");
sdsfree(s);
}
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
int ret = RUN_ALL_TESTS();
return ret;
}