#include #include #include #include #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; }