2.0.0-rc (#9)
### Issues
* \#1 \[bug\] Unable to mount S3 due to 'item_not_found' exception
* \#2 Require bucket name for S3 mounts
* \#3 \[bug\] File size is not being updated in S3 mount
* \#4 Upgrade to libfuse-3.x.x
* \#5 Switch to renterd for Sia support
* \#6 Switch to cpp-httplib to further reduce dependencies
* \#7 Remove global_data and calculate used disk space per provider
* \#8 Switch to libcurl for S3 mount support
### Changes from v1.x.x
* Added read-only encrypt provider
* Pass-through mount point that transparently encrypts source data using `XChaCha20-Poly1305`
* Added S3 encryption support via `XChaCha20-Poly1305`
* Added replay protection to remote mounts
* Added support base64 writes in remote FUSE
* Created static linked Linux binaries for `amd64` and `aarch64` using `musl-libc`
* Removed legacy Sia renter support
* Removed Skynet support
* Fixed multiple remote mount WinFSP API issues on \*NIX servers
* Implemented chunked read and write
* Writes for non-cached files are performed in chunks of 8Mib
* Removed `repertory-ui` support
* Removed `FreeBSD` support
* Switched to `libsodium` over `CryptoPP`
* Switched to `XChaCha20-Poly1305` for remote mounts
* Updated `GoogleTest` to v1.14.0
* Updated `JSON for Modern C++` to v3.11.2
* Updated `OpenSSL` to v1.1.1w
* Updated `RocksDB` to v8.5.3
* Updated `WinFSP` to 2023
* Updated `boost` to v1.78.0
* Updated `cURL` to v8.3.0
* Updated `zlib` to v1.3
* Use `upload_manager` for all providers
* Adds a delay to uploads to prevent excessive API calls
* Supports re-upload after mount restart for incomplete uploads
* NOTE: Uploads for all providers are full file (no resume support)
* Multipart upload support is planned for S3
Reviewed-on: #9
This commit is contained in:
153
3rd_party/pugixml/tests/test_unicode.cpp
vendored
Normal file
153
3rd_party/pugixml/tests/test_unicode.cpp
vendored
Normal file
@@ -0,0 +1,153 @@
|
||||
#ifndef PUGIXML_NO_STL
|
||||
|
||||
#include "test.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
using namespace pugi;
|
||||
|
||||
// letters taken from http://www.utf8-chartable.de/
|
||||
|
||||
TEST(as_wide_empty)
|
||||
{
|
||||
CHECK(as_wide("") == L"");
|
||||
}
|
||||
|
||||
TEST(as_wide_valid_basic)
|
||||
{
|
||||
// valid 1-byte, 2-byte and 3-byte inputs
|
||||
#ifdef U_LITERALS
|
||||
CHECK(as_wide("?\xd0\x80\xe2\x80\xbd") == L"?\u0400\u203D");
|
||||
#else
|
||||
CHECK(as_wide("?\xd0\x80\xe2\x80\xbd") == L"?\x0400\x203D");
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(as_wide_valid_astral)
|
||||
{
|
||||
// valid 4-byte input
|
||||
std::basic_string<wchar_t> b4 = as_wide("\xf2\x97\x98\xa4 \xf4\x80\x8f\xbf");
|
||||
|
||||
size_t wcharsize = sizeof(wchar_t);
|
||||
|
||||
if (wcharsize == 4)
|
||||
{
|
||||
CHECK(b4.size() == 3 && b4[0] == wchar_cast(0x97624) && b4[1] == L' ' && b4[2] == wchar_cast(0x1003ff));
|
||||
}
|
||||
else
|
||||
{
|
||||
CHECK(b4.size() == 5 && b4[0] == wchar_cast(0xda1d) && b4[1] == wchar_cast(0xde24) && b4[2] == L' ' && b4[3] == wchar_cast(0xdbc0) && b4[4] == wchar_cast(0xdfff));
|
||||
}
|
||||
}
|
||||
|
||||
TEST(as_wide_invalid)
|
||||
{
|
||||
// invalid 1-byte input
|
||||
CHECK(as_wide("a\xb0") == L"a");
|
||||
CHECK(as_wide("a\xb0_") == L"a_");
|
||||
|
||||
// invalid 2-byte input
|
||||
CHECK(as_wide("a\xc0") == L"a");
|
||||
CHECK(as_wide("a\xd0") == L"a");
|
||||
CHECK(as_wide("a\xc0_") == L"a_");
|
||||
CHECK(as_wide("a\xd0_") == L"a_");
|
||||
|
||||
// invalid 3-byte input
|
||||
CHECK(as_wide("a\xe2\x80") == L"a");
|
||||
CHECK(as_wide("a\xe2") == L"a");
|
||||
CHECK(as_wide("a\xe2\x80_") == L"a_");
|
||||
CHECK(as_wide("a\xe2_") == L"a_");
|
||||
|
||||
// invalid 4-byte input
|
||||
CHECK(as_wide("a\xf2\x97\x98") == L"a");
|
||||
CHECK(as_wide("a\xf2\x97") == L"a");
|
||||
CHECK(as_wide("a\xf2") == L"a");
|
||||
CHECK(as_wide("a\xf2\x97\x98_") == L"a_");
|
||||
CHECK(as_wide("a\xf2\x97_") == L"a_");
|
||||
CHECK(as_wide("a\xf2_") == L"a_");
|
||||
|
||||
// invalid 5-byte input
|
||||
std::basic_string<wchar_t> b5 = as_wide("\xf8\nbcd");
|
||||
CHECK(b5 == L"\nbcd");
|
||||
}
|
||||
|
||||
TEST(as_wide_string)
|
||||
{
|
||||
std::string s = "abcd";
|
||||
|
||||
CHECK(as_wide(s) == L"abcd");
|
||||
}
|
||||
|
||||
TEST(as_utf8_empty)
|
||||
{
|
||||
CHECK(as_utf8(L"") == "");
|
||||
}
|
||||
|
||||
TEST(as_utf8_valid_basic)
|
||||
{
|
||||
// valid 1-byte, 2-byte and 3-byte outputs
|
||||
#ifdef U_LITERALS
|
||||
CHECK(as_utf8(L"?\u0400\u203D") == "?\xd0\x80\xe2\x80\xbd");
|
||||
#else
|
||||
CHECK(as_utf8(L"?\x0400\x203D") == "?\xd0\x80\xe2\x80\xbd");
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(as_utf8_valid_astral)
|
||||
{
|
||||
// valid 4-byte output
|
||||
size_t wcharsize = sizeof(wchar_t);
|
||||
|
||||
if (wcharsize == 4)
|
||||
{
|
||||
std::basic_string<wchar_t> s;
|
||||
s.resize(3);
|
||||
s[0] = wchar_cast(0x97624);
|
||||
s[1] = ' ';
|
||||
s[2] = wchar_cast(0x1003ff);
|
||||
|
||||
CHECK(as_utf8(s.c_str()) == "\xf2\x97\x98\xa4 \xf4\x80\x8f\xbf");
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef U_LITERALS
|
||||
CHECK(as_utf8(L"\uda1d\ude24 \udbc0\udfff") == "\xf2\x97\x98\xa4 \xf4\x80\x8f\xbf");
|
||||
#else
|
||||
CHECK(as_utf8(L"\xda1d\xde24 \xdbc0\xdfff") == "\xf2\x97\x98\xa4 \xf4\x80\x8f\xbf");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
TEST(as_utf8_invalid)
|
||||
{
|
||||
size_t wcharsize = sizeof(wchar_t);
|
||||
|
||||
if (wcharsize == 2)
|
||||
{
|
||||
// check non-terminated degenerate handling
|
||||
#ifdef U_LITERALS
|
||||
CHECK(as_utf8(L"a\uda1d") == "a");
|
||||
CHECK(as_utf8(L"a\uda1d_") == "a_");
|
||||
#else
|
||||
CHECK(as_utf8(L"a\xda1d") == "a");
|
||||
CHECK(as_utf8(L"a\xda1d_") == "a_");
|
||||
#endif
|
||||
|
||||
// check incorrect leading code
|
||||
#ifdef U_LITERALS
|
||||
CHECK(as_utf8(L"a\ude24") == "a");
|
||||
CHECK(as_utf8(L"a\ude24_") == "a_");
|
||||
#else
|
||||
CHECK(as_utf8(L"a\xde24") == "a");
|
||||
CHECK(as_utf8(L"a\xde24_") == "a_");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
TEST(as_utf8_string)
|
||||
{
|
||||
std::basic_string<wchar_t> s = L"abcd";
|
||||
|
||||
CHECK(as_utf8(s) == "abcd");
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user