Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: chrome/content/tests/io.js

Issue 6250418359238656: Issue 153 - Added tests for io.js and updated filter storage tests (Closed)
Patch Set: Created March 21, 2014, 1:15 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/content/tests/filterStorage_readwrite.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/content/tests/io.js
===================================================================
new file mode 100644
--- /dev/null
+++ b/chrome/content/tests/io.js
@@ -0,0 +1,158 @@
+(function()
+{
+ module("I/O");
+
+ let {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", null);
+ let file = FileUtils.getFile("TmpD", ["adblockplustests-test1.txt"]);
+ let fileRenamed = FileUtils.getFile("TmpD", ["adblockplustests-test2.txt"])
+ let currentTest = -1;
+
+ let tests = [
+ write.bind(null, file),
+ checkExists.bind(null, file),
+ read.bind(null, file),
+ rename.bind(null, file, fileRenamed),
+ checkExists.bind(null, fileRenamed),
+ checkMissing.bind(null, file),
+ read.bind(null, fileRenamed),
+ copy.bind(null, fileRenamed, file),
+ checkExists.bind(null, fileRenamed),
+ checkExists.bind(null, file),
+ read.bind(null, file),
+ remove.bind(null, fileRenamed),
+ checkMissing.bind(null, fileRenamed),
+ checkExists.bind(null, file),
+ remove.bind(null, file),
+ checkMissing.bind(null, fileRenamed),
+ checkMissing.bind(null, file),
+ failedRead.bind(null, file)
+ ];
+
+ function runNextTest()
+ {
+ currentTest++;
+ if (currentTest < tests.length)
+ tests[currentTest]();
+ else
+ start();
+ }
+
+ function write(file)
+ {
+ IO.writeToFile(file, true, function dataGenerator()
+ {
+ for (let i = 0; i < 10000; i++)
+ yield "\u1234" + i + "\uffff\x00";
+ }(), function writeCallback(e)
+ {
+ equal(e && e.toString(), null, "Write succeeded");
+ runNextTest();
+ }, null);
+ }
+
+ function read(file)
+ {
+ let eofReceived = false;
+ let i = 0;
+ IO.readFromFile(file, true, {
+ process: function(line)
+ {
+ if (eofReceived)
+ ok(false, "No lines received after EOF");
+
+ if (line === null)
+ {
+ eofReceived = true;
+ equal(i, 10000, "10000 lines received before EOF");
+ }
+ else
+ {
+ let expected = "\u1234" + i + "\uffff\x00";
+ if (line != expected)
+ equal(line, expected, "Line " + i + " contents");
+ i++;
+ }
+ }
+ }, function readCallback(e)
+ {
+ equal(e && e.toString(), null, "Read succeeded");
+ ok(eofReceived, "File processor received EOF indicator before callback was called");
+ runNextTest();
+ }, null);
+ }
+
+ function failedRead(file)
+ {
+ IO.readFromFile(file, true, {
+ process: function(line)
+ {
+ ok(false, "Line received for non-existing file")
+ }
+ }, function readCallback(e)
+ {
+ ok(e, "Error received reading non-existing file");
+ runNextTest();
+ });
+ }
+
+ function copy(from, to)
+ {
+ IO.copyFile(from, to, function copyCallback(e)
+ {
+ equal(e && e.toString(), null, "Copy succeeded");
+ runNextTest();
+ });
+ }
+
+ function rename(from, to)
+ {
+ IO.renameFile(from, to.leafName, function renameCallback(e)
+ {
+ equal(e && e.toString(), null, "Rename succeeded");
+ runNextTest();
+ });
+ }
+
+ function remove(file)
+ {
+ IO.removeFile(file, function removeCallback(e)
+ {
+ equal(e && e.toString(), null, "Remove succeeded");
+ runNextTest();
+ });
+ }
+
+ function checkExists(file)
+ {
+ IO.statFile(file, function statCallback(e, info)
+ {
+ equal(e && e.toString(), null, "Stat succeeded");
+ if (!e)
+ {
+ ok(info.exists, "File exists");
+ ok(!info.isDirectory, "File is not a directory");
+ ok(info.isFile, "File is a regular file");
+ ok(Date.now() - info.lastModified < 5000, "File modification time is recent");
+ }
+ runNextTest();
+ });
+ }
+
+ function checkMissing(file)
+ {
+ IO.statFile(file, function statCallback(e, info)
+ {
+ equal(e && e.toString(), null, "Stat succeeded");
+ if (!e)
+ {
+ ok(!info.exists, "File does not exist");
+ }
+ runNextTest();
+ });
+ }
+
+ asyncTest("File operations", function()
+ {
+ runNextTest();
+ });
+})();
« no previous file with comments | « chrome/content/tests/filterStorage_readwrite.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld