You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by br...@apache.org on 2013/01/08 00:12:03 UTC

spec commit: Add tests for reading sliced files.

Updated Branches:
  refs/heads/master 3c4a01cbd -> f9186feea


Add tests for reading sliced files.


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/f9186fee
Tree: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/tree/f9186fee
Diff: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/diff/f9186fee

Branch: refs/heads/master
Commit: f9186feea751a9592f079f84462567a6eee9197a
Parents: 3c4a01c
Author: Braden Shepherdson <br...@chromium.org>
Authored: Mon Jan 7 18:11:12 2013 -0500
Committer: Braden Shepherdson <br...@chromium.org>
Committed: Mon Jan 7 18:11:12 2013 -0500

----------------------------------------------------------------------
 autotest/tests/file.tests.js |   92 +++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/blob/f9186fee/autotest/tests/file.tests.js
----------------------------------------------------------------------
diff --git a/autotest/tests/file.tests.js b/autotest/tests/file.tests.js
index c9a4016..9a540da 100644
--- a/autotest/tests/file.tests.js
+++ b/autotest/tests/file.tests.js
@@ -3052,6 +3052,98 @@ describe('File API', function() {
                 expect(verifier).toHaveBeenCalled();
             });
         });
+        it("should properly slice files, reading text", function() {
+            // path of file
+            var fileName = "reader.txt",
+                // file content
+                rule = "There is an exception to every rule.  Except this one.",
+                verifier = jasmine.createSpy().andCallFake(function(evt) {
+                    expect(evt).toBeDefined();
+                    expect(evt.target.result).toBe("exception to every rule");
+                }),
+                fail = createFail('FileReader'),
+                filePath = root.fullPath + '/' + fileName,
+                // creates a FileWriter object
+                create_writer = function(fileEntry) {
+                    fileEntry.createWriter(write_file, fail);
+                },
+                // writes file and reads it back in
+                write_file = function(writer) {
+                    writer.onwriteend = read_file;
+                    writer.write(rule);
+                },
+                // reads file and compares content to what was written
+                read_file = function(evt) {
+                    var reader = new FileReader();
+                    reader.onloadend = verifier;
+                    var myFile = new File();
+
+                    myFile.fullPath = filePath;
+                    myFile.size = 54;
+                    myFile.end = 54;
+                    var sliced = myFile.slice(10, 40); // "n exception to every rule.  Ex"
+                    var sliced2 = sliced.slice(2, -5); // "exception to every rule"
+                    reader.readAsText(sliced2);
+                };
+
+            // create a file, write to it, and read it in again
+            runs(function() {
+                root.getFile(fileName, {create: true}, create_writer, fail);
+            });
+
+            waitsFor(function() { return verifier.wasCalled; }, "verifier never called", Tests.TEST_TIMEOUT);
+
+            runs(function() {
+                expect(fail).not.toHaveBeenCalled();
+                expect(verifier).toHaveBeenCalled();
+            });
+        });
+        it("should properly slice files, reading data URLs", function() {
+            // path of file
+            var fileName = "reader.txt",
+                // file content
+                rule = "There is an exception to every rule.  Except this one.",
+                verifier = jasmine.createSpy().andCallFake(function(evt) {
+                    expect(evt).toBeDefined();
+                    expect(evt.target.result).toBe("data:text/plain;base64,ZXhjZXB0aW9uIHRvIGV2ZXJ5IHJ1bGU=");
+                }),
+                fail = createFail('FileReader'),
+                filePath = root.fullPath + '/' + fileName,
+                // creates a FileWriter object
+                create_writer = function(fileEntry) {
+                    fileEntry.createWriter(write_file, fail);
+                },
+                // writes file and reads it back in
+                write_file = function(writer) {
+                    writer.onwriteend = read_file;
+                    writer.write(rule);
+                },
+                // reads file and compares content to what was written
+                read_file = function(evt) {
+                    var reader = new FileReader();
+                    reader.onloadend = verifier;
+                    var myFile = new File();
+
+                    myFile.fullPath = filePath;
+                    myFile.size = 54;
+                    myFile.end = 54;
+                    var sliced = myFile.slice(10, 40); // "n exception to every rule.  Ex"
+                    var sliced2 = sliced.slice(2, -5); // "exception to every rule"
+                    reader.readAsDataURL(sliced2);
+                };
+
+            // create a file, write to it, and read it in again
+            runs(function() {
+                root.getFile(fileName, {create: true}, create_writer, fail);
+            });
+
+            waitsFor(function() { return verifier.wasCalled; }, "verifier never called", Tests.TEST_TIMEOUT);
+
+            runs(function() {
+                expect(fail).not.toHaveBeenCalled();
+                expect(verifier).toHaveBeenCalled();
+            });
+        });
     });
 
     describe('FileWriter', function(){