Index: LayoutTests/fast/encoding/api/textdecoder-labels.html |
diff --git a/LayoutTests/fast/encoding/api/textdecoder-labels.html b/LayoutTests/fast/encoding/api/textdecoder-labels.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1b38ce33fb6f7fa2dfd879c4731f8fbc8506473a |
--- /dev/null |
+++ b/LayoutTests/fast/encoding/api/textdecoder-labels.html |
@@ -0,0 +1,51 @@ |
+<!DOCTYPE html> |
+<title>Encoding API: TextDecoder labels and whitespace</title> |
+<script src="../../../resources/testharness.js"></script> |
+<script src="../../../resources/testharnessreport.js"></script> |
+<script src="resources/shared.js"></script> |
+<script> |
+var tests = [], failure_tests = []; |
+setup(function() { |
+ var whitespace = [' ', '\t', '\n', '\f', '\r']; |
+ var bad_whitespace = ['\u000B', '\u00A0', '\u2028', '\u2029']; |
+ encodings_table.forEach(function(section) { |
+ section.encodings.filter(function(encoding) { |
+ return encoding.name !== 'replacement'; |
+ }).forEach(function(encoding) { |
+ var name = encoding.name; |
+ encoding.labels.forEach(function(label) { |
+ tests.push([label, encoding.name]); |
+ whitespace.forEach(function(ws) { |
+ tests.push([ws + label, encoding.name]); |
+ tests.push([label + ws, encoding.name]); |
+ tests.push([ws + label + ws, encoding.name]); |
+ }); |
+ bad_whitespace.forEach(function(ws) { |
+ failure_tests.push([ws + label, encoding.name]); |
+ failure_tests.push([label + ws, encoding.name]); |
+ failure_tests.push([ws + label + ws, encoding.name]); |
+ }); |
+ }); |
+ }); |
+ }); |
+}); |
+ |
+tests.forEach(function(t) { |
+ var input = t[0], output = t[1]; |
+ test(function() { |
+ assert_equals(new TextDecoder(input).encoding, output, |
+ 'label for encoding should match'); |
+ assert_equals(new TextDecoder(input.toUpperCase()).encoding, output, |
+ 'label matching should be case-insensitive'); |
+ }, format_value(input) + " => " + format_value(output)); |
+}); |
+ |
+failure_tests.forEach(function(t) { |
+ var input = t[0], output = t[1]; |
+ test(function() { |
+ assert_throws({name:'RangeError'}, |
+ function() { new TextDecoder(input); }, |
+ 'non-ASCII whitespace should not be stripped'); |
+ }, format_value(input) + " => " + format_value(output)); |
+}); |
+</script> |