/* This Source Code Form is subject to the terms of the Mozilla Public *License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththis *file,Youcanobtainoneathttp://mozilla.org/MPL/2.0/.
*/
const DATA = "ZIP WRITER TEST DATA"; const FILENAME = "test_data.txt"; const time = 1199145600000; // Jan 1st 2008
function move_to_data(bis, offset) {
bis.readBytes(18); // Move to compressed size var size = swap32(bis.read32());
bis.readBytes(4); var file_len = swap16(bis.read16()); var extra_len = swap16(bis.read16());
bis.readBytes(file_len);
bis.readBytes(extra_len);
offset += ZIP_FILE_HEADER_SIZE + file_len + extra_len;
return { offset, size };
}
function test_alignment(align_size) { // Create zip for testing.
zipW.open(tmpFile, PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE); for (var i = 0; i < TESTS.length; i++) { var source = do_get_file(DATA_DIR + TESTS[i].name);
zipW.addEntryFile(TESTS[i].name, TESTS[i].compression, source, false);
} var stream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(
Ci.nsIStringInputStream
);
stream.setByteStringData(DATA);
zipW.addEntryStream(
FILENAME,
time * PR_USEC_PER_MSEC,
Ci.nsIZipWriter.COMPRESSION_NONE,
stream, false
);
zipW.alignStoredFiles(align_size);
zipW.close();
// Check data can be decompressed. var zipR = new ZipReader(tmpFile);
stream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(
Ci.nsIScriptableInputStream
);
stream.init(zipR.getInputStream(FILENAME)); var result = stream.read(DATA.length); Assert.equal(result, DATA);
stream.close();
zipR.close();
// Check data is correct and aligned. var fis = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(
Ci.nsIFileInputStream
);
fis.init(tmpFile, -1, -1, null);
let bis = Cc["@mozilla.org/binaryinputstream;1"].createInstance(
Ci.nsIBinaryInputStream
);
bis.setInputStream(fis); var offset = 0;
var ret = move_to_data(bis, offset); // "test.txt"
offset = ret.offset;
bis.readBytes(ret.size);
offset += ret.size;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.