Skip to content

Commit

Permalink
Merge pull request #262 from ibelem/submission/ibelem/fileapi-filelist
Browse files Browse the repository at this point in the history
Added tests for the FileList interface
  • Loading branch information
jgraham committed Aug 21, 2013
2 parents d5a6135 + 4c7e7f1 commit 9cd279f
Show file tree
Hide file tree
Showing 5 changed files with 189 additions and 0 deletions.
60 changes: 60 additions & 0 deletions FileAPI/filelist-section/filelist.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>FileAPI Test: filelist</title>
<link rel='author' title='Intel' href='http://www.intel.com'>
<link rel='help' href='http://dev.w3.org/2006/webapi/FileAPI/#filelist-section'>
<link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-length">
<link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-item">
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
</head>

<body>
<form name='uploadData' style="display:none">
<input type='file' id='fileChooser'>
</form>
<div id='log'></div>

<script>
var fileList;

test(function () {
fileList = document.querySelector('#fileChooser').files;
assert_true('FileList' in window, 'window has a FileList property');
}, 'Check if window has a FileList property');

test(function () {
fileList = document.querySelector('#fileChooser').files;
assert_equals(FileList.length, 0, 'FileList.length is 0');
}, 'Check if FileList.length is 0');

test(function () {
fileList = document.querySelector('#fileChooser').files;
assert_true(fileList.item instanceof Function, 'item is a instanceof Function');
}, 'Check if item is a instanceof Function');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_inherits(fileList, 'item', 'item is a method of fileList');
}, 'Check if item is a method of fileList');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_equals(fileList.item(0), null, 'item method returns null');
}, 'Check if the item method returns null when no file selected');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_inherits(fileList, 'length', 'length is fileList attribute');
}, 'Check if length is fileList\'s attribute');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_equals(fileList.length, 0, 'fileList length is 0');
}, 'Check if the fileList length is 0 when no file selected');
</script>

</body>
</html>
64 changes: 64 additions & 0 deletions FileAPI/filelist-section/filelist_multiple_selected_files.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>FileAPI Test: filelist_multiple_selected_files</title>
<link rel='author' title='Intel' href='http://www.intel.com'>
<link rel='help' href='http://dev.w3.org/2006/webapi/FileAPI/#filelist-section'>
<link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-length">
<link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-item">
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
</head>

<body>
<form name='uploadData'>
<input type='file' id='fileChooser' multiple>
</form>
<div>
<p>Test steps:</p>
<ol>
<li>Download <a href='support/upload.txt'>upload.txt</a>, <a href="support/upload.zip">upload.zip</a> to local.</li>
<li>Select the local two files (upload.txt, upload.zip) to run the test.</li>
</ol>
</div>

<div id='log'></div>

<script>
var fileInput = document.querySelector('#fileChooser');
var fileList;

setup({explicit_done: true, explicit_timeout: true});

on_event(fileInput, 'change', function(evt) {
test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_equals(fileList.length, 2, 'fileList length is 2');
}, 'Check if the fileList length is 2 when selected two files');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_true(fileList.item(0) instanceof File, 'item method is instanceof File');
}, 'Check if the item method returns the File interface when selected two files');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_not_equals(fileList.item(1), null, 'item(1) is not null');
}, 'Check if item(1) is not null when selected two files. Index must be treated by user agents as value for the position of a File object in the FileList, with 0 representing the first file.');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_equals(fileList.item(2), null, 'item(2) is null');
}, 'Check if item(2) is null when selected two files');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_array_equals([fileList.item(0).name, fileList.item(1).name], ['upload.txt', 'upload.zip'], 'file name string is the name of selected files "upload.txt", "upload.zip"');
}, 'Check if the file name string is the name of selected files');

done();
});
</script>
</body>
</html>
64 changes: 64 additions & 0 deletions FileAPI/filelist-section/filelist_selected_file.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>FileAPI Test: filelist_selected_file</title>
<link rel='author' title='Intel' href='http://www.intel.com'>
<link rel='help' href='http://dev.w3.org/2006/webapi/FileAPI/#filelist-section'>
<link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-length">
<link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-item">
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
</head>

<body>
<form name='uploadData'>
<input type='file' id='fileChooser'>
</form>
<div>
<p>Test steps:</p>
<ol>
<li>Download <a href='support/upload.txt'>upload.txt</a> to local.</li>
<li>Select the local upload.txt file to run the test.</li>
</ol>
</div>

<div id='log'></div>

<script>
var fileInput = document.querySelector('#fileChooser');
var fileList;

setup({explicit_done: true, explicit_timeout: true});

on_event(fileInput, 'change', function(evt) {
test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_equals(fileList.length, 1, 'fileList length is 1');
}, 'Check if the fileList length is 1 when selected one file');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_true(fileList.item(0) instanceof File, 'item method is instanceof File');
}, 'Check if the item method returns the File interface when selected one file');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_not_equals(fileList.item(0), null, 'item(0) is not null');
}, 'Check if item(0) is not null when selected one file. Index must be treated by user agents as value for the position of a File object in the FileList, with 0 representing the first file.');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_equals(fileList.item(1), null, 'item(1) is null');
}, 'Check if item(1) is null when selected one file only');

test(function() {
fileList = document.querySelector('#fileChooser').files;
assert_equals(fileList.item(0).name, 'upload.txt', 'file name string is "upload.txt"');
}, 'Check if the file name string is the selected "upload.txt"');

done();
});
</script>
</body>
</html>
1 change: 1 addition & 0 deletions FileAPI/filelist-section/support/upload.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Hello, this is test file for file upload.
Binary file added FileAPI/filelist-section/support/upload.zip
Binary file not shown.

0 comments on commit 9cd279f

Please sign in to comment.