wallet-core/node_modules/fast-diff/test.js
2017-08-14 05:02:09 +02:00

53 lines
1.6 KiB
JavaScript

var _ = require('lodash');
var googlediff = require('googlediff');
var seedrandom = require('seedrandom');
var diff = require('./diff.js');
googlediff = new googlediff();
var ITERATIONS = 10000;
var ALPHABET = 'GATTACA';
var LENGTH = 100;
var seed = Math.floor(Math.random() * 10000);
var random = seedrandom(seed);
console.log('Running computing ' + ITERATIONS + ' diffs with seed ' + seed + '...');
console.log('Generating strings...');
var strings = [];
for(var i = 0; i <= ITERATIONS; ++i) {
var chars = [];
for(var l = 0; l < LENGTH; ++l) {
var letter = ALPHABET.substr(Math.floor(random() * ALPHABET.length), 1);
chars.push(letter);
}
strings.push(chars.join(''));
}
console.log('Running tests *without* cursor information...');
for(var i = 0; i < ITERATIONS; ++i) {
var result = diff(strings[i], strings[i+1]);
var expected = googlediff.diff_main(strings[i], strings[i+1]);
if (!_.isEqual(result, expected)) {
console.log('Expected', expected);
console.log('Result', result);
throw new Error('Diff produced difference results.');
}
}
console.log('Running tests *with* cursor information');
for(var i = 0; i < ITERATIONS; ++i) {
var cursor_pos = Math.floor(random() * strings[i].length + 1);
var diffs = diff(strings[i], strings[i+1], cursor_pos);
var patch = googlediff.patch_make(strings[i], strings[i+1], diffs);
var expected = googlediff.patch_apply(patch, strings[i])[0];
if (expected !== strings[i+1]) {
console.log('Expected', expected);
console.log('Result', strings[i+1]);
throw new Error('Diff produced difference results.');
}
}
console.log("Success!");