Added tests to getRelativeContentOffset

Also fixed a typo in the implementation

Change-Id: I86855795009e34d42a3a5857addc5ccb6366130f
This commit is contained in:
Trevor Parscal 2012-05-11 12:14:29 -07:00
parent ae7b0c822b
commit 9cdfb84f9b
2 changed files with 72 additions and 4 deletions

View file

@ -258,7 +258,7 @@ ve.dm.Document.prototype.getRelativeContentOffset = function( offset, distance )
steps = 0;
distance = Math.abs( distance );
while ( i > 0 && i < this.data.length ) {
if ( !ve.dm.DocumentNode.isStructuralOffset( this.data, i ) ) {
if ( !ve.dm.Document.isStructuralOffset( this.data, i ) ) {
steps++;
offset = i;
if ( distance === steps ) {

View file

@ -198,11 +198,79 @@ test( 'rebuildNodes', function() {
ve.example.nodeTreeEqual( documentNode, tree );
} );
/*
test( 'getRelativeContentOffset', 1, function() {
var doc = new ve.dm.Document( ve.dm.example.data );
var cases = [
{
'msg': 'first content offset is farthest left',
'offset': 2,
'distance': -2,
'expected': 1
},
{
'msg': 'last content offset is farthest right',
'offset': 49,
'distance': 2,
'expected': 50
},
{
'msg': '1 right within text',
'offset': 1,
'distance': 1,
'expected': 2
},
{
'msg': '2 right within text',
'offset': 1,
'distance': 2,
'expected': 3
},
{
'msg': '1 left within text',
'offset': 2,
'distance': -1,
'expected': 1
},
{
'msg': '2 left within text',
'offset': 3,
'distance': -2,
'expected': 1
},
{
'msg': '1 right over elements',
'offset': 4,
'distance': 1,
'expected': 9
},
{
'msg': '2 right over elements',
'offset': 4,
'distance': 2,
'expected': 10
},
{
'msg': '1 left over elements',
'offset': 9,
'distance': -1,
'expected': 4
},
{
'msg': '2 left over elements',
'offset': 9,
'distance': -2,
'expected': 3
}
];
expect( cases.length );
for ( var i = 0; i < cases.length; i++ ) {
strictEqual(
doc.getRelativeContentOffset( cases[i].offset, cases[i].distance ),
cases[i].expected,
cases[i].msg
);
}
} );
*/
test( 'selectNodes', function() {
var doc = new ve.dm.Document( ve.dm.example.data ),