| Index: LayoutTests/imported/web-platform-tests/FileAPI/blob/Blob-slice.html
|
| diff --git a/LayoutTests/imported/web-platform-tests/FileAPI/blob/Blob-slice.html b/LayoutTests/imported/web-platform-tests/FileAPI/blob/Blob-slice.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bc953cfa89f7a05f7b3a194a8e000033fa656475
|
| --- /dev/null
|
| +++ b/LayoutTests/imported/web-platform-tests/FileAPI/blob/Blob-slice.html
|
| @@ -0,0 +1,214 @@
|
| +<!DOCTYPE html>
|
| +<meta charset=utf-8>
|
| +<title>Blob slice</title>
|
| +<link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#slice-method-algo">
|
| +<link rel=author title="Saurabh Anand" href="mailto:saurabhanandiit@gmail.com">
|
| +<script src="../../../../resources/testharness.js"></script>
|
| +<script src="../../../../resources/testharnessreport.js"></script>
|
| +<script src="../support/Blob.js"></script>
|
| +<div id="log"></div>
|
| +<script>
|
| +test_blob(function() {
|
| + var blobTemp = new Blob(["PASS"]);
|
| + return blobTemp.slice();
|
| +}, {
|
| + expected: "PASS",
|
| + type: "",
|
| + desc: "no-argument Blob slice"
|
| +});
|
| +
|
| +test(function() {
|
| + var blob1, blob2;
|
| +
|
| + test_blob(function() {
|
| + return blob1 = new Blob(["squiggle"]);
|
| + }, {
|
| + expected: "squiggle",
|
| + type: "",
|
| + desc: "blob1."
|
| + });
|
| +
|
| + test_blob(function() {
|
| + return blob2 = new Blob(["steak"], {type: "content/type"});
|
| + }, {
|
| + expected: "steak",
|
| + type: "content/type",
|
| + desc: "blob2."
|
| + });
|
| +
|
| + var arrayBuffer = new ArrayBuffer(16);
|
| + var int8View = new Int8Array(arrayBuffer);
|
| + for (var i = 0; i < 16; i++) {
|
| + int8View[i] = i + 65;
|
| + }
|
| +
|
| + var testData = [
|
| + [
|
| + ["PASSSTRING"],
|
| + [{start: -6, contents: "STRING"},
|
| + {start: -12, contents: "PASSSTRING"},
|
| + {start: 4, contents: "STRING"},
|
| + {start: 12, contents: ""},
|
| + {start: 0, end: -6, contents: "PASS"},
|
| + {start: 0, end: -12, contents: ""},
|
| + {start: 0, end: 4, contents: "PASS"},
|
| + {start: 0, end: 12, contents: "PASSSTRING"},
|
| + {start: 7, end: 4, contents: ""}]
|
| + ],
|
| +
|
| + // Test 3 strings
|
| + [
|
| + ["foo", "bar", "baz"],
|
| + [{start: 0, end: 9, contents: "foobarbaz"},
|
| + {start: 0, end: 3, contents: "foo"},
|
| + {start: 3, end: 9, contents: "barbaz"},
|
| + {start: 6, end: 9, contents: "baz"},
|
| + {start: 6, end: 12, contents: "baz"},
|
| + {start: 0, end: 9, contents: "foobarbaz"},
|
| + {start: 0, end: 11, contents: "foobarbaz"},
|
| + {start: 10, end: 15, contents: ""}]
|
| + ],
|
| +
|
| + // Test string, Blob, string
|
| + [
|
| + ["foo", blob1, "baz"],
|
| + [{start: 0, end: 3, contents: "foo"},
|
| + {start: 3, end: 11, contents: "squiggle"},
|
| + {start: 2, end: 4, contents: "os"},
|
| + {start: 10, end: 12, contents: "eb"}]
|
| + ],
|
| +
|
| + // Test blob, string, blob
|
| + [
|
| + [blob1, "foo", blob1],
|
| + [{start: 0, end: 8, contents: "squiggle"},
|
| + {start: 7, end: 9, contents: "ef"},
|
| + {start: 10, end: 12, contents: "os"},
|
| + {start: 1, end: 4, contents: "qui"},
|
| + {start: 12, end: 15, contents: "qui"},
|
| + {start: 40, end: 60, contents: ""}]
|
| + ],
|
| +
|
| + // Test blobs all the way down
|
| + [
|
| + [blob2, blob1, blob2],
|
| + [{start: 0, end: 5, contents: "steak"},
|
| + {start: 5, end: 13, contents: "squiggle"},
|
| + {start: 13, end: 18, contents: "steak"},
|
| + {start: 1, end: 3, contents: "te"},
|
| + {start: 6, end: 10, contents: "quig"}]
|
| + ],
|
| +
|
| + // Test an ArrayBufferView
|
| + [
|
| + [int8View, blob1, "foo"],
|
| + [{start: 0, end: 8, contents: "ABCDEFGH"},
|
| + {start: 8, end: 18, contents: "IJKLMNOPsq"},
|
| + {start: 17, end: 20, contents: "qui"},
|
| + {start: 4, end: 12, contents: "EFGHIJKL"}]
|
| + ],
|
| +
|
| + // Test a partial ArrayBufferView
|
| + [
|
| + [new Uint8Array(arrayBuffer, 3, 5), blob1, "foo"],
|
| + [{start: 0, end: 8, contents: "DEFGHsqu"},
|
| + {start: 8, end: 18, contents: "igglefoo"},
|
| + {start: 4, end: 12, contents: "Hsquiggl"}]
|
| + ],
|
| +
|
| + // Test type coercion of a number
|
| + [
|
| + [3, int8View, "foo"],
|
| + [{start: 0, end: 8, contents: "3ABCDEFG"},
|
| + {start: 8, end: 18, contents: "HIJKLMNOPf"},
|
| + {start: 17, end: 21, contents: "foo"},
|
| + {start: 4, end: 12, contents: "DEFGHIJK"}]
|
| + ],
|
| +
|
| + [
|
| + [(new Uint8Array([0, 255, 0])).buffer,
|
| + new Blob(['abcd']),
|
| + 'efgh',
|
| + 'ijklmnopqrstuvwxyz'],
|
| + [{start: 1, end: 4, contents: "\uFFFD\u0000a"},
|
| + {start: 4, end: 8, contents: "bcde"},
|
| + {start: 8, end: 12, contents: "fghi"},
|
| + {start: 1, end: 12, contents: "\uFFFD\u0000abcdefghi"}]
|
| + ]
|
| + ];
|
| +
|
| + testData.forEach(function(data, i) {
|
| + var blobs = data[0];
|
| + var tests = data[1];
|
| + tests.forEach(function(expectations, j) {
|
| + test(function() {
|
| + var blob = new Blob(blobs);
|
| + assert_true(blob instanceof Blob);
|
| + assert_false(blob instanceof File);
|
| +
|
| + test_blob(function() {
|
| + return expectations.end === undefined
|
| + ? blob.slice(expectations.start)
|
| + : blob.slice(expectations.start, expectations.end);
|
| + }, {
|
| + expected: expectations.contents,
|
| + type: "",
|
| + desc: "Slicing test: slice (" + i + "," + j + ")."
|
| + });
|
| + }, "Slicing test (" + i + "," + j + ").");
|
| + });
|
| + });
|
| +}, "Slices");
|
| +
|
| +var invalidTypes = [
|
| + "\xFF",
|
| + "te(xt/plain",
|
| + "te)xt/plain",
|
| + "te<xt/plain",
|
| + "te>xt/plain",
|
| + "te@xt/plain",
|
| + "te,xt/plain",
|
| + "te;xt/plain",
|
| + "te:xt/plain",
|
| + "te\\xt/plain",
|
| + "te\"xt/plain",
|
| + "te/xt/plain",
|
| + "te[xt/plain",
|
| + "te]xt/plain",
|
| + "te?xt/plain",
|
| + "te=xt/plain",
|
| + "te{xt/plain",
|
| + "te}xt/plain",
|
| + "te\x20xt/plain",
|
| + "te\x09xt/plain",
|
| + "te\x00xt/plain",
|
| + "te\x1Fxt/plain",
|
| + "te\x7Fxt/plain"
|
| +];
|
| +invalidTypes.forEach(function(type) {
|
| + test_blob(function() {
|
| + var blob = new Blob(["PASS"]);
|
| + return blob.slice(0, 4, type);
|
| + }, {
|
| + expected: "PASS",
|
| + type: "",
|
| + desc: "Invalid contentType (" + format_value(type) + ")"
|
| + });
|
| +});
|
| +
|
| +var validTypes = [
|
| + "TEXT/PLAIN",
|
| + "text/plain;charset = UTF-8",
|
| + "text/plain;charset=UTF-8"
|
| +];
|
| +validTypes.forEach(function(type) {
|
| + test_blob(function() {
|
| + var blob = new Blob(["PASS"]);
|
| + return blob.slice(0, 4, type);
|
| + }, {
|
| + expected: "PASS",
|
| + type: type.toLowerCase(),
|
| + desc: "Valid contentType (" + format_value(type) + ")"
|
| + });
|
| +});
|
| +</script>
|
|
|