1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /*jshint indent:2, laxcomma:true, laxbreak:true*/
- var util = require('util')
- , assert = require('assert')
- , diff = require('..')
- , data = require('./practice-data')
- ;
- var i = Math.floor(Math.random() * data.length) + 1;
- var j = Math.floor(Math.random() * data.length) + 1;
- while (j === i) {
- j = Math.floor(Math.random() * data.length) + 1;
- }
- var source = data[i];
- var comparand = data[j];
- // source and comparand are different objects
- assert.notEqual(source, comparand);
- // source and comparand have differences in their structure
- assert.notDeepEqual(source, comparand);
- // record the differences between source and comparand
- var changes = diff(source, comparand);
- // apply the changes to the source
- changes.forEach(function (change) {
- diff.applyChange(source, true, change);
- });
- // source and copmarand are now deep equal
- assert.deepEqual(source, comparand);
- // Simulate serializing to a remote copy of the object (we've already go a copy, copy the changes)...
- var remote = JSON.parse(JSON.stringify(source));
- var remoteChanges = JSON.parse(JSON.stringify(changes));
- // source and remote are different objects
- assert.notEqual(source, remote);
- // changes and remote changes are different objects
- assert.notEqual(changes, remoteChanges);
- // remote and comparand are different objects
- assert.notEqual(remote, comparand);
- remoteChanges.forEach(function (change) {
- diff.applyChange(remote, true, change);
- });
- assert.deepEqual(remote, comparand);
|