summaryrefslogtreecommitdiffstats
path: root/js/src/tests/shell/compression.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/shell/compression.js')
-rw-r--r--js/src/tests/shell/compression.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/js/src/tests/shell/compression.js b/js/src/tests/shell/compression.js
new file mode 100644
index 0000000000..4836d832fb
--- /dev/null
+++ b/js/src/tests/shell/compression.js
@@ -0,0 +1,30 @@
+// |reftest| skip-if(!xulRuntime.shell)
+
+// Compressed buffers must have magic header and length
+assertThrows(() => decompressLZ4(new ArrayBuffer()));
+
+// Compress and decompress take an array buffer, not arrays
+assertThrows(() => compressLZ4([]));
+assertThrows(() => decompressLZ4([]));
+
+// Round trip several buffers
+let tests = [
+ new Uint8Array([]),
+ new Uint8Array([0]),
+ new Uint8Array([0, 1, 2, 3]),
+ new Uint8Array(1000),
+];
+
+for (let test of tests) {
+ let original = test.buffer;
+
+ let compressed = compressLZ4(original);
+ assertEq(compressed instanceof ArrayBuffer, true);
+
+ let decompressed = decompressLZ4(compressed);
+ assertEq(decompressed instanceof ArrayBuffer, true);
+
+ assertEqArray(new Uint8Array(original), new Uint8Array(decompressed));
+}
+
+reportCompare(true,true);