2020-08-04 12:47:44 +02:00
|
|
|
var Changeset = require("ep_etherpad-lite/static/js/Changeset");
|
|
|
|
var AttributePool = require("ep_etherpad-lite/static/js/AttributePool");
|
|
|
|
var helper = require("./helper.js")
|
|
|
|
var assertEqualArrays = helper.assertEqualArrays;
|
2020-08-04 19:01:42 +02:00
|
|
|
var random = helper.random;
|
|
|
|
var poolOrArray = helper.poolOrArray;
|
|
|
|
var randomMultiline = helper.randomMultiline;
|
|
|
|
var randomInlineString = helper.randomInlineString;
|
|
|
|
var randomTestChangeset = helper.randomTestChangeset;
|
2020-08-04 12:47:44 +02:00
|
|
|
|
|
|
|
describe("inverseRandom",function(){
|
|
|
|
it("inverseRandom",function(done){
|
|
|
|
|
|
|
|
for (var i = 0; i < 30; i++) testInverseRandom(i);
|
|
|
|
done();
|
|
|
|
})
|
|
|
|
|
|
|
|
})
|
|
|
|
function testInverseRandom(randomSeed) {
|
|
|
|
var rand = new random();
|
|
|
|
|
|
|
|
var p = poolOrArray(['apple,', 'apple,true', 'banana,', 'banana,true']);
|
|
|
|
|
|
|
|
var startText = randomMultiline(10, 20, rand) + '\n';
|
|
|
|
var alines = Changeset.splitAttributionLines(Changeset.makeAttribution(startText), startText);
|
|
|
|
var lines = startText.slice(0, -1).split('\n').map(function (s) {
|
|
|
|
return s + '\n';
|
|
|
|
});
|
|
|
|
|
|
|
|
var stylifier = randomTestChangeset(startText, rand, true)[0];
|
|
|
|
|
|
|
|
//print(alines.join('\n'));
|
|
|
|
Changeset.mutateAttributionLines(stylifier, alines, p);
|
|
|
|
//print(stylifier);
|
|
|
|
//print(alines.join('\n'));
|
|
|
|
Changeset.mutateTextLines(stylifier, lines);
|
|
|
|
|
|
|
|
var changeset = randomTestChangeset(lines.join(''), rand, true)[0];
|
|
|
|
var inverseChangeset = Changeset.inverse(changeset, lines, alines, p);
|
|
|
|
|
|
|
|
var origLines = lines.slice();
|
|
|
|
var origALines = alines.slice();
|
|
|
|
|
|
|
|
Changeset.mutateTextLines(changeset, lines);
|
|
|
|
Changeset.mutateAttributionLines(changeset, alines, p);
|
|
|
|
//print(origALines.join('\n'));
|
|
|
|
//print(changeset);
|
|
|
|
//print(inverseChangeset);
|
|
|
|
//print(origLines.map(function(s) { return '1: '+s.slice(0,-1); }).join('\n'));
|
|
|
|
//print(lines.map(function(s) { return '2: '+s.slice(0,-1); }).join('\n'));
|
|
|
|
//print(alines.join('\n'));
|
|
|
|
Changeset.mutateTextLines(inverseChangeset, lines);
|
|
|
|
Changeset.mutateAttributionLines(inverseChangeset, alines, p);
|
|
|
|
//print(lines.map(function(s) { return '3: '+s.slice(0,-1); }).join('\n'));
|
|
|
|
assertEqualArrays(origLines, lines);
|
|
|
|
assertEqualArrays(origALines, alines);
|
|
|
|
}
|
|
|
|
|
|
|
|
|