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!");
|