You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ia...@apache.org on 2013/06/12 19:34:56 UTC
spec commit: [CB-2406] Add ArrayBuffer and Blob FileWriter tests
Updated Branches:
refs/heads/master 579475ee5 -> cf3e6ac50
[CB-2406] Add ArrayBuffer and Blob FileWriter tests
Project: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/commit/cf3e6ac5
Tree: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/tree/cf3e6ac5
Diff: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/diff/cf3e6ac5
Branch: refs/heads/master
Commit: cf3e6ac5045a6d01cbf7fed029c8532c3fbc0080
Parents: 579475e
Author: Ian Clelland <ic...@chromium.org>
Authored: Wed Jun 12 08:46:16 2013 -0400
Committer: Ian Clelland <ic...@chromium.org>
Committed: Wed Jun 12 13:33:51 2013 -0400
----------------------------------------------------------------------
autotest/tests/file.tests.js | 98 +++++++++++++++++++++++++++++++++++++++
1 file changed, 98 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/blob/cf3e6ac5/autotest/tests/file.tests.js
----------------------------------------------------------------------
diff --git a/autotest/tests/file.tests.js b/autotest/tests/file.tests.js
index dcbe832..c481ed3 100644
--- a/autotest/tests/file.tests.js
+++ b/autotest/tests/file.tests.js
@@ -3472,5 +3472,103 @@ describe('File API', function() {
expect(fail).not.toHaveBeenCalled();
});
});
+ it("file.spec.104 should be able to write binary data from an ArrayBuffer", function() {
+ var fileName = "bufferwriter.bin",
+ filePath = root.fullPath + '/' + fileName,
+ theWriter,
+ // file content
+ data = new ArrayBuffer(32),
+ dataView = new Int8Array(data),
+ fail = createFail('FileWriter'),
+ // for verifying file length
+ length = 32,
+ verifier = jasmine.createSpy().andCallFake(function(evt) {
+ expect(theWriter.length).toBe(length);
+ expect(theWriter.position).toBe(length);
+
+ // cleanup
+ deleteFile(fileName);
+ }),
+ // writes file content
+ write_file = function(fileEntry) {
+ fileEntry.createWriter(function(writer) {
+ theWriter = writer;
+ theWriter.onwriteend = verifier;
+ theWriter.write(data);
+ }, fail);
+ };
+
+ for (i=0; i < dataView.length; i++) {
+ dataView[i] = i;
+ }
+
+ // creates file, then write content
+ runs(function() {
+ createFile(fileName, write_file);
+ });
+
+ waitsFor(function() { return verifier.wasCalled; }, "verifier", Tests.TEST_TIMEOUT);
+
+ runs(function() {
+ expect(verifier).toHaveBeenCalled();
+ expect(fail).not.toHaveBeenCalled();
+ });
+ });
+ it("file.spec.105 should be able to write binary data from a Blob", function() {
+ var fileName = "blobwriter.bin",
+ filePath = root.fullPath + '/' + fileName,
+ theWriter,
+ fail = createFail('FileWriter'),
+ // file content
+ data = new ArrayBuffer(32),
+ dataView = new Int8Array(data),
+ blob,
+ // for verifying file length
+ length = 32,
+ verifier = jasmine.createSpy().andCallFake(function(evt) {
+ expect(theWriter.length).toBe(length);
+ expect(theWriter.position).toBe(length);
+
+ // cleanup
+ deleteFile(fileName);
+ }),
+ // writes file content
+ write_file = function(fileEntry) {
+ fileEntry.createWriter(function(writer) {
+ theWriter = writer;
+ theWriter.onwriteend = verifier;
+ theWriter.write(blob);
+ }, fail);
+ };
+ for (i=0; i < dataView.length; i++) {
+ dataView[i] = i;
+ }
+ try {
+ // Mobile Safari: Use Blob constructor
+ blob = new Blob([data], {"type": "application/octet-stream"})
+ } catch(e) {
+ if (window.WebKitBlobBuilder) {
+ // Android Browser: Use deprecated BlobBuilder
+ var builder = new WebKitBlobBuilder()
+ builder.append(data)
+ blob = builder.getBlob('application/octet-stream');
+ } else {
+ // We have no way defined to create a Blob, so fail
+ fail();
+ }
+ }
+
+ // creates file, then write content
+ runs(function() {
+ createFile(fileName, write_file);
+ });
+
+ waitsFor(function() { return verifier.wasCalled; }, "verifier", Tests.TEST_TIMEOUT);
+
+ runs(function() {
+ expect(verifier).toHaveBeenCalled();
+ expect(fail).not.toHaveBeenCalled();
+ });
+ });
});
});