mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-02-01 03:12:42 +01:00
move mutation tests from easysync_tests to mocha
This commit is contained in:
parent
172256d69a
commit
6f1b0d9185
2 changed files with 151 additions and 76 deletions
|
@ -23,7 +23,7 @@
|
|||
|
||||
var Changeset = require("ep_etherpad-lite/static/js/Changeset");
|
||||
var AttributePool = require("ep_etherpad-lite/static/js/AttributePool");
|
||||
var helper = require("helper.js")
|
||||
var helper = require("./helper.js")
|
||||
|
||||
var assert = helper.assert;
|
||||
var literal = helper.literal;
|
||||
|
@ -95,120 +95,196 @@ function random() {
|
|||
return Changeset.pack(oldLen, newLen, assem.toString(), bank.toString());
|
||||
}
|
||||
|
||||
function runMutationTest(testId, origLines, muts, correct) {
|
||||
var lines = origLines.slice();
|
||||
var mu = Changeset.textLinesMutator(lines);
|
||||
applyMutations(mu, muts);
|
||||
mu.close();
|
||||
assertEqualArrays(correct, lines);
|
||||
function runMutationTest(origLines, muts) {
|
||||
var lines1 = origLines.slice();
|
||||
var mu = Changeset.textLinesMutator(lines1);
|
||||
applyMutations(mu, muts);
|
||||
mu.close();
|
||||
|
||||
var inText = origLines.join('');
|
||||
var cs = mutationsToChangeset(inText.length, muts);
|
||||
lines = origLines.slice();
|
||||
Changeset.mutateTextLines(cs, lines);
|
||||
assertEqualArrays(correct, lines);
|
||||
var inText = origLines.join('');
|
||||
var cs = mutationsToChangeset(inText.length, muts);
|
||||
lines2 = origLines.slice();
|
||||
Changeset.mutateTextLines(cs, lines2);
|
||||
|
||||
var correctText = correct.join('');
|
||||
var outText = Changeset.applyToText(cs, inText);
|
||||
assertEqualStrings(correctText, outText);
|
||||
}
|
||||
|
||||
runMutationTest(1, ["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"], [
|
||||
['remove', 1, 0, "a"],
|
||||
['insert', "tu"],
|
||||
['remove', 1, 0, "p"],
|
||||
['skip', 4, 1],
|
||||
['skip', 7, 1],
|
||||
['insert', "cream\npie\n", 2],
|
||||
['skip', 2],
|
||||
['insert', "bot"],
|
||||
['insert', "\n", 1],
|
||||
['insert', "bu"],
|
||||
['skip', 3],
|
||||
['remove', 3, 1, "ge\n"],
|
||||
['remove', 6, 0, "duffle"]
|
||||
], ["tuple\n", "banana\n", "cream\n", "pie\n", "cabot\n", "bubba\n", "eggplant\n"]);
|
||||
|
||||
runMutationTest(2, ["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"], [
|
||||
['remove', 1, 0, "a"],
|
||||
['remove', 1, 0, "p"],
|
||||
['insert', "tu"],
|
||||
['skip', 11, 2],
|
||||
['insert', "cream\npie\n", 2],
|
||||
['skip', 2],
|
||||
['insert', "bot"],
|
||||
['insert', "\n", 1],
|
||||
['insert', "bu"],
|
||||
['skip', 3],
|
||||
['remove', 3, 1, "ge\n"],
|
||||
['remove', 6, 0, "duffle"]
|
||||
], ["tuple\n", "banana\n", "cream\n", "pie\n", "cabot\n", "bubba\n", "eggplant\n"]);
|
||||
|
||||
runMutationTest(3, ["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"], [
|
||||
var outText = Changeset.applyToText(cs, inText);
|
||||
return [lines1,lines2,outText];
|
||||
}
|
||||
describe("text line mutations",function(){
|
||||
it("applies mutations to an array of lines #1",function(done){
|
||||
var expected = ["tuple\n", "banana\n", "cream\n", "pie\n", "cabot\n", "bubba\n", "eggplant\n"];
|
||||
var result = runMutationTest(["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"], [
|
||||
['remove', 1, 0, "a"],
|
||||
['insert', "tu"],
|
||||
['remove', 1, 0, "p"],
|
||||
['skip', 4, 1],
|
||||
['skip', 7, 1],
|
||||
['insert', "cream\npie\n", 2],
|
||||
['skip', 2],
|
||||
['insert', "bot"],
|
||||
['insert', "\n", 1],
|
||||
['insert', "bu"],
|
||||
['skip', 3],
|
||||
['remove', 3, 1, "ge\n"],
|
||||
['remove', 6, 0, "duffle"]
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #2",function(done){
|
||||
var expected = ["tuple\n", "banana\n", "cream\n", "pie\n", "cabot\n", "bubba\n", "eggplant\n"];
|
||||
var result = runMutationTest(["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"], [
|
||||
['remove', 1, 0, "a"],
|
||||
['remove', 1, 0, "p"],
|
||||
['insert', "tu"],
|
||||
['skip', 11, 2],
|
||||
['insert', "cream\npie\n", 2],
|
||||
['skip', 2],
|
||||
['insert', "bot"],
|
||||
['insert', "\n", 1],
|
||||
['insert', "bu"],
|
||||
['skip', 3],
|
||||
['remove', 3, 1, "ge\n"],
|
||||
['remove', 6, 0, "duffle"]
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #3",function(done){
|
||||
var expected = ["banana\n", "cabbage\n", "duffle\n"];
|
||||
var result = runMutationTest(["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"], [
|
||||
['remove', 6, 1, "apple\n"],
|
||||
['skip', 15, 2],
|
||||
['skip', 6],
|
||||
['remove', 1, 1, "\n"],
|
||||
['remove', 8, 0, "eggplant"],
|
||||
['skip', 1, 1]
|
||||
], ["banana\n", "cabbage\n", "duffle\n"]);
|
||||
|
||||
runMutationTest(4, ["15\n"], [
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #4",function(done){
|
||||
var expected = ["1\n", "2\n", "3\n", "4\n", "5\n"];
|
||||
var result = runMutationTest(["15\n"], [
|
||||
['skip', 1],
|
||||
['insert', "\n2\n3\n4\n", 4],
|
||||
['skip', 2, 1]
|
||||
], ["1\n", "2\n", "3\n", "4\n", "5\n"]);
|
||||
|
||||
runMutationTest(5, ["1\n", "2\n", "3\n", "4\n", "5\n"], [
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #5",function(done){
|
||||
var expected = ["15\n"];
|
||||
var result = runMutationTest(["1\n", "2\n", "3\n", "4\n", "5\n"], [
|
||||
['skip', 1],
|
||||
['remove', 7, 4, "\n2\n3\n4\n"],
|
||||
['skip', 2, 1]
|
||||
], ["15\n"]);
|
||||
|
||||
runMutationTest(6, ["123\n", "abc\n", "def\n", "ghi\n", "xyz\n"], [
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #6",function(done){
|
||||
var expected = ["0123\n", "abc\n", "xyz\n"];
|
||||
var result = runMutationTest(["123\n", "abc\n", "def\n", "ghi\n", "xyz\n"], [
|
||||
['insert', "0"],
|
||||
['skip', 4, 1],
|
||||
['skip', 4, 1],
|
||||
['remove', 8, 2, "def\nghi\n"],
|
||||
['skip', 4, 1]
|
||||
], ["0123\n", "abc\n", "xyz\n"]);
|
||||
|
||||
runMutationTest(7, ["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"], [
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #7",function(done){
|
||||
var expected = ["banana\n", "cabbage\n", "duffle\n"];
|
||||
var result = runMutationTest(["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"], [
|
||||
['remove', 6, 1, "apple\n"],
|
||||
['skip', 15, 2, true],
|
||||
['skip', 6, 0, true],
|
||||
['remove', 1, 1, "\n"],
|
||||
['remove', 8, 0, "eggplant"],
|
||||
['skip', 1, 1, true]
|
||||
], ["banana\n", "cabbage\n", "duffle\n"]);
|
||||
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
// #2836 regressions
|
||||
runMutationTest(8, ["\n","foo\n","\n"], [
|
||||
it("applies mutations to an array of lines #8",function(done){
|
||||
var expected = ["foo\n","c"];
|
||||
var result = runMutationTest(["\n","foo\n","\n"], [
|
||||
['remove', 1, 1, "\n"],
|
||||
['skip', 4, 1, false],
|
||||
['remove', 1, 1, "\n"],
|
||||
['insert',"c"]
|
||||
], ["foo\n","c"]);
|
||||
runMutationTest(9, ["\n","foo\n","\n"], [
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #9",function(done){
|
||||
var expected = ["fooc"];
|
||||
var result = runMutationTest(["\n","foo\n","\n"], [
|
||||
['remove', 1, 1, "\n"],
|
||||
['skip', 3, 0, false],
|
||||
['remove', 2, 2, "\n\n"],
|
||||
['insert',"c"]
|
||||
], ["fooc"]);
|
||||
runMutationTest(10, ["\n"], [
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #10",function(done){
|
||||
var expected = ["c"]; //TODO find out if c must have a newline because of unknown constraints
|
||||
var result = runMutationTest(["\n"], [
|
||||
['remove', 1, 1, "\n"],
|
||||
['insert',"c", 0]
|
||||
], ["c"]); //TODO find out if c must have a newline because of unknown constraints
|
||||
runMutationTest(11, ["\n"], [
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #11",function(done){
|
||||
var expected = ["ac\n"];
|
||||
var result = runMutationTest(["\n"], [
|
||||
['remove', 1, 1, "\n"],
|
||||
['insert', "a"],
|
||||
['insert',"c\n", 1]
|
||||
], ["ac\n"]);
|
||||
runMutationTest(12, ["\n"], [
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
it("applies mutations to an array of lines #12",function(done){
|
||||
var expected = ["a\n","c"]; //TODO find out if c must have a newline because of unknown constraints
|
||||
var result = runMutationTest(["\n"], [
|
||||
['remove', 1, 1, "\n"],
|
||||
['insert', "a\n", 1],
|
||||
['insert',"c"]
|
||||
], ["a\n","c"]); //TODO find out if c must have a newline because of unknown constraints
|
||||
]);
|
||||
if (!assertEqualArrays(result[0], expected)) throw new Error("textLinesMutator result is wrong: expected "+expected+" got "+result[0]);
|
||||
if (!assertEqualArrays(result[1], expected)) throw new Error("mutateTextLines result is wrong: expected "+expected+" got "+result[1]);
|
||||
if (!assertEqualStrings(result[2], expected.join(''))) throw new Error('applyToText result is wrong: expected '+expected.join('')+" got "+result[2]);
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
function poolOrArray(attribs) {
|
||||
if (attribs.getAttrib) {
|
||||
|
@ -897,5 +973,4 @@ function random() {
|
|||
assertEqualArrays(origLines, lines);
|
||||
assertEqualArrays(origALines, alines);
|
||||
}
|
||||
|
||||
for (var i = 0; i < 30; i++) testInverseRandom(i);
|
||||
|
|
|
@ -10,11 +10,11 @@ exports.literal = function (v) {
|
|||
}
|
||||
|
||||
exports.assertEqualArrays = function (a, b) {
|
||||
exports.assert("JSON.stringify(" + exports.literal(a) + ") == JSON.stringify(" + exports.literal(b) + ")");
|
||||
return JSON.stringify(a) === JSON.stringify(b);
|
||||
}
|
||||
|
||||
exports.assertEqualStrings = function (a, b) {
|
||||
exports.assert(exports.literal(a) + " == " + exports.literal(b));
|
||||
return a === b
|
||||
}
|
||||
|
||||
exports.throughIterator = function (opsStr) {
|
||||
|
|
Loading…
Reference in a new issue