Index: LayoutTests/fast/encoding/api/utf16-surrogates-encode.html |
diff --git a/LayoutTests/fast/encoding/api/utf16-surrogates-encode.html b/LayoutTests/fast/encoding/api/utf16-surrogates-encode.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..002463e0e1fc5c69373f762ea4a747c0a4f9ba07 |
--- /dev/null |
+++ b/LayoutTests/fast/encoding/api/utf16-surrogates-encode.html |
@@ -0,0 +1,55 @@ |
+<!DOCTYPE html> |
+<title>Encoding API: ScalarValueString surrogate handling when encoding</title> |
+<script src="../../../resources/testharness.js"></script> |
+<script src="../../../resources/testharnessreport.js"></script> |
+<script src="resources/shared.js"></script> |
+<script> |
+ |
+var bad = [ |
+ { |
+ input: '\uD800', |
+ expected: '\uFFFD', |
+ name: 'lone surrogate lead' |
+ }, |
+ { |
+ input: '\uDC00', |
+ expected: '\uFFFD', |
+ name: 'lone surrogate trail' |
+ }, |
+ { |
+ input: '\uD800\u0000', |
+ expected: '\uFFFD\u0000', |
+ name: 'unmatched surrogate lead' |
+ }, |
+ { |
+ input: '\uDC00\u0000', |
+ expected: '\uFFFD\u0000', |
+ name: 'unmatched surrogate trail' |
+ }, |
+ { |
+ input: '\uDC00\uD800', |
+ expected: '\uFFFD\uFFFD', |
+ name: 'swapped surrogate pair' |
+ }, |
+ { |
+ input: '\uD834\uDD1E', |
+ expected: '\uD834\uDD1E', |
+ name: 'properly encoded MUSICAL SYMBOL G CLEF (U+1D11E)' |
+ } |
+]; |
+ |
+var encoding = 'utf-8'; |
+ |
+bad.forEach(function(t) { |
+ test(function() { |
+ var encoded = new TextEncoder(encoding).encode(t.input); |
+ var decoded = new TextDecoder(encoding).decode(encoded); |
+ assert_equals(decoded, t.expected); |
+ }, 'ScalarValueString handling: ' + t.name); |
+}); |
+ |
+test(function() { |
+ assert_equals(new TextEncoder(encoding).encode().length, 0, 'Should default to empty string'); |
+}, 'ScalarValueString default'); |
+ |
+</script> |