wiki-archive/twiki/pub/TWiki/KupuContrib/_kupu/tests/test_kupuinit.js

202 lines
8.1 KiB
JavaScript

/*****************************************************************************
*
* Copyright (c) 2003-2005 Kupu Contributors. All rights reserved.
*
* This software is distributed under the terms of the Kupu
* License. See LICENSE.txt for license text. For a list of Kupu
* Contributors see CREDITS.txt.
*
*****************************************************************************/
// $Id: test_kupuinit.js 9982 2005-03-21 09:53:57Z yuppie $
function InitKupuCheckersTestCase() {
this.name = 'InitKupuCheckersTestCase';
// Please note that we are cheating here a bit:
// 1. No idea how to get the real checkers without setting up a complete
// Kupu, so we work on a copy here.
// 2. We test parentElement, ParentWithStyleChecker and the arguments
// used in initKupu simultanously, so these tests don't tell you what's
// responsible if they fail.
/*Moz:
<span style="font-weight: bold;">foo</span>
<span style="font-style: italic;">bar</span>
<span style="text-decoration: underline;">baz</span>
<sub>spam</sub>
<sup>eggs</sup>
Moz noCSS:
<b>foo</b>
<i>bar</i>
<u>baz</u>
<sub>spam</sub>
<sup>eggs</sup>
IE:
<STRONG>foo</STRONG>
<EM>bar</EM>
<U>baz</U>
<SUB>spam</SUB>
<SUP>eggs</SUP>*/
SelectionTestCase.apply(this);
this.base_setUp = this.setUp;
this._makeBoldchecker = function() {
// XXX copied from initKupu, must be synced manually!
var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
'fontWeight', 'bold', 'bold');
return boldchecker;
};
this._makeItalicschecker = function() {
// XXX copied from initKupu, must be synced manually!
var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
'fontStyle', 'italic', 'italic');
return italicschecker;
};
this._makeUnderlinechecker = function() {
// XXX copied from initKupu, must be synced manually!
var underlinechecker = ParentWithStyleChecker(new Array('u'),
'textDecoration', 'underline', 'underline');
return underlinechecker;
};
this.setUp = function() {
this.base_setUp();
this.editor = new KupuEditor(this.kupudoc, {}, null);
};
this.testBoldcheckerBold = function() {
this.body.innerHTML = '<p>foo <b>bar</b></p>';
// select |ar|
this._setSelection(5, null, 7, false, 'ar');
var selNode = this.selection.parentElement();
var boldchecker = this._makeBoldchecker();
this.assertEquals(boldchecker(selNode, null, this.editor), true);
};
this.testBoldcheckerMixed = function() {
this.body.innerHTML = '<p>foo <b>bar</b></p>';
// select |o <b>bar|
this._setSelection(2, null, 7, false, 'o bar');
var selNode = this.selection.parentElement();
var boldchecker = this._makeBoldchecker();
this.assertEquals(boldchecker(selNode, null, this.editor), false);
};
this.testBoldcheckerBoldLeftOuter = function() {
this.body.innerHTML = '<p>foo <b>bar</b></p>';
// select |<b>bar|
this._setSelection(4, false, 7, false, 'bar');
var selNode = this.selection.parentElement();
var boldchecker = this._makeBoldchecker();
this.assertEquals(boldchecker(selNode, null, this.editor), true);
};
this.testBoldcheckerBoldInner = function() {
this.body.innerHTML = '<p>foo <b>bar</b></p>';
// select |bar|
this._setSelection(4, true, 7, false, 'bar');
var selNode = this.selection.parentElement();
var boldchecker = this._makeBoldchecker();
this.assertEquals(boldchecker(selNode, null, this.editor), true);
};
this.testBoldcheckerExecCommand = function() {
this.body.innerHTML = '<p>foo bar</p>';
// select |bar|
this._setSelection(4, true, 7, false, 'bar');
this.doc.execCommand('bold', null, null);
var selNode = this.selection.parentElement();
var boldchecker = this._makeBoldchecker();
this.assertEquals(boldchecker(selNode, null, this.editor), true);
};
this.testBoldcheckerExecCommandCollapsed = function() {
// XXX: the feature seems to work, but test is broken on IE
if (_SARISSA_IS_IE) return;
this.body.innerHTML = '<p>foo bar</p>';
// select ||
this._setSelection(3, null, 3, null, '');
this.doc.execCommand('bold', null, null);
var selNode = this.selection.parentElement();
var boldchecker = this._makeBoldchecker();
this.assertEquals(boldchecker(selNode, null, this.editor), true);
};
this.testBoldcheckerExecCommandNoCSS = function() {
if (_SARISSA_IS_IE) return;
this.doc.execCommand('useCSS', null, true);
this.body.innerHTML = '<p>foo bar</p>';
// select |bar|
this._setSelection(4, null, 7, false, 'bar');
this.doc.execCommand('bold', null, null);
var selNode = this.selection.parentElement();
var boldchecker = this._makeBoldchecker();
this.assertEquals(boldchecker(selNode, null, this.editor), true);
this.doc.execCommand('useCSS', null, false);
};
this.testBoldcheckerStrong = function() {
this.body.innerHTML = '<p>foo <strong>bar</strong></p>';
// select |ar|
this._setSelection(5, null, 7, false, 'ar');
var selNode = this.selection.parentElement();
var boldchecker = this._makeBoldchecker();
this.assertEquals(boldchecker(selNode, null, this.editor), true);
};
this.testBoldcheckerStyle = function() {
this.body.innerHTML =
'<p>foo <span style="font-weight: bold;">bar</span></p>';
// select |ar|
this._setSelection(5, null, 7, false, 'ar');
var selNode = this.selection.parentElement();
var boldchecker = this._makeBoldchecker();
this.assertEquals(boldchecker(selNode, null, this.editor), true);
};
this.testItalicscheckerItalics = function() {
this.body.innerHTML = '<p>foo <i>bar</i></p>';
// select |ar|
this._setSelection(5, null, 7, false, 'ar');
var selNode = this.selection.parentElement();
var italicschecker = this._makeItalicschecker();
this.assertEquals(italicschecker(selNode, null, this.editor), true);
};
this.testItalicscheckerEmphasis = function() {
this.body.innerHTML = '<p>foo <em>bar</em></p>';
// select |ar|
this._setSelection(5, null, 7, false, 'ar');
var selNode = this.selection.parentElement();
var italicschecker = this._makeItalicschecker();
this.assertEquals(italicschecker(selNode, null, this.editor), true);
};
this.testItalicscheckerStyle = function() {
this.body.innerHTML =
'<p>foo <span style="font-style: italic;">bar</span></p>';
// select |ar|
this._setSelection(5, null, 7, false, 'ar');
var selNode = this.selection.parentElement();
var italicschecker = this._makeItalicschecker();
this.assertEquals(italicschecker(selNode, null, this.editor), true);
};
this.testUnderlinecheckerStyle = function() {
this.body.innerHTML =
'<p>foo <span style="text-decoration: underline;">bar</span></p>';
// select |ar|
this._setSelection(5, null, 7, false, 'ar');
var selNode = this.selection.parentElement();
var underlinechecker = this._makeUnderlinechecker();
this.assertEquals(underlinechecker(selNode, null, this.editor), true);
};
};
InitKupuCheckersTestCase.prototype = new SelectionTestCase;