| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 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('Running emoji tests');(function() {  var result = diff('🐶', '🐯');  var expected = [    [diff.DELETE, '🐶'],    [diff.INSERT, '🐯'],  ];  if (!_.isEqual(result, expected)) {    console.log(result, '!==', expected);    throw new Error('Emoji simple case test failed');  }})();(function() {  var result = diff('👨🏽', '👩🏽');  var expected = [    [diff.DELETE, '👨'],    [diff.INSERT, '👩'],    [diff.EQUAL, '🏽']  ];  if (!_.isEqual(result, expected)) {    console.log(result, '!==', expected);    throw new Error('Emoji before case test failed');  }})();(function() {  var result = diff('👩🏼', '👩🏽');  var expected = [    [diff.EQUAL, '👩'],    [diff.DELETE, '🏼'],    [diff.INSERT, '🏽'],  ];  if (!_.isEqual(result, expected)) {    console.log(result, '!==', expected);    throw new Error('Emoji after case test failed');  }})();console.log("Success!");
 |