mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-28 11:26:16 -04:00
first version after migration to mocha
This commit is contained in:
parent
876d7db39a
commit
5becf0bd15
13 changed files with 1222 additions and 1613 deletions
167
tests/backend/specs/easysync/other.js
Normal file
167
tests/backend/specs/easysync/other.js
Normal file
|
@ -0,0 +1,167 @@
|
|||
|
||||
var Changeset = require("ep_etherpad-lite/static/js/Changeset");
|
||||
var AttributePool = require("ep_etherpad-lite/static/js/AttributePool");
|
||||
var helper = require("./helper.js")
|
||||
var assertEqualStrings = helper.assertEqualStrings;
|
||||
var assertEqualArrays = helper.assertEqualArrays;
|
||||
var assert = helper.assert;
|
||||
|
||||
|
||||
describe("other",function(){
|
||||
it("testMakeSplice",function(done){
|
||||
var t = "a\nb\nc\n";
|
||||
var t2 = Changeset.applyToText(Changeset.makeSplice(t, 5, 0, "def"), t);
|
||||
assertEqualStrings("a\nb\ncdef\n", t2);
|
||||
|
||||
done();
|
||||
})
|
||||
it("testToSplices",function(done){
|
||||
var cs = Changeset.checkRep('Z:z>9*0=1=4-3+9=1|1-4-4+1*0+a$123456789abcdefghijk');
|
||||
var correctSplices = [
|
||||
[5, 8, "123456789"],
|
||||
[9, 17, "abcdefghijk"]
|
||||
];
|
||||
assertEqualArrays(correctSplices, Changeset.toSplices(cs));
|
||||
|
||||
done();
|
||||
})
|
||||
it("testOpAttributeValue",function(done){
|
||||
|
||||
var p = new AttributePool();
|
||||
p.putAttrib(['name', 'david']);
|
||||
p.putAttrib(['color', 'green']);
|
||||
|
||||
assertEqualStrings("david", Changeset.opAttributeValue(Changeset.stringOp('*0*1+1'), 'name', p));
|
||||
assertEqualStrings("david", Changeset.opAttributeValue(Changeset.stringOp('*0+1'), 'name', p));
|
||||
assertEqualStrings("", Changeset.opAttributeValue(Changeset.stringOp('*1+1'), 'name', p));
|
||||
assertEqualStrings("", Changeset.opAttributeValue(Changeset.stringOp('+1'), 'name', p));
|
||||
assertEqualStrings("green", Changeset.opAttributeValue(Changeset.stringOp('*0*1+1'), 'color', p));
|
||||
assertEqualStrings("green", Changeset.opAttributeValue(Changeset.stringOp('*1+1'), 'color', p));
|
||||
assertEqualStrings("", Changeset.opAttributeValue(Changeset.stringOp('*0+1'), 'color', p));
|
||||
assertEqualStrings("", Changeset.opAttributeValue(Changeset.stringOp('+1'), 'color', p));
|
||||
done();
|
||||
})
|
||||
|
||||
it("turn c<b>a</b>ctus\n into a<b>c</b>tusabcd\n",function(done){
|
||||
runApplyToAttributionTest(1, ['bold,', 'bold,true'], "Z:7>3-1*0=1*1=1=3+4$abcd", "+1*1+1|1+5", "+1*1+1|1+8");
|
||||
done();
|
||||
})
|
||||
it("turn david\ngreenspan\n into <b>david\ngreen</b>\n",function(done){
|
||||
runApplyToAttributionTest(2, ['bold,', 'bold,true'], "Z:g<4*1|1=6*1=5-4$", "|2+g", "*1|1+6*1+5|1+1");
|
||||
done();
|
||||
})
|
||||
|
||||
it("test filter1",function(done){
|
||||
testFilterAttribNumbers(1, "*0*1+1+2+3*1+4*2+5*0*2*1*b*c+6", function (n) {
|
||||
return (n % 2) == 0;
|
||||
}, "*0+1+2+3+4*2+5*0*2*c+6");
|
||||
|
||||
done();
|
||||
})
|
||||
it("test filter2",function(done){
|
||||
|
||||
testFilterAttribNumbers(2, "*0*1+1+2+3*1+4*2+5*0*2*1*b*c+6", function (n) {
|
||||
return (n % 2) == 1;
|
||||
}, "*1+1+2+3*1+4+5*1*b+6");
|
||||
done();
|
||||
})
|
||||
it("take FFFFTTTTT and apply -FT--FFTT, the inverse of which is --F--TT--",function(done){
|
||||
testInverse(1, "Z:9>0=1*0=1*1=1=2*0=2*1|1=2$", null, ["+4*1+5"], ['bold,', 'bold,true'], "Z:9>0=2*0=1=2*1=2$");
|
||||
done();
|
||||
})
|
||||
it("testMutateTextLines 1",function(done){
|
||||
|
||||
testMutateTextLines(1, "Z:4<1|1-2-1|1+1+1$\nc", ["a\n", "b\n"], ["\n", "c\n"]);
|
||||
done();
|
||||
})
|
||||
it("testMutateTextLines 2",function(done){
|
||||
|
||||
testMutateTextLines(2, "Z:4>0|1-2-1|2+3$\nc\n", ["a\n", "b\n"], ["\n", "c\n", "\n"]);
|
||||
done();
|
||||
})
|
||||
xit("throughIterator",function(done){
|
||||
|
||||
var x = '-c*3*4+6|3=az*asdf0*1*2*3+1=1-1+1*0+1=1-1+1|c=c-1';
|
||||
assert("throughIterator(" + literal(x) + ") == " + literal(x));
|
||||
done();
|
||||
})
|
||||
xit("throughSmartAssembler",function(done){
|
||||
|
||||
var x = '-c*3*4+6|3=az*asdf0*1*2*3+1=1-1+1*0+1=1-1+1|c=c-1';
|
||||
assert("throughSmartAssembler(" + literal(x) + ") == " + literal(x));
|
||||
done();
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
// throughIterator is not used
|
||||
function throughIterator(opsStr) {
|
||||
var iter = Changeset.opIterator(opsStr);
|
||||
var assem = Changeset.opAssembler();
|
||||
while (iter.hasNext()) {
|
||||
assem.append(iter.next());
|
||||
}
|
||||
return assem.toString();
|
||||
}
|
||||
|
||||
// throughSmartAssembler is not used
|
||||
function throughSmartAssembler(opsStr) {
|
||||
var iter = Changeset.opIterator(opsStr);
|
||||
var assem = Changeset.smartOpAssembler();
|
||||
while (iter.hasNext()) {
|
||||
assem.append(iter.next());
|
||||
}
|
||||
assem.endDocument();
|
||||
return assem.toString();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function testMutateTextLines(testId, cs, lines, correctLines) {
|
||||
|
||||
var a = lines.slice();
|
||||
Changeset.mutateTextLines(cs, a);
|
||||
assertEqualArrays(correctLines, a);
|
||||
}
|
||||
|
||||
function testInverse(testId, cs, lines, alines, pool, correctOutput) {
|
||||
|
||||
pool = poolOrArray(pool);
|
||||
var str = Changeset.inverse(Changeset.checkRep(cs), lines, alines, pool);
|
||||
assertEqualStrings(correctOutput, str);
|
||||
}
|
||||
|
||||
function testFilterAttribNumbers(testId, cs, filter, correctOutput) {
|
||||
|
||||
var str = Changeset.filterAttribNumbers(cs, filter);
|
||||
assertEqualStrings(correctOutput, str);
|
||||
}
|
||||
|
||||
function runApplyToAttributionTest(testId, attribs, cs, inAttr, outCorrect) {
|
||||
var p = poolOrArray(attribs);
|
||||
var result = Changeset.applyToAttribution(
|
||||
Changeset.checkRep(cs), inAttr, p);
|
||||
assertEqualStrings(outCorrect, result);
|
||||
}
|
||||
|
||||
|
||||
function poolOrArray(attribs) {
|
||||
if (attribs.getAttrib) {
|
||||
return attribs; // it's already an attrib pool
|
||||
} else {
|
||||
// assume it's an array of attrib strings to be split and added
|
||||
var p = new AttributePool();
|
||||
attribs.forEach(function (kv) {
|
||||
p.putAttrib(kv.split(','));
|
||||
});
|
||||
return p;
|
||||
}
|
||||
}
|
||||
function literal(v) {
|
||||
if ((typeof v) == "string") {
|
||||
return '"' + v.replace(/[\\\"]/g, '\\$1').replace(/\n/g, '\\n') + '"';
|
||||
} else
|
||||
return JSON.stringify(v);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue