module('cmd'); test('cmd.wrap', function() { var p = K.query('#test-data-01 p'), cloneP, div, strong, range, cmd; var div = K('
'); document.body.appendChild(div.get()); //1 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNode(strong); cmd = K.cmd(range); cmd.wrap(''); equals(range.html(), 'efg'); document.body.removeChild(cloneP); //2 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNode(strong); cmd = K.cmd(range); cmd.wrap(''); equals(range.html(), 'efg'); document.body.removeChild(cloneP); //3 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNodeContents(cloneP); cmd = K.cmd(range); cmd.wrap(''); ok(K.queryAll('span[style]', cloneP).length === 7); equals(range.toString(), 'abcdefghijkxyz0123456789'); document.body.removeChild(cloneP); //4 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNodeContents(cloneP); cmd = K.cmd(range); cmd.wrap(''); ok(K.queryAll('span[class="aaa"]', cloneP).length === 7); equals(range.toString(), 'abcdefghijkxyz0123456789'); document.body.removeChild(cloneP); //5 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 2); cmd = K.cmd(range); cmd.wrap(''); equals(range.html(), 'f'); document.body.removeChild(cloneP); //6 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 3); cmd = K.cmd(range); cmd.wrap(''); equals(range.html(), 'fg'); document.body.removeChild(cloneP); //7 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 2); cmd = K.cmd(range); cmd.wrap(''); equals(range.html(), 'f'); document.body.removeChild(cloneP); //8 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(cloneP, 1); range.setEnd(strong.firstChild, 3); cmd = K.cmd(range); cmd.wrap(''); equals(range.html(), 'efg'); document.body.removeChild(cloneP); //9 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNodeContents(strong); range.collapse(true); cmd = K.cmd(range); cmd.wrap(''); equals(strong.innerHTML.toLowerCase(), 'efg'); document.body.removeChild(cloneP); //10 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNodeContents(cloneP); cmd = K.cmd(range); cmd.wrap('
'); equals(K(cloneP).first().name, 'div'); same(K(cloneP).children().length, 1); document.body.removeChild(cloneP); //11 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(strong.firstChild, 3); range.setEnd(strong.nextSibling, 3); cmd = K.cmd(range); cmd.wrap(''); equals(cmd.range.html(), 'hij'); document.body.removeChild(cloneP); //12 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNode(strong); cmd = K.cmd(range); cmd.wrap('

'); equals(range.html().replace(/\s/g, ''), '

efg

'); document.body.removeChild(cloneP); //13 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 2); cmd = K.cmd(range); cmd.wrap(''); equals(range.html(), 'f'); document.body.removeChild(cloneP); //14 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 2); cmd = K.cmd(range); cmd.wrap(''); equals(range.html(), 'f'); document.body.removeChild(cloneP); //15 cloneP = K('

abc

').get(); document.body.appendChild(cloneP); range = K.range(document); range.selectNodeContents(cloneP); cmd = K.cmd(range); cmd.wrap(''); cmd.wrap(''); equals(range.html(), 'abc'); document.body.removeChild(cloneP); //16 div.html('

123

456

'); range = K.range(document); range.setStart(div.first().first()[0], 0); range.setEnd(div.last().last()[0], 3); cmd = K.cmd(range); cmd.wrap(''); equals(div.html().replace(/\n/, ''), '

123

456

'); div.html(''); //17 div.html('123456'); range = K.range(document); range.setStart(div.first()[0], 2); range.setEnd(div.first()[0], 3); cmd = K.cmd(range); cmd.wrap(''); equals(range.html(), '3'); div.html(''); }); test('cmd.remove', function() { var p = K.query('#test-data-01 p'), cloneP, strong, range, cmd; var div = K('
'); document.body.appendChild(div[0]); //1 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNode(strong); cmd = K.cmd(range); cmd.remove({ strong : '*' }); equals(cmd.range.html(), 'efg'); document.body.removeChild(cloneP); //2 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNode(strong); cmd = K.cmd(range); cmd.remove({ '*' : '*' }); equals(cmd.range.html(), 'efg'); document.body.removeChild(cloneP); //3 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNode(strong); cmd = K.cmd(range); cmd.remove({ 'span' : '*' }); equals(cmd.range.html(), 'efg'); document.body.removeChild(cloneP); //4 div.html('efg'); range = K.range(document); range.setStart(div.first().first()[0], 1); range.setEnd(div.first().first()[0], 2); cmd = K.cmd(range); cmd.remove({ 'strong' : '*' }); equals(div.html(), 'efg'); equals(cmd.range.toString(), 'f'); div.html(''); //5 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(strong.firstChild, 0); range.setEnd(strong.firstChild, 3); cmd = K.cmd(range); cmd.remove({ 'strong' : '*' }); equals(cmd.range.toString(), 'efg'); document.body.removeChild(cloneP); //6 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); K(strong).addClass('abc').css('color', '#FF0000'); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 2); cmd = K.cmd(range); cmd.remove({ 'strong' : 'class' }); equals(range.html().toLowerCase(), 'f'); document.body.removeChild(cloneP); //7 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); K(strong).addClass('abc').css('color', '#FF0000'); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 2); cmd = K.cmd(range); cmd.remove({ 'strong' : 'class,style' }); equals(cmd.range.html().toLowerCase(), 'f'); document.body.removeChild(cloneP); //8 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); K(strong).addClass('abc').css('color', '#FF0000'); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 2); cmd = K.cmd(range); cmd.remove({ 'strong' : 'class,.color,.background-color' }); equals(cmd.range.html().toLowerCase(), 'f'); document.body.removeChild(cloneP); //9 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(cloneP, 1); range.setEnd(strong.firstChild, 3); cmd = K.cmd(range); cmd.remove({ 'strong' : '*' }); equals(range.html(), 'efg'); document.body.removeChild(cloneP); //10 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); strong.innerHTML = 'efg'; range = K.range(document); range.setStart(strong.firstChild.firstChild, 1); range.setEnd(strong.firstChild.firstChild, 2); cmd = K.cmd(range); cmd.remove({ 'strong' : '*' }); equals(range.html(), 'f'); document.body.removeChild(cloneP); //11 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); strong.innerHTML = 'efg'; range = K.range(document); range.setStart(strong.firstChild.firstChild, 0); range.setEnd(strong.firstChild.firstChild, 3); cmd = K.cmd(range); cmd.remove({ 'strong' : '*' }); equals(K(cloneP).html().substr(0, 11), 'abcdefghijk'); document.body.removeChild(cloneP); //12 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 1); cmd = K.cmd(range); cmd.remove({ 'strong' : '*' }); var str = 'abcdefg'; equals(K(cloneP).html().substr(0, str.length), str); document.body.removeChild(cloneP); //13 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.setStart(strong.firstChild, 1); range.setEnd(strong.firstChild, 2); cmd = K.cmd(range); cmd.remove({ 'strong' : '*' }); cmd.wrap(''); equals(range.html(), 'f'); document.body.removeChild(cloneP); //14 cloneP = p.cloneNode(true); document.body.appendChild(cloneP); strong = K.query('strong', cloneP); range = K.range(document); range.selectNodeContents(strong); cmd = K.cmd(range); cmd.remove({ strong : '*' }); equals(range.html(), 'efg'); document.body.removeChild(cloneP); }); test('cmd.execute', function() { var div = K('
'), node, range; document.body.appendChild(div[0]); //1 node = K('abcd').get(); div.append(node); range = K.range(document); range.selectNode(node); cmd = K.cmd(range); cmd.bold(); cmd.bold(); equals(range.html(), 'abcd'); div.html(''); //2 div.html('abcd'); range = K.range(document); range.setStart(div.first().get(), 0); range.setEnd(div.first().get(), 4); cmd = K.cmd(range); cmd.bold(); cmd.italic(); equals(range.html(), 'abcd'); div.html(''); //3 div.html('abcd'); range = K.range(document); range.setStart(div.first().get(), 0); range.setEnd(div.first().get(), 4); cmd = K.cmd(range); cmd.bold(); cmd.italic(); cmd.bold(); equals(range.html(), 'abcd'); div.html(''); //4 div.html('abcdefghi'); range = K.range(document); range.setStart(div.first().first().get(), 3); range.setEnd(div.first().next().first().get(), 3); cmd = K.cmd(range); cmd.bold(); equals(range.html(), 'def'); div.html(''); //5 div.html('
abcdefg
hijk
'); range = K.range(document); range.selectNodeContents(div[0]); cmd = K.cmd(range); cmd.removeformat(); equals(range.html(), '
abcdefg
hijk
'); div.html(''); //6 div.html('

abcd

1234

'); range = K.range(document); range.selectNodeContents(div[0]); cmd = K.cmd(range); cmd.bold(); equals(range.html().replace(/\n/, ''), '

abcd

1234

'); cmd.removeformat(); equals(range.html().replace(/\n/, ''), '

abcd

1234

'); div.html(''); //7 div.html('

abcd

1234

'); range = K.range(document); range.setStart(div.first().first().last()[0], 0); range.setEnd(div.last().last().last()[0], 4); cmd = K.cmd(range); cmd.removeformat(); equals(range.html().replace(/\n/, ''), '

abcd

1234

'); div.html(''); //8 div.html('

abcd

1234

'); range = K.range(document); range.setStart(div.first().first().first()[0], 0); range.setEnd(div.last().last().last()[0], 4); cmd = K.cmd(range); cmd.italic(); equals(range.html().replace(/\n/, ''), '

abcd

1234

'); div.html(''); //9 div.html('

abcd

1234

'); range = K.range(document); range.setStart(div.first().first()[0], 0); range.setEnd(div.last().last()[0], 1); cmd = K.cmd(range); cmd.italic(); equals(range.html().replace(/\n/, ''), '

abcd

1234

'); div.html(''); //10 div.html('
1
0123456789'); range = K.range(document); range.setStart(div.last()[0], 4); range.setEnd(div.last()[0], 6); cmd = K.cmd(range); cmd.bold(); cmd.bold(); cmd.bold(); equals(range.html().replace(/\n/, ''), '45'); div.html(''); //11 div.html('
1
0123456789'); range = K.range(document); range.setStart(div.last().prev().prev()[0], 4); range.setEnd(div.last()[0], 0); cmd = K.cmd(range); cmd.bold(); equals(range.html().replace(/\n/, ''), '45'); div.html(''); //12 div.html('

123456789

'); range = K.range(document); range.setStart(div.first().first().first()[0], 0); range.setEnd(div.first().first().first().first()[0], 9); cmd = K.cmd(range); cmd.underline(); equals(div.html().replace(/\n/, ''), '

123456789

'); div.html(''); //13 div.html('

123456789

'); range = K.range(document); range.setStart(div.first().first().first()[0], 0); range.setEnd(div.first().first().first().first()[0], 9); cmd = K.cmd(range); cmd.bold(); equals(div.html().replace(/\n/, ''), '

123456789

'); div.html(''); //14 div.html('

1234

'); range = K.range(document); range.setStart(div.first().first()[0], 0); range.setEnd(div.first().first()[0], 4); cmd = K.cmd(range); cmd.removeformat(); equals(div.html().replace(/\n/, ''), '

1234

'); div.html(''); //15 div.html('abcdefg'); range = K.range(document); range.setStart(div[0], 0); range.setEnd(div[0], 2); cmd = K.cmd(range); cmd.removeformat(); same(range.html(), 'abcdefg'); div.html(''); //14 div.html('\nabcd\n'); range = K.range(document); range.setEnd(div[0], 0); range.setEnd(div.first().next()[0], 1); cmd = K.cmd(range); cmd.removeformat(); same(range.html(), 'abcd'); div.html(''); //15 div.html('abc'); range = K.range(document); range.selectNodeContents(div.last()[0]); cmd = K.cmd(range); cmd.bold(); equals(div.html(), 'abc'); div.html(''); }); test('cmd.inserthtml', function() { //1 var div = K('
1234
'); K(document.body).append(div); range = K.range(document); range.setStart(div.first()[0], 1); range.setEnd(div.first()[0], 1); cmd = K.cmd(range); cmd.inserthtml('abcd'); equals(div.html().replace(/\n/, ''), '1abcd234'); div.remove(); }); test('cmd.insertimage', function() { //1 var div = K('

123

123

'); K(document.body).append(div); range = K.range(document); var img = K('img', div); range.selectNode(img[0]); cmd = K.cmd(range); var url = 'http://www.kindsoft.net/images/logo.png'; cmd.insertimage(url); equals(K('img', div).attr('src'), url); div.remove(); });