152 lines
3.4 KiB
C++
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;
|
||
|
|
}
|