mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
ab3b2be7bf
Summary: Add some functions for validating and producing valid UTF-8 to be used in an upcoming diff. Reviewed By: fanzeyi Differential Revision: D21890510 fbshipit-source-id: b25144a34f1df91c72e8ed776b1ee7c1d68344c8
45 lines
1017 B
C++
45 lines
1017 B
C++
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This software may be used and distributed according to the terms of the
|
|
* GNU General Public License version 2.
|
|
*/
|
|
|
|
#include "eden/fs/utils/Utf8.h"
|
|
#include <gtest/gtest.h>
|
|
|
|
using namespace facebook::eden;
|
|
|
|
namespace {
|
|
constexpr folly::StringPiece kValidStrings[] = {
|
|
"",
|
|
"abcdef",
|
|
"\0foo\n\0",
|
|
};
|
|
}
|
|
|
|
TEST(Utf8Test, isValidUtf8) {
|
|
for (auto str : kValidStrings) {
|
|
EXPECT_TRUE(isValidUtf8(str));
|
|
}
|
|
|
|
EXPECT_FALSE(isValidUtf8("\xff"));
|
|
// overlong
|
|
EXPECT_FALSE(isValidUtf8("\xF0\x82\x82\xAC"));
|
|
EXPECT_FALSE(isValidUtf8("\xA0prefix\xB0"));
|
|
}
|
|
|
|
TEST(Utf8String, ensureValidUtf8) {
|
|
for (auto str : kValidStrings) {
|
|
EXPECT_EQ(str, ensureValidUtf8(str));
|
|
}
|
|
|
|
EXPECT_EQ(u8"\uFFFD", ensureValidUtf8("\xff"));
|
|
// overlong
|
|
EXPECT_EQ(
|
|
u8"foo\uFFFD\uFFFD\uFFFD\uFFFDbar",
|
|
ensureValidUtf8("foo\xF0\x82\x82\xAC"
|
|
"bar"));
|
|
EXPECT_EQ(u8"\uFFFDprefix\uFFFD", ensureValidUtf8("\xA0prefix\xB0"));
|
|
}
|