ddnet/src/test/json.cpp
heinrich5991 8d04e7e5e1 Share libcurl resources across requests
Use the libcurl-share interface to share DNS cache and connections
between different requests.

If compiled with OpenSSL, libcurl can only be safely used from multiple
threads for OpenSSL >= 1.1.0, but this problem is not newly introduced
by this commit: According to libcurl-thread(3):

>OpenSSL <= 1.0.2 the user must set callbacks.
>
>https://www.openssl.org/docs/man1.0.2/crypto/threads.html#DESCRIPTION
>
>https://curl.haxx.se/libcurl/c/opensslthreadlock.html
2018-07-11 20:17:21 +02:00

23 lines
797 B
C++

#include <gtest/gtest.h>
#include <engine/shared/http.h>
TEST(Json, Escape)
{
char aBuf[128];
char aSmall[2];
char aSix[6];
EXPECT_STREQ(EscapeJson(aBuf, sizeof(aBuf), ""), "");
EXPECT_STREQ(EscapeJson(aBuf, sizeof(aBuf), "a"), "a");
EXPECT_STREQ(EscapeJson(aBuf, sizeof(aBuf), "\n"), "\\n");
EXPECT_STREQ(EscapeJson(aBuf, sizeof(aBuf), "\\"), "\\\\"); // https://www.xkcd.com/1638/
EXPECT_STREQ(EscapeJson(aBuf, sizeof(aBuf), "\x1b"), "\\u001b"); // escape
EXPECT_STREQ(EscapeJson(aBuf, sizeof(aBuf), ""), "");
EXPECT_STREQ(EscapeJson(aBuf, sizeof(aBuf), "😂"), "😂");
// Truncations
EXPECT_STREQ(EscapeJson(aSmall, sizeof(aSmall), "\\"), "");
EXPECT_STREQ(EscapeJson(aSix, sizeof(aSix), "\x01"), "");
EXPECT_STREQ(EscapeJson(aSix, sizeof(aSix), "aaaaaa"), "aaaaa");
}