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

Unified Diff: runtime/vm/object_test.cc

Issue 11416054: Provide a code point iterator to the String class to simplify iteration. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: address review comments 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
Index: runtime/vm/object_test.cc
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 354c11ce05d185f59e2b293bcae97ce451feebe5..8ae0baeacf50b4763f0bf083efc64a44c175f996 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -1552,6 +1552,61 @@ TEST_CASE(Array) {
}
+TEST_CASE(StringCodePointIterator) {
+ const String& str0 = String::Handle(String::New(""));
+ String::CodePointIterator it0(str0);
+ EXPECT(!it0.Next());
+
+ const String& str1 = String::Handle(String::New(" \xc3\xa7 "));
+ String::CodePointIterator it1(str1);
+ EXPECT(it1.Next());
+ EXPECT_EQ(' ', it1.Current());
+ EXPECT(it1.Next());
+ EXPECT_EQ(0xE7, it1.Current());
+ EXPECT(it1.Next());
+ EXPECT_EQ(' ', it1.Current());
+ EXPECT(!it1.Next());
+
+ const String& str2 = String::Handle(String::New("\xD7\x92\xD7\x9C"
+ "\xD7\xA2\xD7\x93"
+ "\xD7\x91\xD7\xA8"
+ "\xD7\x9B\xD7\x94"));
+ String::CodePointIterator it2(str2);
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5D2, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5DC, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5E2, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5D3, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5D1, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5E8, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5DB, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5D4, it2.Current());
+ EXPECT(!it2.Next());
+
+ const String& str3 = String::Handle(String::New("\xF0\x9D\x91\xA0"
+ "\xF0\x9D\x91\xA1"
+ "\xF0\x9D\x91\xA2"
+ "\xF0\x9D\x91\xA3"));
+ String::CodePointIterator it3(str3);
+ EXPECT(it3.Next());
+ EXPECT_EQ(0x1D460, it3.Current());
+ EXPECT(it3.Next());
+ EXPECT_EQ(0x1D461, it3.Current());
+ EXPECT(it3.Next());
+ EXPECT_EQ(0x1D462, it3.Current());
+ EXPECT(it3.Next());
+ EXPECT_EQ(0x1D463, it3.Current());
+ EXPECT(!it3.Next());
+}
+
+
TEST_CASE(GrowableObjectArray) {
const int kArrayLen = 5;
Smi& value = Smi::Handle();
« runtime/vm/object.cc ('K') | « runtime/vm/object.cc ('k') | runtime/vm/unicode.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698