Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(254)

Unified Diff: runtime/vm/unicode_test.cc

Issue 11280150: Add support for surrogates when serializing and deserializing for native ports (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Use iterator reset Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« runtime/vm/unicode.cc ('K') | « runtime/vm/unicode.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/unicode_test.cc
diff --git a/runtime/vm/unicode_test.cc b/runtime/vm/unicode_test.cc
index 582a2a6f507095612468224483005b3f83345cec..6bb96a6aa7a3aef7f0bed9e21a1e0942aa21e6f7 100644
--- a/runtime/vm/unicode_test.cc
+++ b/runtime/vm/unicode_test.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
@@ -840,8 +840,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.1.2 - U+DB7F = ed ad bf = "\xED\xAD\xBF"
@@ -851,8 +851,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.1.3 - U+DB80 = ed ae 80 = "\xED\xAE\x80"
@@ -862,8 +862,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.1.4 - U+DBFF = ed af bf = "\xED\xAF\xBF"
@@ -873,8 +873,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.1.5 - U+DC00 = ed b0 80 = "\xED\xB0\x80"
@@ -884,8 +884,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.1.6 - U+DF80 = ed be 80 = "\xED\xBE\x80"
@@ -895,8 +895,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.1.7 - U+DFFF = ed bf bf = "\xED\xBF\xBF"
@@ -906,8 +906,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.2 Paired UTF-16 surrogates
@@ -919,8 +919,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.2.2 - U+D800 U+DFFF = ed a0 80 ed bf bf = "\xED\xA0\x80\xED\xBF\xBF"
@@ -930,8 +930,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.2.3 - U+DB7F U+DC00 = ed a0 80 ed bf bf = "\xED\xAD\xBF\xED\xB0\x80"
@@ -941,8 +941,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.2.4 - U+DB7F U+DFFF = ed ad bf ed bf bf = "\xED\xAD\xBF\xED\xBF\xBF"
@@ -952,8 +952,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.2.5 - U+DB80 U+DC00 = ed ae 80 ed b0 80 = "\xED\xAE\x80\xED\xB0\x80"
@@ -963,8 +963,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.2.6 - U+DB80 U+DFFF = ed ae 80 ed bf bf = "\xED\xAE\x80\xED\xBF\xBF"
@@ -974,8 +974,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.2.7 - U+DBFF U+DC00 = ed af bf ed b0 80 = "\xED\xAF\xBF\xED\xB0\x80"
@@ -985,8 +985,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.2.8 - U+DBFF U+DFFF = ed af bf ed bf bf = "\xED\xAF\xBF\xED\xBF\xBF"
@@ -996,8 +996,8 @@ TEST_CASE(Utf8Decode) {
int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
- EXPECT(!is_valid);
- EXPECT(memcmp(expected, dst, sizeof(expected)));
+ EXPECT(is_valid);
+ EXPECT(!memcmp(expected, dst, sizeof(expected)));
}
// 5.3 - Other illegal code positions
@@ -1025,4 +1025,41 @@ TEST_CASE(Utf8Decode) {
}
}
+
+TEST_CASE(Utf16Iterator) {
+ // Normal code units.
+ {
+ const int len = 4;
+ const uint16_t src[] = { 32, 33, 255, 256 };
+ Utf16::CodePointIterator it(src, len);
+ for (int i = 0; i < len; i++) {
+ EXPECT(it.Next());
+ EXPECT_EQ(src[i], it.Current());
+ }
+ EXPECT(!it.Next());
+ }
+
+ // Surrogate pairs.
+ {
+ const uint16_t src[] = { 0xd800, 0xdc00, 0xd800, 0xdc01 };
+ Utf16::CodePointIterator it(src, 4);
+ EXPECT(it.Next());
+ EXPECT_EQ(0x10000, it.Current());
+ EXPECT(it.Next());
+ EXPECT_EQ(0x10001, it.Current());
+ EXPECT(!it.Next());
+ }
+
+ // Surrogate characters not in pairs.
+ {
+ const uint16_t src[] = { 0xdc00, 0xd800 };
+ Utf16::CodePointIterator it(src, 2);
+ EXPECT(it.Next());
+ EXPECT_EQ(0xdc00, it.Current());
+ EXPECT(it.Next());
+ EXPECT_EQ(0xd800, it.Current());
+ EXPECT(!it.Next());
+ }
+}
+
} // namespace dart
« runtime/vm/unicode.cc ('K') | « runtime/vm/unicode.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698