Index: runtime/vm/unicode_test.cc |
diff --git a/runtime/vm/unicode_test.cc b/runtime/vm/unicode_test.cc |
index f2ce998d6467e3d19a828b4cea67d33a83bdfd1f..0af271cd22d754df2b8a761d7fae454491b551db 100644 |
--- a/runtime/vm/unicode_test.cc |
+++ b/runtime/vm/unicode_test.cc |
@@ -8,6 +8,25 @@ |
namespace dart { |
+TEST_CASE(Utf8Encode) { |
+ const intptr_t kInputLen = 3; |
+ const uint16_t kInput[kInputLen] = {0xe6, 0xe7, 0xe8}; // æøå |
+ const String& input = String::Handle(String::FromUTF16(kInput, kInputLen)); |
+ static const uintptr_t kBufferLength = 10; |
+ unsigned char buffer[kBufferLength]; |
+ for (uintptr_t i = 0; i < kBufferLength; i++) { |
+ buffer[i] = 42; |
+ } |
+ Utf8::Encode(input, reinterpret_cast<char*>(&buffer[0]), 10); |
+ uintptr_t i; |
+ for (i = 0; i < static_cast<uintptr_t>(Utf8::Length(input)); i++) { |
+ EXPECT(buffer[i] > 127); |
+ } |
+ for (; i < kBufferLength; i++) { |
+ EXPECT(buffer[i] == 42); |
+ } |
+} |
+ |
TEST_CASE(Utf8Decode) { |
// Examples from the Unicode specification, chapter 3 |
{ |