79 строки
1.9 KiB
JavaScript
79 строки
1.9 KiB
JavaScript
// js -m -n -e "load('lzma-full.js')" test-full.js
|
|
|
|
function assertEq(a, b) {
|
|
if (a !== b) {
|
|
throw 'Should have been equal: ' + a + ' : ' + b;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function assertNeq(a, b) {
|
|
try {
|
|
assertEq(a, b);
|
|
} catch(e) {
|
|
return;
|
|
}
|
|
throw 'Should have not been equal: ' + a + ' : ' + b;
|
|
}
|
|
|
|
function byteCompare(a, b) {
|
|
assertEq(a.length, b.length);
|
|
for (var i = 0; i < a.length; i++) {
|
|
assertEq(a[i]&255, b[i]&255);
|
|
}
|
|
}
|
|
|
|
function testSimple() {
|
|
print('testing simple..');
|
|
var data = [100, 200, 200, 200, 200, 200, 200, 100, 100, 200, 200, 200, 200, 0, 1];
|
|
var compressed = LZMA.compress(data);
|
|
var decompressed = LZMA.decompress(compressed);
|
|
|
|
byteCompare(data, decompressed);
|
|
assertNeq(data.length, compressed.length);
|
|
}
|
|
|
|
function testBig() {
|
|
print('testing big..');
|
|
var seed1 = 100;
|
|
var seed2 = 200;
|
|
var last = 255;
|
|
function fakeRandom() {
|
|
// numbers from http://triptico.com/docs/sp_random.html
|
|
seed1 = ((seed1 * 58321) + 11113) | 0;
|
|
var ret = (seed1 >> 16) & 255;
|
|
seed2 = ((seed2 * 58321) + 11113) | 0;
|
|
if (seed2 % 5) {
|
|
return last;
|
|
}
|
|
last = ret;
|
|
return last;
|
|
}
|
|
print(' ..generating data..');
|
|
var size = 1*1024*1024;
|
|
var data = new Array(size);
|
|
for (var i = 0; i < size; i++) {
|
|
data[i] = fakeRandom();
|
|
}
|
|
|
|
print(' ..compressing ' + data.length + ' bytes..');
|
|
var t = Date.now();
|
|
var compressed = LZMA.compress(data);
|
|
print(' ..took ' + ((Date.now() - t)/1000).toFixed(2) + ' secs');
|
|
print(' ..decompressing ' + compressed.length + ' bytes..');
|
|
t = Date.now();
|
|
var decompressed = LZMA.decompress(compressed);
|
|
print(' ..took ' + ((Date.now() - t)/1000).toFixed(2) + ' secs');
|
|
print(' ..got ' + decompressed.length + ' bytes..');
|
|
|
|
byteCompare(data, decompressed);
|
|
assertNeq(data.length, compressed.length);
|
|
print(' ..decompressed == original');
|
|
}
|
|
|
|
testSimple();
|
|
testBig();
|
|
|
|
print('ok.');
|
|
|