1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4
<title>DOM Test Suite</title>
6
<script type="text/javascript" src="../../../build/yui/yui-min.js"></script>
8
<script type="text/javascript">
9
YUI({ base: '../../../build/', filter: 'raw'}).use('dom', 'dom-deprecated', 'console', 'test', function(Y) {
10
var Assert = Y.Assert,
11
ArrayAssert = Y.ArrayAssert,
12
suite = new Y.Test.Suite("DOM Test Suite");
14
window.Y = Y; // export Y global for Selenium
15
new Y.Console({ height: '50em' }).render();
16
Y.Test.Runner.setName('DOM Tests');
18
var doc = document.getElementById('doc'),
19
hd = document.getElementById('hd'),
20
bd = document.getElementById('bd'),
21
ft = document.getElementById('ft'),
22
mod1 = document.getElementById('mod1'),
23
mod2 = document.getElementById('mod2'),
24
h1 = hd.getElementsByTagName('h1')[0],
25
main = document.getElementById('main'),
26
lorem = document.getElementById('lorem-ipsum'),
27
search = document.getElementById('search'),
28
search_fields = document.getElementById('search-fields'),
29
search_p = document.getElementById('search-p'),
30
foo = document.getElementById('foo'),
31
tmp = document.createElement('div');
33
suite.add( new Y.Test.Case({
36
test_byId: function() {
37
var inputs = document.getElementById('test-names').getElementsByTagName('input');
39
Assert.areEqual(doc, Y.DOM.byId('doc'), 'byId("doc")');
40
Assert.isNull(Y.DOM.byId('fake-id'), 'byId("fake-id")');
41
Assert.isNull(Y.DOM.byId(null), 'byId(null)');
42
Assert.isNull(Y.DOM.byId(), 'byId()');
46
Y.DOM.byId('test-name-id1'),
47
"Y.DOM.byId('test-name-id1')"
52
Y.DOM.byId('test-name-id2'),
53
"Y.DOM.byId('test-name-id2')"
57
test_getText: function() {
58
Assert.areEqual(h1.innerHTML, Y.DOM.getText(hd), 'getText("hd")');
59
Assert.areEqual('', Y.DOM.getText(tmp), 'getText(tmp)');
60
Assert.areEqual('', Y.DOM.getText(null), 'getText(null)');
61
Assert.areEqual('', Y.DOM.getText(), 'getText()');
64
test_setText: function() {
65
var node = document.createElement('div'),
66
content = 'testing text content';
68
document.body.appendChild(node);
69
Y.DOM.setText(node, content);
70
Assert.areEqual(content, Y.DOM.getText(node, content), 'setText("' + content + '")');
72
content = '<div>testing text content</div>';
73
Y.DOM.setText(node, content);
74
Assert.areEqual(content, Y.DOM.getText(node, content), 'setText("' + content + '")');
76
content = ' testing text content ';
77
Y.DOM.setText(node, content);
78
Assert.areEqual(content, Y.DOM.getText(node, content), 'setText("' + content + '")');
81
test_children: function() {
82
ArrayAssert.itemsAreEqual([], Y.DOM.children(tmp), 'children(tmp)');
83
ArrayAssert.itemsAreEqual([], Y.DOM.children(null), 'children(null)');
84
ArrayAssert.itemsAreEqual([], Y.DOM.children(), 'children()');
85
ArrayAssert.itemsAreEqual([hd, bd, ft], Y.DOM.children(doc), 'children(doc)');
88
ArrayAssert.itemsAreEqual([mod1, mod2], Y.DOM.children(main, function(node) {
89
return node.className === 'mod';
90
}), 'children(main, fn)');
94
test_getStyle: function() {
95
Assert.areEqual('left',
96
Y.DOM.getStyle(foo, 'float'), 'getStyle(foo, "float")');
98
doc.style.marginBottom = '10px';
100
Assert.areEqual('10px',
101
Y.DOM.getStyle(doc, 'marginBottom'), 'doc, marginBottom');
103
Assert.areEqual('static',
104
Y.DOM.getStyle(doc, 'position'), 'doc, position');
107
test_setStyle: function() {
108
Y.DOM.setStyle(ft, 'opacity', 0.5);
109
Assert.areEqual(Y.DOM.getStyle(ft, 'opacity'),
110
0.5, "Y.DOM.getStyle(ft, 'opacity')");
112
Y.DOM.setStyle(main, 'float', 'none');
113
Assert.areEqual('none', Y.DOM.getStyle(main, 'float'),
114
'wrong style returned');
117
Y.DOM.setStyle(ft, 'width', '-1');
119
Assert.fail('setStyle invalid width error');
123
Y.DOM.setStyle(ft, 'height', '-1');
125
Assert.fail('setStyle invalid height error');
128
Y.DOM.setStyle(ft, 'display', 'none');
129
Assert.areEqual('none', Y.DOM.getStyle(ft, 'display'), "Y.DOM.setStyle(ft, 'display', 'none')");
131
Y.DOM.setStyle(ft, 'display', null);
132
Assert.areEqual('block', Y.DOM.getStyle(ft, 'display'), "Y.DOM.setStyle(ft, 'display', null)");
134
Y.DOM.setStyle(ft, 'display', 'none');
135
Y.DOM.setStyle(ft, 'display', '');
136
Assert.areEqual('block', Y.DOM.getStyle(ft, 'display'), "Y.DOM.setStyle(ft, 'display', '')");
138
Y.DOM.setStyle(ft, 'opacity', null);
139
Assert.areEqual(0.75, Y.DOM.getStyle(ft, 'opacity'), "Y.DOM.setStyle(ft, 'opacity', null)");
140
Y.DOM.setStyle(ft, 'opacity', 0);
141
Y.DOM.setStyle(ft, 'opacity', '');
142
Assert.areEqual(0.75, Y.DOM.getStyle(ft, 'opacity'), "Y.DOM.setStyle(ft, 'opacity', '')");
144
Y.DOM.setStyle(ft, 'height', '100');
145
Assert.areEqual('100px', Y.DOM.getStyle(ft, 'height'),
146
"Y.DOM.setStyle(ft, 'height', '100')");
149
Y.DOM.setStyle(ft, 'height', '');
151
Assert.fail('error thrown setting height: ""');
154
Assert.areEqual('200px', Y.DOM.getStyle(ft, 'height'),
155
"Y.DOM.setStyle(ft, 'height', '')");
157
Y.DOM.setStyle(ft, 'height', '100');
158
Y.DOM.setStyle(ft, 'height');
159
Assert.areEqual('100px', Y.DOM.getStyle(ft, 'height'),
160
"Y.DOM.setStyle(ft, 'height')");
162
Y.DOM.setStyle(ft, 'height', null);
163
Assert.areEqual('200px', Y.DOM.getStyle(ft, 'height'),
164
"Y.DOM.setStyle(ft, 'height', null)");
168
test_styleDefaultUnit: function() {
169
var node = Y.DOM.byId('ft'),
174
attr = 'borderTopWidth';
175
Y.DOM.setStyle(node, attr, num);
176
Assert.areEqual(value, Y.DOM.getStyle(node, attr), attr + ': ' + num);
181
Y.DOM.setStyle(node, attr, num);
182
Assert.areEqual(value, Y.DOM.getStyle(node, attr), attr + ': ' + num);
184
attr = 'borderTopWidth';
187
Y.DOM.setStyle(node, attr, num);
188
Assert.areEqual(value, Y.DOM.getStyle(node, attr), attr + ': ' + num);
193
Y.DOM.setStyle(node, attr, num);
194
Assert.areEqual(value, Y.DOM.getStyle(node, attr), attr + ': ' + num);
197
test_create: function() {
199
var el = Y.DOM.create(html);
200
Assert.isNull(el, html);
203
var el = Y.DOM.create(html);
204
Assert.isNull(el, html);
206
var html = '<div>fresh</div>';
207
var el = Y.DOM.create(html);
208
Assert.areEqual('DIV', el.tagName, html);
210
html = '<input type="submit">';
211
el = Y.DOM.create(html);
212
Assert.areEqual('INPUT', el.tagName, html);
214
html = '<input name="test-input" type="radio">';
215
el = Y.DOM.create(html);
216
Assert.areEqual('radio', el.type, html);
217
Assert.areEqual('test-input', el.name, html);
219
html = '<form></form>';
220
el = Y.DOM.create(html);
221
Assert.areEqual('FORM', el.tagName, html);
223
html = '<label>fresh</label>';
224
el = Y.DOM.create(html);
225
Assert.areEqual('LABEL', el.tagName, html);
227
html = '<li>fresh</li>';
228
el = Y.DOM.create(html);
229
Assert.areEqual('LI', el.tagName, html);
231
html = '<ul><li>fresh</li></ul>';
232
el = Y.DOM.create(html);
233
Assert.areEqual(1, el.childNodes.length, html);
236
el = Y.DOM.create(html);
237
Assert.areEqual('TR', el.tagName, html);
239
html = '<td>fresh</td>';
240
el = Y.DOM.create(html);
241
Assert.areEqual('TD', el.tagName, html);
243
html = '<th>fresh</th>';
244
el = Y.DOM.create(html);
245
Assert.areEqual('TH', el.tagName, html);
247
html = '<thead></thead>';
248
el = Y.DOM.create(html);
249
Assert.areEqual('THEAD', el.tagName, html);
251
html = '<caption>fresh</caption>';
252
el = Y.DOM.create(html);
253
Assert.areEqual('CAPTION', el.tagName, html);
256
html = '<col></col>';
257
el = Y.DOM.create(html);
258
Assert.areEqual('COL', el.tagName, html);
261
html = '<colgroup></colgroup>';
262
el = Y.DOM.create(html);
263
Assert.areEqual('COLGROUP', el.tagName, html);
265
html = '<colgroup><col><col></colgroup>';
266
el = Y.DOM.create(html);
267
Assert.areEqual('COLGROUP', el.tagName, html);
269
html = '<button>fresh</button>';
270
el = Y.DOM.create(html);
271
Assert.areEqual('BUTTON', el.tagName, html);
273
html = '<optgroup></optgroup>';
274
el = Y.DOM.create(html);
275
Assert.areEqual('OPTGROUP', el.tagName, html);
277
html = '<optgroup><option>foo</option></optgroup>';
278
el = Y.DOM.create(html);
279
Assert.areEqual('OPTGROUP', el.tagName, html);
281
html = '<dd>fresh</dd>';
282
el = Y.DOM.create(html);
283
Assert.areEqual('DD', el.tagName, html);
285
html = '<dt>fresh</dt>';
286
el = Y.DOM.create(html);
287
Assert.areEqual('DT', el.tagName, html);
289
html = '<select><option>foo</option><option>bar</option></select>';
290
el = Y.DOM.create(html);
291
Assert.areEqual('SELECT', el.tagName, html);
292
Assert.areEqual(2, el.childNodes.length, html);
294
html = '<table><tr><td>foo</td><td>bar</td></tr></table>';
295
el = Y.DOM.create(html);
296
Assert.areEqual('TABLE', el.tagName, html);
297
Assert.areEqual(1, el.childNodes.length, html);
299
html = '<tr><td>foo</td><td>bar</td></tr>';
300
el = Y.DOM.create(html);
301
Assert.areEqual('TR', el.tagName, html);
302
Assert.areEqual(2, el.childNodes.length, html);
304
html = '<iframe src="http://search.yahoo.com/" id="yui-iframetest"></iframe>';
305
el = Y.DOM.create(html);
306
Assert.areEqual('http://search.yahoo.com/', el.src, html);
307
Assert.areEqual('yui-iframetest', el.id, html);
310
html = '<scr' + 'ipt src="http://search.yahoo.com/"></scr' + 'ipt>';
311
el = Y.DOM.create(html);
312
Assert.areEqual('SCRIPT', el.tagName, html);
313
Assert.areEqual('http://search.yahoo.com/', el.src, html);
315
html = '<link href="http://search.yahoo.com/" rel="stylesheet">';
316
el = Y.DOM.create(html);
317
Assert.areEqual('LINK', el.tagName, html);
318
Assert.areEqual('http://search.yahoo.com/', el.href, html);
319
Assert.areEqual(el.rel, 'stylesheet', html);
322
html = '<option>fresh</option>';
323
el = Y.DOM.create(html);
324
Assert.areEqual('OPTION', el.tagName, html);
326
html = '<legend>fresh</legend>';
327
el = Y.DOM.create(html);
328
Assert.areEqual('LEGEND', el.tagName, html);
330
html = '<fieldset>fresh</fieldset>';
331
el = Y.DOM.create(html);
332
Assert.areEqual('FIELDSET', el.tagName, html);
334
html ='<div id="default-e34f85" class="mod view_default"> <div id="default-e34f85-hd" class="hd"><h2>Yahoo! Mail Preview</h2> <span class="mod-button-wrapper"> </span> </div> <div id="default-e34f85-bd" class="bd type_mail type_mail_default"> <p class="divider-b small text-right"><a href="http://us.lrd.yahoo.com/_ylt=AhQqDwn_HdUEqFrWLI8HTGP1cSkA/SIG=10rfos93v/**http%3A//mail.yahoo.com/">Go to Yahoo! Mail</a></p> <img src="http://l.yimg.com/a/i/ww/met/mail_promo_060608.gif" alt="Yahoo! Mail avatar shows the possibilities of email" class="promo" width="300px"> <p class="x-large sign-in-link"><a href="https://us.lrd.yahoo.com/_ylt=AnGramz3WfSHqLcCWa92OGj1cSkA/SIG=12tb7s4o8/**https%3A//login.yahoo.com/config/mail%3F.intl=us%26.src=ym%26.done=http%3A//mail.yahoo.com">Sign in</a> to preview your email here.</p> <p class="med-small">The all-new Yahoo! Mail:<br>More ways to connect with everyone.</p> </div></div>';
335
el = Y.DOM.create(html);
336
Assert.areEqual('default-e34f85', el.id, html);
338
html = '<thead><tr><td><table><tbody><tr><td>fresh</td></tr></tbody></table></td></tr></thead>';
339
el = Y.DOM.create(html);
340
Assert.areEqual('THEAD', el.tagName, html);
343
html = '<li><a href=""></a></li>';
344
el = Y.DOM.create(html);
345
Assert.areEqual('A', el.firstChild.tagName, html);
347
html = '<option>foo</option>';
348
el = Y.DOM.create(html);
349
document.getElementById('test-select').appendChild(el);
350
Assert.isFalse(el.selected, 'el.selected(false)');
352
html = '<option selected>foo</option>';
353
el = Y.DOM.create(html);
354
document.getElementById('test-select').appendChild(el);
355
Assert.isTrue(el.selected, 'el.selected(true)');
357
// trim leading space
358
html = ' <div>foo</div>';
359
el = Y.DOM.create(html);
360
Assert.isTrue(el.tagName === 'DIV', html);
362
html = '<iframe border="0" frameBorder="0" marginWidth="0" marginHeight="0" leftMargin="0" topMargin="0" allowTransparency="true" width="100%" height="99%"></iframe>';
363
el = Y.DOM.create(html);
364
Assert.areEqual(document, el.ownerDocument, html);
367
html = '<thead><tr><td><table><thead></thead><tbody><tr><td>fresh</td></tr></tbody></table></td></tr></thead>';
368
el = Y.DOM.create(html);
369
Assert.areEqual('THEAD', el.tagName, html);
374
test_createNodes: function() {
375
var html = '<div>foo</div><div id="tmp-bar">bar</div><div>baz</div>';
376
var el = Y.DOM.create(html);
377
Assert.areEqual(3, el.childNodes.length, html);
378
Assert.areEqual('tmp-bar', el.childNodes[1].id, html);
379
Assert.areEqual('foo', el.childNodes[0].innerHTML, html);
381
html = '<option>foo</option><option id="tmp-bar">bar</option><option>baz</option>';
382
el = Y.DOM.create(html);
383
Assert.areEqual(3, el.childNodes.length, html);
384
Assert.areEqual('tmp-bar', el.childNodes[1].id, html);
386
html = '<option>foo</option><option selected>bar</option><option>baz</option>';
387
el = Y.DOM.create(html);
388
Assert.areEqual(3, el.childNodes.length, html);
389
Assert.isTrue(el.childNodes[1].selected, html);
391
html = '<td>foo</td><td id="tmp-bar">bar</td><td>baz</td>';
392
el = Y.DOM.create(html);
393
Assert.areEqual(3, el.childNodes.length, html);
394
Assert.areEqual('tmp-bar', el.childNodes[1].id, html);
396
html = '<tbody></tbody><tbody id="tmp-bar"></tbody><tbody></tbody>';
397
el = Y.DOM.create(html);
398
Assert.areEqual(3, el.childNodes.length, html);
399
Assert.areEqual('tmp-bar', el.childNodes[1].id, html);
400
html = '<thead><tr><td><table><tbody><tr><td>fresh</td></tr></tbody></table></td></tr></thead><tbody></tbody>';
401
el = Y.DOM.create(html);
402
Assert.areEqual(2, el.childNodes.length, html);
406
test_ancestor: function() {
407
Assert.areEqual(doc, Y.DOM.ancestor(hd), 'ancestor(hd)');
408
Assert.areEqual(doc, Y.DOM.ancestor(bd), 'ancestor(bd)');
409
Assert.areEqual(doc, Y.DOM.ancestor(bd), 'ancestor(bd)');
410
Assert.areEqual(document.body, Y.DOM.ancestor(bd, function(node) { return node.tagName === 'BODY';}), 'ancestor(bd, fn)');
411
Assert.areEqual(bd, Y.DOM.ancestor(bd, null, true), 'ancestor(bd, true)');
415
test_insertBefore: function() {
416
//Assert.areEqual(Y.DOM.insertBefore(ft, hd), Y.DOM.firstChild(doc), 'insertBefore(ft, hd)');
417
//Assert.areEqual(ft, Y.DOM.firstChild(doc), 'insertBefore(ft, hd)');
421
test_insertAfter: function() {
422
//Assert.areEqual(Y.DOM.insertAfter(hd, ft), ft.nextSibling, 'insertAfter(hd, ft)');
423
//Assert.areEqual(hd, ft.nextSibling, 'insertAfter(hd, ft)');
426
test_getAttribute: function() {
427
var node = Y.DOM.byId('doc');
428
Y.DOM.setAttribute(node, 'class', 'foo');
429
Assert.areEqual('foo', node.className, "Y.DOM.setAttribute(node, 'class', 'foo')");
430
Assert.areEqual('foo', Y.DOM.getAttribute(node, 'class'), "Y.DOM.getAttribute(node, 'class')");
431
Assert.areEqual('foo', Y.DOM.getAttribute(node, 'className'), "Y.DOM.getAttribute(node, 'className')");
433
Y.DOM.setAttribute(node, 'className', 'bar');
434
Assert.areEqual('bar', node.className, "node.className");
436
node = Y.DOM.byId('search-p-label');
437
Assert.areEqual('search-p', Y.DOM.getAttribute(node, 'for'), "Y.DOM.setAttribute(node, 'for', 'search-p')");
438
Assert.areEqual('search-p', Y.DOM.getAttribute(node, 'htmlFor'), "Y.DOM.setAttribute(node, 'htmlFor', 'search-p')");
441
test_getValue: function() {
443
var id = 'test-text-value',
446
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
448
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
449
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
451
id = 'test-text-novalue';
453
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
455
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
456
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
459
id = 'test-textarea-textvalue';
460
val = 'textarea text';
461
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
463
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
464
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
466
id = 'test-textarea-value';
468
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
470
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
471
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
473
id = 'test-textarea-novalue';
475
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
477
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
478
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
481
id = 'test-button-value';
482
val = 'button value';
483
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
485
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
486
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
488
id = 'test-button-novalue';
490
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
492
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
493
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
495
id = 'test-button-textvalue';
497
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
499
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
500
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
503
id = 'test-select-value';
504
val = 'option value';
505
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
507
id = 'test-select-novalue';
509
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
511
id = 'test-select-textvalue';
513
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
515
id = 'test-select-emptyvalue';
517
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
519
id = 'test-select-emptyvalue-notext';
521
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
524
id = 'test-option-value';
525
val = 'option value';
526
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
528
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
529
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
531
id = 'test-option-emptyvalue';
533
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
535
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
536
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
538
id = 'test-option-novalue';
540
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
542
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
543
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
545
id = 'test-option-emptyvalue-notext';
547
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
549
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
550
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
552
id = 'test-option-textvalue';
555
Assert.areEqual(val, Y.DOM.getValue(Y.DOM.byId(id)), id);
557
Y.DOM.setValue(Y.DOM.byId(id), 'new value');
558
Assert.areEqual('new value', Y.DOM.getValue(Y.DOM.byId(id)), id);
560
id = 'test-text-emptyvalue';
561
Assert.areEqual('""', Y.JSON.stringify(Y.DOM.getValue(Y.DOM.byId(id))),
562
"Y.JSON.stringify(Y.DOM.getValue(Y.DOM.byId(" + id + ")))");
565
test_position: function() { // basic position tests
566
var node = document.createElement('div');
567
ArrayAssert.itemsAreEqual([0, 0], Y.DOM.getXY(node), 'off-dom: [0, 0]');
569
// off-dom is unreliable due to cascade when appended
570
//Y.DOM.setXY(node, [100, 200]);
571
//ArrayAssert.itemsAreEqual([100, 200], Y.DOM.getXY(node), 'off-dom: [100, 200]');
573
Assert.isNull(Y.DOM.getXY(null), 'Y.DOM.getXY(null)');
575
document.body.appendChild(node);
576
Y.DOM.setXY(node, [100, 200]);
577
var pos = Y.DOM.getXY(node);
578
ArrayAssert.itemsAreEqual([100, 200], [Math.round(pos[0]), Math.round(pos[1])], 'setXY([100, 200]');
581
test_region: function() {
582
var node = Y.DOM.byId('doc'),
583
xy = Y.DOM.getXY(node),
584
region = Y.DOM.region(node);
586
Assert.isFalse(Y.DOM.region(null), 'Y.DOM.region(null)');
588
Assert.areEqual(xy[0], region.left, 'region.left');
589
Assert.areEqual(xy[1], region.top, 'region.top');
590
Assert.areEqual(xy[0], region[0], 'region[0]');
591
Assert.areEqual(xy[1], region[1], 'region[1]');
592
Assert.areEqual(node.offsetWidth, region.width, 'region.width');
593
Assert.areEqual(node.offsetHeight, region.height, 'region.height');
594
Assert.areEqual(node.offsetHeight + xy[1], region.bottom, 'region.bottom');
595
Assert.areEqual(node.offsetWidth + xy[0], region.right, 'region.right');
599
test_viewportRegion: function() {
600
var node = Y.DOM.byId('doc'),
601
scrollX = Y.DOM.docScrollX(node),
602
scrollY = Y.DOM.docScrollY(node),
603
winHeight = Y.DOM.winHeight(node),
604
winWidth = Y.DOM.winWidth(node),
605
region = Y.DOM.viewportRegion(node);
607
Assert.areEqual(scrollX, region.left, 'region.left');
608
Assert.areEqual(scrollY, region.top, 'region.top');
609
Assert.areEqual(scrollX, region[0], 'region[0]');
610
Assert.areEqual(scrollY, region[1], 'region[1]');
611
Assert.areEqual(winWidth, region.width, 'region.width');
612
Assert.areEqual(winHeight, region.height, 'region.height');
613
Assert.areEqual(scrollY + winHeight, region.bottom, 'region.bottom');
614
Assert.areEqual(scrollX + winWidth, region.right, 'region.right');
616
region = Y.DOM.viewportRegion();
617
Assert.areEqual(scrollX, region.left, 'region.left');
618
Assert.areEqual(scrollY, region.top, 'region.top');
619
Assert.areEqual(scrollX, region[0], 'region[0]');
620
Assert.areEqual(scrollY, region[1], 'region[1]');
621
Assert.areEqual(winWidth, region.width, 'region.width');
622
Assert.areEqual(winHeight, region.height, 'region.height');
623
Assert.areEqual(scrollY + winHeight, region.bottom, 'region.bottom');
624
Assert.areEqual(scrollX + winWidth, region.right, 'region.right');
628
test_addHTML: function() {
629
var node = Y.DOM.byId('test-add');
630
Y.DOM.addHTML(node, '<em>new content</em>');
631
Assert.areEqual('EM', node.lastChild.nodeName, "Y.DOM.addHTML(node, '<em>new content</em>')");
633
Y.DOM.addHTML(node, '<strong>new content</strong>', node.firstChild);
634
Assert.areEqual('STRONG', node.firstChild.nodeName, "Y.DOM.addHTML(node, '<em>new content</em>', node.firstChild)");
636
Y.DOM.addHTML(node, '<span>new content</span>', node.childNodes[1]);
637
Assert.areEqual('SPAN', node.childNodes[1].nodeName, "Y.DOM.addHTML(node, '<em>new content</em>', node.childNodes[1])");
639
Y.DOM.addHTML(node, 200);
640
Assert.areEqual(3, node.lastChild.nodeType, "Y.DOM.addHTML(node, 200)");
642
Y.DOM.addHTML(node, Y.DOM.create('<p>this is a <em>test</em></p>'));
643
Assert.areEqual('P', node.lastChild.nodeName, "Y.DOM.create('<p>this is a <em>test</em></p>')");
646
testFirstByTag: function() {
650
Assert.areEqual(root.getElementsByTagName(tag)[0],
651
Y.DOM.firstByTag(tag, root),
652
"Y.DOM.firstByTag(" + tag + " , " + root + ")"
656
root = document.getElementById('test-form');
658
Assert.areEqual(root.getElementsByTagName(tag)[0],
659
Y.DOM.firstByTag(tag, root),
660
"Y.DOM.firstByTag(" + tag + " , " + root + ")"
666
Assert.isNull(Y.DOM.firstByTag(tag, root),
667
"Y.DOM.firstByTag(" + tag + " , " + root + ")"
671
testToHex: function() {
672
var rgb = 'rgb(97, 11, 11)',
673
hex = Y.Color.toHex(rgb);
675
Assert.areEqual("#610B0B", hex, 'toHex(' + rgb + ')');
677
rgb = 'rgb(255, 255, 255)';
678
hex = Y.Color.toHex(rgb);
680
Assert.areEqual("#FFFFFF", hex, 'toHex(' + rgb + ')');
683
hex = Y.Color.toHex(rgb);
685
Assert.areEqual("#FFFFFF", hex, 'toHex(' + rgb + ')');
688
hex = Y.Color.toHex(rgb);
690
Assert.areEqual("#FFFFFF", hex, 'toHex(' + rgb + ')');
693
hex = Y.Color.toHex(rgb);
695
Assert.areEqual("#000000", hex, 'toHex(' + rgb + ')');
697
rgb = "rgb(97, 56, 11)" ;
698
hex = Y.Color.toHex(rgb);
699
Assert.areSame(hex, "#61380B", " shoudl be #61380B");
701
rgb = "rgb(11, 97, 11)" ; // 0B610B
702
hex = Y.Color.toHex(rgb);
703
Assert.areSame(hex, "#0B610B", " shoudl be #0B610B");
705
rgb = "rgb(56, 11, 97)" ; //380B61
706
hex = Y.Color.toHex(rgb);
707
Assert.areSame(hex, "#380B61", " shoudl be #380B61");
709
rgb = "rgb(97, 11, 56)" ; //610B38
710
hex = Y.Color.toHex(rgb);
711
Assert.areSame(hex, "#610B38", " shoudl be #610B38");
714
test_inDoc: function() {
715
var node = document.createElement('div');
716
Assert.isFalse(Y.DOM.inDoc(node), 'new off doc');
718
document.body.appendChild(node);
719
Assert.isTrue(Y.DOM.inDoc(node), 'new in doc');
721
document.body.removeChild(node);
722
Assert.isFalse(Y.DOM.inDoc(node), 'removed');
726
document.body.appendChild(node);
727
Assert.isTrue(Y.DOM.inDoc(node), 'dupe id in doc');
729
document.body.removeChild(node);
730
Assert.isFalse(Y.DOM.inDoc(node), 'dupe if off doc');
732
// test form with input name="id" (IE collision with form.id)
733
Assert.isTrue(Y.DOM.inDoc(Y.DOM.byId('search')), "form.id === 'search'");
736
Assert.isFalse(Y.DOM.inDoc(node), 'null node');
738
node = document.getElementById('ft');
739
node = node.cloneNode(true);
740
node.id = 'ft-clone';
741
Assert.isFalse(Y.DOM.inDoc(node), "clone inDoc false");
742
document.body.appendChild(node);
743
Assert.isTrue(Y.DOM.inDoc(node), "clone inDoc true");
747
Y.Test.Runner.add(suite);
749
if (parent && parent != window && Y.Test.Manager) {
750
Y.Test.Manager.load();
759
h1, h2, h3, h4, h5, h6, p, ul, ol, li {
769
border:5px solid #000;
779
float:left; /* required for getStyle test */
786
.yui3-skin-sam .yui-console-entry-pass .yui-console-entry-cat {
790
.yui3-skin-sam .yui-console-entry-fail .yui-console-entry-cat {
796
<style type="text/css">
800
<body class="yui3-skin-sam">
802
<div id="hd"><h1>Page Header</h1></div>
804
<div id="main" class="main">
805
<h2 id="foo">Section Header</h2>
806
<select id="test-select"><option>choose</option></select>
807
<em class="lorem ipsum ipsum" id="lorem-ipsum">lorem ipsum</em>
808
<div class="mod" id="mod1">
810
<h3>Module Header</h3>
813
<p>Fusce feugiat diam. Vestibulum elementum dui in augue. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris pulvinar.</p>
815
<div class="ft"><a href="#">more</a></div>
817
<div class="mod" id="mod2">
819
<h3>Module Header</h3>
822
<form action="#" method="get" id="search">
823
<fieldset id="search-fields">
824
<legend>Search</legend>
825
<label for="search-p" id="search-p-label">Query</label>
826
<input type="text" name="p" id="search-p">
828
<input type="submit" value="search">
832
<div class="ft"><a href="http://www.developer.yahoo.com">more</a></div>
835
<form id="test-form" class="test-class" action="#">
836
<input id="test-text-value" value="text value">
837
<input id="test-text-novalue" name=>
838
<input id="test-text-emptyvalue">
841
<textarea id="test-textarea-value" value="textarea value"></textarea>
842
<textarea id="test-textarea-novalue"></textarea>
843
<textarea id="test-textarea-textvalue">textarea text</textarea>
845
<button id="test-button-value" value="button value">button</button>
846
<button id="test-button-novalue"></button>
847
<button id="test-button-textvalue">button text</button>
849
<select id="test-select-value">
850
<option id="test-option-value" value="option value">option text</option>
851
<option id="test-option-textvalue">option text</option>
852
<option id="test-option-emptyvalue" value="">empty value</option>
853
<option id="test-option-emptyvalue-notext" value=""></option>
854
<option id="test-option-novalue"></option>
857
<select id="test-select-textvalue">
858
<option>option text</option>
861
<select id="test-select-emptyvalue">
862
<option value="">option text</option>
864
<select id="test-select-emptyvalue-notext">
865
<option value=""></option>
868
<form id="test-names">
869
<input id="test-name-id1" name="test-name-id2" >
870
<input id="test-name-id2" name="test-name-id1">
872
<div id="test-add">test</div>
875
<p>In hac habitasse platea dictumst. Sed sit amet ligula vitae justo consequat facilisis. Integer tortor. Integer erat. In hac habitasse platea dictumst. Phasellus convallis quam vitae turpis aliquam lobortis. Aliquam scelerisque condimentum lectus. Proin semper adipiscing leo. Nulla facilisi.</p>