Files
cell/tests/miniz.cm
2026-02-20 14:06:42 -06:00

106 lines
2.8 KiB
Plaintext

var fd = use("fd")
var miniz = use("miniz")
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."
var source_blob = null
var writer = null
var zip_blob = null
var reader = null
var extracted_blob = null
var extracted_text = null
function write_text_file(path, txt) {
var handle = fd.open(path, "w")
fd.write(handle, txt)
fd.close(handle)
}
var _run = function() {
write_text_file(SOURCE_PATH, PAYLOAD)
source_blob = fd.slurp(SOURCE_PATH)
writer = miniz.write(ZIP_PATH)
writer.add_file(ENTRY_PATH, source_blob)
writer = null
zip_blob = fd.slurp(ZIP_PATH)
reader = miniz.read(zip_blob)
if (!reader.exists(ENTRY_PATH))
disrupt
extracted_blob = reader.slurp(ENTRY_PATH)
extracted_text = text(extracted_blob)
if (extracted_text != PAYLOAD)
disrupt
} disruption {}
_run()
var _clean1 = function() { fd.unlink(ZIP_PATH) } disruption {}
_clean1()
var _clean2 = function() { fd.unlink(SOURCE_PATH) } disruption {}
_clean2()
},
list_and_count: function() {
var ZIP_PATH = "miniz_list_test.zip"
var ENTRY1 = "file1.txt"
var ENTRY2 = "dir/file2.txt"
var writer = null
var zip_blob = null
var reader = null
var listed = null
var _run = function() {
writer = miniz.write(ZIP_PATH)
writer.add_file(ENTRY1, blob("content1"))
writer.add_file(ENTRY2, blob("content2"))
writer = null
zip_blob = fd.slurp(ZIP_PATH)
reader = miniz.read(zip_blob)
listed = reader.list()
if (length(listed) != reader.count())
disrupt
if (length(listed) != 2)
disrupt
} disruption {}
_run()
var _clean = function() { fd.unlink(ZIP_PATH) } disruption {}
_clean()
},
exists_check: function() {
var ZIP_PATH = "miniz_exists_test.zip"
var ENTRY_PATH = "existing.txt"
var writer = null
var zip_blob = null
var reader = null
var _run = function() {
writer = miniz.write(ZIP_PATH)
writer.add_file(ENTRY_PATH, blob("data"))
writer = null
zip_blob = fd.slurp(ZIP_PATH)
reader = miniz.read(zip_blob)
if (!reader.exists(ENTRY_PATH))
disrupt
if (reader.exists("nonexistent.txt"))
disrupt
} disruption {}
_run()
var _clean = function() { fd.unlink(ZIP_PATH) } disruption {}
_clean()
}
}