<!DOCTYPE html> <meta charset=utf-8> <title>File constructor</title> <link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-file"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <div id="log"></div> <script> test(function() { assert_true("File" in window, "window should have a File property."); }, "File interface object exists"); function test_first_argument(arg1, expectedSize, testName) { test(function() { var file = new File(arg1, "dummy"); assert_true(file instanceof File); assert_equals(file.name, "dummy"); assert_equals(file.size, expectedSize); assert_equals(file.type, ""); // assert_false(file.isClosed); XXX: File.isClosed doesn't seem to be implemented assert_not_equals(file.lastModified, ""); }, testName); } test_first_argument(["bits"], 4, "DOMString fileBits"); test_first_argument(["𝓽𝓮𝔁𝓽"], 16, "Unicode DOMString fileBits"); test_first_argument([new Blob()], 0, "Empty Blob fileBits"); test_first_argument([new Blob(["bits"])], 4, "Blob fileBits"); test_first_argument([new ArrayBuffer(8)], 8, "ArrayBuffer fileBits"); test_first_argument([new Uint8Array([0x50, 0x41, 0x53, 0x53])], 4, "Typed array fileBits"); test_first_argument(["bits", new Blob(["bits"]), new Blob(), new Uint8Array([0x50, 0x41]), new Uint16Array([0x5353]), new Uint32Array([0x53534150])], 16, "Various fileBits"); function test_second_argument(arg2, expectedFileName, testName) { test(function() { var file = new File(["bits"], arg2); assert_true(file instanceof File); assert_equals(file.name, expectedFileName); }, testName); } test_second_argument("dummy", "dummy", "Using fileName"); test_second_argument("dummy/foo", "dummy:foo", "Using special character in fileName"); // testing the third argument test(function() { var file = new File(["bits"], "dummy", { type: "text/plain"}); assert_true(file instanceof File); assert_equals(file.type, "text/plain"); }, "Using type on the File constructor"); test(function() { var file = new File(["bits"], "dummy", { type: "TEXT/PLAIN"}); assert_true(file instanceof File); assert_equals(file.type, "text/plain"); }, "Using uppercase characters in type"); test(function() { var file = new File(["bits"], "dummy", { type: "𝓽𝓮𝔁𝓽/𝔭𝔩𝔞𝔦𝔫"}); assert_true(file instanceof File); assert_equals(file.type, ""); }, "Using illegal character for type"); test(function() { var file = new File(["bits"], "dummy", { lastModified: 42 }); assert_true(file instanceof File); assert_equals(file.lastModified, 42); }, "Using lastModified"); test(function() { var file = new File(["bits"], "dummy", { name: "foo" }); assert_true(file instanceof File); assert_equals(file.name, "dummy"); }, "Misusing name"); </script>