var fd = use("fd") var miniz = use("miniz") var utf8 = use("utf8") return { create_and_read_zip: function() { var ZIP_PATH = "miniz_test.zip" var SOURCE_PATH = "miniz_source.txt" var ENTRY_PATH = "sample/hello.txt" var PAYLOAD = "Miniz integration test payload." function write_text_file(path, text) { var handle = fd.open(path, "w") fd.write(handle, text) fd.close(handle) } try { write_text_file(SOURCE_PATH, PAYLOAD) var source_blob = fd.slurp(SOURCE_PATH) var writer = miniz.write(ZIP_PATH) writer.add_file(ENTRY_PATH, source_blob) writer = null var zip_blob = fd.slurp(ZIP_PATH) var reader = miniz.read(zip_blob) if (!reader.exists(ENTRY_PATH)) throw "entry missing in archive" var extracted_blob = reader.slurp(ENTRY_PATH) var extracted_text = utf8.decode(extracted_blob) if (extracted_text != PAYLOAD) throw "extracted text mismatch" } finally { try { fd.unlink(ZIP_PATH) } catch(e) {} try { fd.unlink(SOURCE_PATH) } catch(e) {} } }, list_and_count: function() { var ZIP_PATH = "miniz_list_test.zip" var ENTRY1 = "file1.txt" var ENTRY2 = "dir/file2.txt" try { var writer = miniz.write(ZIP_PATH) writer.add_file(ENTRY1, utf8.encode("content1")) writer.add_file(ENTRY2, utf8.encode("content2")) writer = null var zip_blob = fd.slurp(ZIP_PATH) var reader = miniz.read(zip_blob) var listed = reader.list() if (length(listed) != reader.count()) throw "list/count mismatch" if (length(listed) != 2) throw "unexpected entry count" } finally { try { fd.unlink(ZIP_PATH) } catch(e) {} } }, exists_check: function() { var ZIP_PATH = "miniz_exists_test.zip" var ENTRY_PATH = "existing.txt" try { var writer = miniz.write(ZIP_PATH) writer.add_file(ENTRY_PATH, utf8.encode("data")) writer = null var zip_blob = fd.slurp(ZIP_PATH) var reader = miniz.read(zip_blob) if (!reader.exists(ENTRY_PATH)) throw "existing entry not found" if (reader.exists("nonexistent.txt")) throw "nonexistent entry reported as existing" } finally { try { fd.unlink(ZIP_PATH) } catch(e) {} } } }