Tests the webkitEntries attribute of <input type="file">

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

* Testing testCases[0]
PASS Array.isArray(droppedEntries) is true
PASS Object.isFrozen(droppedEntries) is true
PASS droppedEntries.length is 1
Verifying entry (0/1):/UTF8.txt
PASS verifyingEntry.fullPath is "/UTF8.txt"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is false
PASS returnedMetadata.size is 5
* Testing testCases[1]
PASS Array.isArray(droppedEntries) is true
PASS Object.isFrozen(droppedEntries) is true
PASS droppedEntries.length is 1
Verifying entry (0/1):/dir1
PASS verifyingEntry.fullPath is "/dir1"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is true
PASS returnedEntries.length is 2
/dir1/UTF8-2.txt
/dir1/UTF8.txt
* Testing testCases[2]
PASS Array.isArray(droppedEntries) is true
PASS Object.isFrozen(droppedEntries) is true
PASS droppedEntries.length is 3
Verifying entry (0/3):/apple.gif
PASS verifyingEntry.fullPath is "/apple.gif"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is false
PASS returnedMetadata.size is 3340
Verifying entry (1/3):/UTF8.txt
PASS verifyingEntry.fullPath is "/UTF8.txt"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is false
PASS returnedMetadata.size is 5
Verifying entry (2/3):/green.jpg
PASS verifyingEntry.fullPath is "/green.jpg"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is false
PASS returnedMetadata.size is 764
* Testing testCases[3]
PASS Array.isArray(droppedEntries) is true
PASS Object.isFrozen(droppedEntries) is true
PASS droppedEntries.length is 2
Verifying entry (0/2):/dir1
PASS verifyingEntry.fullPath is "/dir1"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is true
PASS returnedEntries.length is 2
/dir1/UTF8-2.txt
/dir1/UTF8.txt
Verifying entry (1/2):/dir2
PASS verifyingEntry.fullPath is "/dir2"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is true
PASS returnedEntries.length is 1
/dir2/green.jpg
* Testing testCases[4]
PASS Array.isArray(droppedEntries) is true
PASS Object.isFrozen(droppedEntries) is true
PASS droppedEntries.length is 4
Verifying entry (0/4):/dir1
PASS verifyingEntry.fullPath is "/dir1"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is true
PASS returnedEntries.length is 2
/dir1/UTF8-2.txt
/dir1/UTF8.txt
Verifying entry (1/4):/UTF8.txt
PASS verifyingEntry.fullPath is "/UTF8.txt"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is false
PASS returnedMetadata.size is 5
Verifying entry (2/4):/test.txt
PASS verifyingEntry.fullPath is "/test.txt"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is false
PASS returnedMetadata.size is 5
Verifying entry (3/4):/dir2
PASS verifyingEntry.fullPath is "/dir2"
PASS typeof verifyingEntry.isDirectory is 'boolean'
PASS verifyingEntry.isDirectory is true
PASS returnedEntries.length is 1
/dir2/green.jpg
PASS successfullyParsed is true

TEST COMPLETE

