Index: runtime/vm/object_test.cc |
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc |
index 86cb9b0bfdcf1a09bd921224a3d9df83e73acca7..063efe0ff69f4d1c745492ebcc6f9c7106883057 100644 |
--- a/runtime/vm/object_test.cc |
+++ b/runtime/vm/object_test.cc |
@@ -1386,6 +1386,37 @@ TEST_CASE(StringFromUtf8Literal) { |
} |
+TEST_CASE(StringEqualsUtf8) { |
+ const char* onesrc = "abc"; |
+ const String& onestr = String::Handle(String::New(onesrc)); |
+ EXPECT(onestr.IsOneByteString()); |
+ EXPECT(!onestr.Equals("")); |
+ EXPECT(!onestr.Equals("a")); |
+ EXPECT(!onestr.Equals("ab")); |
+ EXPECT(onestr.Equals("abc")); |
+ EXPECT(!onestr.Equals("abcd")); |
+ |
+ const char* twosrc = "\xD7\x90\xD7\x91\xD7\x92"; |
+ const String& twostr = String::Handle(String::New(twosrc)); |
+ EXPECT(twostr.IsTwoByteString()); |
+ EXPECT(!twostr.Equals("")); |
+ EXPECT(!twostr.Equals("\xD7\x90")); |
+ EXPECT(!twostr.Equals("\xD7\x90\xD7\x91")); |
+ EXPECT(twostr.Equals("\xD7\x90\xD7\x91\xD7\x92")); |
+ EXPECT(!twostr.Equals("\xD7\x90\xD7\x91\xD7\x92\xD7\x93")); |
+ |
+ const char* foursrc = "\xF0\x90\x8E\xA0\xF0\x90\x8E\xA1\xF0\x90\x8E\xA2"; |
+ const String& fourstr = String::Handle(String::New(foursrc)); |
+ EXPECT(fourstr.IsTwoByteString()); |
+ EXPECT(!fourstr.Equals("")); |
+ EXPECT(!fourstr.Equals("\xF0\x90\x8E\xA0")); |
+ EXPECT(!fourstr.Equals("\xF0\x90\x8E\xA0\xF0\x90\x8E\xA1")); |
+ EXPECT(fourstr.Equals("\xF0\x90\x8E\xA0\xF0\x90\x8E\xA1\xF0\x90\x8E\xA2")); |
+ EXPECT(!fourstr.Equals("\xF0\x90\x8E\xA0\xF0\x90\x8E\xA1" |
+ "\xF0\x90\x8E\xA2\xF0\x90\x8E\xA3")); |
+} |
+ |
+ |
TEST_CASE(ExternalOneByteString) { |
uint8_t characters[] = { 0xF6, 0xF1, 0xE9 }; |
intptr_t len = ARRAY_SIZE(characters); |