diff options
Diffstat (limited to 'node_modules/fast-diff/test.js')
-rw-r--r-- | node_modules/fast-diff/test.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/node_modules/fast-diff/test.js b/node_modules/fast-diff/test.js new file mode 100644 index 000000000..5a33eed74 --- /dev/null +++ b/node_modules/fast-diff/test.js @@ -0,0 +1,52 @@ +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!"); |