node.html revision beb63125154db15e35a82621fba8d35539a5f397
29949e866e40b95795203f3ee46f44a197c946e4stevel<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
29949e866e40b95795203f3ee46f44a197c946e4stevel<html>
29949e866e40b95795203f3ee46f44a197c946e4stevel<head>
29949e866e40b95795203f3ee46f44a197c946e4stevel<title>Node Test Suite</title>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel<script type="text/javascript" src="/build/yui/yui.js"></script>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel<style type="text/css">
29949e866e40b95795203f3ee46f44a197c946e4stevelbody {
29949e866e40b95795203f3ee46f44a197c946e4stevel font:13px/1.22 arial;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel#doc {
29949e866e40b95795203f3ee46f44a197c946e4stevel min-height:200px;
29949e866e40b95795203f3ee46f44a197c946e4stevel width:1000px;
29949e866e40b95795203f3ee46f44a197c946e4stevel border:10px solid red;
29949e866e40b95795203f3ee46f44a197c946e4stevel padding:1em;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel#get-style {
29949e866e40b95795203f3ee46f44a197c946e4stevel background:#ccc;
29949e866e40b95795203f3ee46f44a197c946e4stevel float:left;
07d06da50d310a325b457d6330165aebab1e0064Surya Prakki font-size:10px;
29949e866e40b95795203f3ee46f44a197c946e4stevel height:10em;
89b43686db1fe9681d80a7cf5662730cb9378caeBayard Bell padding:15px 0;
29949e866e40b95795203f3ee46f44a197c946e4stevel width:200px;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel.mask {
29949e866e40b95795203f3ee46f44a197c946e4stevel background:#ccc;
29949e866e40b95795203f3ee46f44a197c946e4stevel position:absolute;
29949e866e40b95795203f3ee46f44a197c946e4stevel top:0;
29949e866e40b95795203f3ee46f44a197c946e4stevel left:0;
29949e866e40b95795203f3ee46f44a197c946e4stevel overflow:hidden;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel#test-xy {
29949e866e40b95795203f3ee46f44a197c946e4stevel background:green;
29949e866e40b95795203f3ee46f44a197c946e4stevel position:absolute;
29949e866e40b95795203f3ee46f44a197c946e4stevel height:10px;
29949e866e40b95795203f3ee46f44a197c946e4stevel width:10px;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel#test-computed {
29949e866e40b95795203f3ee46f44a197c946e4stevel border: medium solid #000;
29949e866e40b95795203f3ee46f44a197c946e4stevel position:relative;
29949e866e40b95795203f3ee46f44a197c946e4stevel width:50%;
29949e866e40b95795203f3ee46f44a197c946e4stevel margin:auto;
29949e866e40b95795203f3ee46f44a197c946e4stevel padding:10px;
29949e866e40b95795203f3ee46f44a197c946e4stevel z-index: 2;
29949e866e40b95795203f3ee46f44a197c946e4stevel zoom:1;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel#test-scroll {
29949e866e40b95795203f3ee46f44a197c946e4stevel height: 100px;
29949e866e40b95795203f3ee46f44a197c946e4stevel width: 100px;
29949e866e40b95795203f3ee46f44a197c946e4stevel overflow:auto;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel#test-scroll p {
29949e866e40b95795203f3ee46f44a197c946e4stevel height:1000px;
29949e866e40b95795203f3ee46f44a197c946e4stevel width:1000px;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevelbutton {
29949e866e40b95795203f3ee46f44a197c946e4stevel display:block;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel.yui3-skin-sam .yui-console-entry-pass .yui-console-entry-cat {
29949e866e40b95795203f3ee46f44a197c946e4stevel background: #070;
29949e866e40b95795203f3ee46f44a197c946e4stevel color: #fff;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel.yui3-skin-sam .yui-console-entry-fail .yui-console-entry-cat {
29949e866e40b95795203f3ee46f44a197c946e4stevel background: #700;
29949e866e40b95795203f3ee46f44a197c946e4stevel color: #fff;
29949e866e40b95795203f3ee46f44a197c946e4stevel}
29949e866e40b95795203f3ee46f44a197c946e4stevel</style>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel</head>
29949e866e40b95795203f3ee46f44a197c946e4stevel<body class="yui3-skin-sam">
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-append"></div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-xy"></div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-remove"></div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-replace"><p>replace me</p></div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-scroll">
29949e866e40b95795203f3ee46f44a197c946e4stevel <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>
29949e866e40b95795203f3ee46f44a197c946e4stevel </div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-frag">
29949e866e40b95795203f3ee46f44a197c946e4stevel <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>
29949e866e40b95795203f3ee46f44a197c946e4stevel <p>Lorem ipsum dolor <em>sit</em>.</p>
29949e866e40b95795203f3ee46f44a197c946e4stevel </div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="doc" class="doc-wrap">
29949e866e40b95795203f3ee46f44a197c946e4stevel <a href="http://www.yahoo.com/foo" id="link-1">Yahoo!</a>
29949e866e40b95795203f3ee46f44a197c946e4stevel <a href="foo.html" id="link-2" tabIndex="-1">foo</a>
29949e866e40b95795203f3ee46f44a197c946e4stevel <form id="test-form" class="test-class" action="#">
29949e866e40b95795203f3ee46f44a197c946e4stevel <label for="test-text-value"><em>label</em></label>
29949e866e40b95795203f3ee46f44a197c946e4stevel <input name="test-text-value" id="test-text-value" value="text value">
29949e866e40b95795203f3ee46f44a197c946e4stevel <input name="test-text-novalue">
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel <textarea name="test-textarea-value" value="textarea value"></textarea>
29949e866e40b95795203f3ee46f44a197c946e4stevel <textarea name="test-textarea-novalue"></textarea>
29949e866e40b95795203f3ee46f44a197c946e4stevel <textarea name="test-textarea-textvalue">textarea text</textarea>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel <button name="test-button-value" value="button value">button</button>
29949e866e40b95795203f3ee46f44a197c946e4stevel <button name="test-button-novalue"></button>
29949e866e40b95795203f3ee46f44a197c946e4stevel <button name="test-button-textvalue">button text</button>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel </form><div id="test-class">test class</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-prop" tabindex="4">text<em id="test-contains">test<span></span></em><strong>node</strong></div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="set-style"><div class="bar" id="bar">setStyle</div>foo<div>blah</div></div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="get-style">getStyle</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="baz">baz</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel text
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-extras">extras</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-children">foo <span>bar</span> <strong>baz</strong> </div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-empty-children"></div>
29949e866e40b95795203f3ee46f44a197c946e4stevel </div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="inline-style" style="color: green">inline style</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="foo" aria-checked="true"></div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-computed">test computed style</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <form id="form.foo@bar:baz">
29949e866e40b95795203f3ee46f44a197c946e4stevel <select id="test-select" name="test-select">
29949e866e40b95795203f3ee46f44a197c946e4stevel <option value="0">foo</option>
29949e866e40b95795203f3ee46f44a197c946e4stevel <option value="1">bar</option>
29949e866e40b95795203f3ee46f44a197c946e4stevel <option>baz</option>
29949e866e40b95795203f3ee46f44a197c946e4stevel </select>
29949e866e40b95795203f3ee46f44a197c946e4stevel </form>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-nodes">
29949e866e40b95795203f3ee46f44a197c946e4stevel <ul>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 1</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 2</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 3</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 4</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel </ul>
29949e866e40b95795203f3ee46f44a197c946e4stevel <ol>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li class="bar">item 1</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 2</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 3</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li class="bar">item 4</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel </ol>
29949e866e40b95795203f3ee46f44a197c946e4stevel </div>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel <table id="test-table">
29949e866e40b95795203f3ee46f44a197c946e4stevel <tr><td id="test-td"><div><div>grandchild of td</div></div></td></tr>
193974072f41a843678abf5f61979c748687e66bSherry Moore </table>
193974072f41a843678abf5f61979c748687e66bSherry Moore
29949e866e40b95795203f3ee46f44a197c946e4stevel <ol>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 1</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 2</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 3</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 4</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel </ol>
29949e866e40b95795203f3ee46f44a197c946e4stevel<iframe src="test-frame.html"></iframe>
29949e866e40b95795203f3ee46f44a197c946e4stevel<div id="test-insert-html">foo</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel<div id="test:colon">
29949e866e40b95795203f3ee46f44a197c946e4stevel <h2>test</h2>
29949e866e40b95795203f3ee46f44a197c946e4stevel</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel<ol id="test-swap">
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 1</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 2</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 3</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel <li>item 4</li>
29949e866e40b95795203f3ee46f44a197c946e4stevel</ol>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel<div id="_funky:id{$400}">
193974072f41a843678abf5f61979c748687e66bSherry Moore <h2>test</h2>
29949e866e40b95795203f3ee46f44a197c946e4stevel</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel<div id="test-ancestor-stop">
29949e866e40b95795203f3ee46f44a197c946e4stevel <div>
29949e866e40b95795203f3ee46f44a197c946e4stevel <div id="test-element-by-axis">foo<div></div>bar<span></span>baz<em></em>
29949e866e40b95795203f3ee46f44a197c946e4stevel </div>
29949e866e40b95795203f3ee46f44a197c946e4stevel</div>
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel<div id="yui-log"></div>
29949e866e40b95795203f3ee46f44a197c946e4stevel<script type="text/javascript">
29949e866e40b95795203f3ee46f44a197c946e4stevelYUI({base: '/build/', filter: 'raw'}).use('selector-css3', 'node-deprecated', 'anim', 'console', 'test', 'node-event-simulate', 'node-load', function(Y) {
29949e866e40b95795203f3ee46f44a197c946e4stevel var Assert = Y.Assert,
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert = Y.ArrayAssert,
29949e866e40b95795203f3ee46f44a197c946e4stevel suite = new Y.Test.Suite("yuisuite");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel new Y.Console({node: '#yui-log', height: '1000px' }).render('#yui-log');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var byId = function(id) {
29949e866e40b95795203f3ee46f44a197c946e4stevel return document.getElementById(id);
29949e866e40b95795203f3ee46f44a197c946e4stevel };
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var $ = Y.Selector.query;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel suite.add( new Y.Test.Case({
29949e866e40b95795203f3ee46f44a197c946e4stevel name: 'Y.Node Instance',
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should cache node': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div id="test-caching" />');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.appendTo('body');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node, Y.Node._instances[node._yuid]);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(Y.one('#test-caching'), node);
29949e866e40b95795203f3ee46f44a197c946e4stevel node.remove(true);
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should get fresh node after destroy': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div id="test-caching2" />');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.appendTo('body');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.destroy();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areNotEqual(Y.one('#test-caching2'), node);
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_get: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#test-nodes'),
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes = Y.all('#test-nodes *');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // return null
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one("a[href$='?t=5']");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(Y.one(''), 'Y.one("")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(Y.one(null), 'Y.one(null)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(Y.one('#fake-id li'), 'Y.one("#fake-id li") === null');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(Y.one('#fake-id'), 'Y.one("#fake-id") === null');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(Y.one('#fake-id li'), 'Y.one("#fake-id li") === null');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // return zero length collection
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue((Y.all('') instanceof Y.NodeList), 'Y.all("") instanceof NodeList');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue((Y.all('null') instanceof Y.NodeList), 'Y.all("null") instanceof NodeList');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue((Y.all('#foo *') instanceof Y.NodeList), 'Y.all("#foo *") === null');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // return 1
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-nodes').id, Y.one('#test-nodes').get('id'), 'Y.one("#test-nodes")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-nodes'), Y.Node.getDOMNode(Y.one('#test-nodes')), 'Y.one("#test-nodes")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-nodes'), Y.Node.getDOMNode(Y.one('#test-nodes')), 'Y.one("#test-nodes")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('test-nodes', Y.one('#test-nodes').get('id'), 'Y.one("#test-nodes").get("id")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node, Y.one('#test-nodes'), 'node === Y.one("#test-nodes")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-nodes').getElementsByTagName('li')[0],
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.Node.getDOMNode(Y.one('#test-nodes li:first-child')), 'Y.one("#test-nodes")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-nodes').getElementsByTagName('li')[1],
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.Node.getDOMNode(Y.one('#test-nodes li:nth-child(2)')), 'Y.one("#test-nodes:nth-child(2)")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-nodes').getElementsByTagName('li')[1],
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.Node.getDOMNode(Y.one('#test-nodes li:nth-child(2)')), 'Y.one("#test-nodes:nth-child(2)")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('form.foo@bar:baz'), Y.Node.getDOMNode(Y.one('[id="form.foo@bar:baz"]')), "[id=form.foo@bar:baz]");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var firstChild = Y.one('body :first-child');
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('body').insertBefore(Y.Node.create('<div>foo</div>'), firstChild);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(firstChild._node === Y.one('body :first-child')._node, "wrong node: Y.one('body :first-child')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('body').removeChild(Y.one('body :first-child'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(Y.Selector.query('body :first-child', null, true), Y.one('body :first-child')._node, "body :first-child === #test-append");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // return more than 1
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual($('#test-select option'), Y.NodeList.getDOMNodes(Y.all('#test-select option')), 'Y.one("#test-select option")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(3, Y.all('#test-select option').size(), 'Y.one("#test-select option").size()');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(2, Y.all('form').size(), 'Y.one("form").size()');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('FORM', Y.all('form').item(1).get('tagName'), 'Y.one("form").item(1)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(3, Y.all('.bar').size(), 'Y.one(".bar")');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areNotEqual(nodes, Y.all('#test-nodes *'), 'nodes === Y.all("#test-nodes")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(nodes.size(), Y.all('#test-nodes *').size(), 'nodes.size() === Y.all("#test-nodes").size()');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(Y.Selector.query('div'), Y.all(Y.Selector.query('div'))._nodes, "Y.all(Y.Selector.query('div'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // Firefox fails due to Firebug pollutes document.queryAll but not document.getElementsByTagName
29949e866e40b95795203f3ee46f44a197c946e4stevel //ArrayAssert.itemsAreEqual(document.getElementsByTagName('div'), Y.all(Y.Selector.query('div'))._nodes, "Y.all(Y.Selector.query('div'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(Y.Selector.query('input[name]'), Y.all(Y.Selector.query('input[name]'))._nodes, "Y.all(Y.Selector.query('input[name]'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(Y.Selector.query('.foo'), Y.all(Y.Selector.query('.foo'))._nodes, "Y.all(Y.Selector.query('.foo'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var frameDoc = Y.one('iframe').get('contentWindow.document');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('iframe foo', Y.Lang.trim(frameDoc.one('#demo li').get('innerHTML')),
193974072f41a843678abf5f61979c748687e66bSherry Moore "frameDoc.one('#demo li').get('innerHTML')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual([document.body], Y.all(document.body)._nodes, "Y.all(document.body)");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areSame(Y.one('doc'), Y.one('doc'), "Y.one('doc') === Y.one('doc')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
07d06da50d310a325b457d6330165aebab1e0064Surya Prakki Assert.areEqual(byId('test-text-value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('doc').one('.test-class #test-text-value')._node,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('doc').one('.test-class #test-text-value')");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_each: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var count = 0,
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes = Y.all('#test-nodes *'),
29949e866e40b95795203f3ee46f44a197c946e4stevel index;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.each(function(node, i, list) {
193974072f41a843678abf5f61979c748687e66bSherry Moore count++;
29949e866e40b95795203f3ee46f44a197c946e4stevel index = i;
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(nodes, list, 'nodes === instance');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node instanceof Y.Node, 'node instanceof Y.Node');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(node, this, 'this === node');
29949e866e40b95795203f3ee46f44a197c946e4stevel });
193974072f41a843678abf5f61979c748687e66bSherry Moore
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(count, nodes.size(), 'node.each(count) === nodes.size()');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(nodes.size() - 1, index, 'nodes.size() - 1 === index');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_some: function() {
193974072f41a843678abf5f61979c748687e66bSherry Moore var nodes = Y.all('#test-nodes *'),
29949e866e40b95795203f3ee46f44a197c946e4stevel index, instance, isNode;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(nodes.some(function(node, i, list) {
29949e866e40b95795203f3ee46f44a197c946e4stevel return true;
29949e866e40b95795203f3ee46f44a197c946e4stevel }), 'nodes.some(function() { return true; })');
29949e866e40b95795203f3ee46f44a197c946e4stevel
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isFalse(nodes.some(function(node, i, list) {
29949e866e40b95795203f3ee46f44a197c946e4stevel }), 'nodes.some(function() {})');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_indexOf: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(0, Y.all('body').indexOf(Y.one('body')),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.all('body').indexOf(Y.one('body'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(0, Y.all('div').indexOf(Y.one(document.getElementsByTagName('div')[0])),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.all('div').indexOf(Y.one(document.getElementsByTagName('div')[0]))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(-1, Y.all('div').indexOf(Y.one('#test-')),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.all('div').indexOf(Y.one('#test-'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(-1, Y.all('div').indexOf(Y.one('#test-form')),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.all('div').indexOf(Y.one('#test-form'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_getters: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var id = 'test-nodes',
29949e866e40b95795203f3ee46f44a197c946e4stevel element = byId(id),
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one('#' + id),
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes = Y.all('#' + id + ' *');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(null, node.get(''), 'node.get("") === null');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(null, node.get('fake'), 'node.get("fake") === null');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(null, node.get('nodeValue'), 'nodeValue === null');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('DIV', node.get('nodeName'), 'nodeName === "DIV"');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('UL', nodes.get('nodeName')[0], 'nodeName === "UL"');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('LI', nodes.get('nodeName')[nodes.size() - 1], 'nodeName === "LI"');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(element.firstChild.nextSibling.nodeName, node.get('firstChild').get('nextSibling').get('nodeName'), 'node.firstChild.nextSibling.nodeName"');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(element.lastChild.nodeName, node.get('lastChild').get('nodeName'), 'lastChild.nodeName"');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(9, node.get('ownerDocument').get('nodeType'), 'node.ownerDocument.nodeType === 9');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('test-nodes', nodes.get('parentNode').get('id')[0], 'nodes.get(parentNode)[0].get("id") === test-nodes');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(element.firstChild.nodeType, node.get('firstChild').get('nodeType'), 'firstChild.get("nodeType")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(element.offsetWidth, node.get('offsetWidth'), 'offsetWidth === node.offsetWidth');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(element.offsetParent.tagName, node.get('offsetParent').get('tagName'), 'offsetParent.tagName === offsetParent.tagName');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('item 1', Y.Lang.trim(nodes.get('children')[0].get('text')[0]), 'nodes.get("children")[0].get("text")[0]');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('item 1', Y.Lang.trim(nodes.get('children')[0].get('text')[0]), 'nodes.get("children")[0].get("text")[0]');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var textContainer = Y.Node.create('<div>foo</div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', textContainer.get('text'), "textContainer.get('text')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel textContainer.set('text', 'bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('bar', textContainer.get('text'), "textContainer.set('text', 'bar')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual($('#test-select option'),
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.NodeList.getDOMNodes(Y.one('#test-select').get('options')),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'Y.one("#test-select.get("options")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(2, node.get('children').size(), 'get("children")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(0, Y.one('#test-empty-children').get('children').size(), "Y.one('#test-empty-children').get('children')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(8, Y.all('#' + id + ' li').size(), 'Y.all("#test-nodes li.size()")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // size() is deprecated on Node
29949e866e40b95795203f3ee46f44a197c946e4stevel //Assert.areEqual(1, Y.one('#' + id + ' li').size(), 'Y.one("#test-nodes li.size()")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-nodes').childNodes.length, node.get('childNodes').size(), 'node.get("childNodes").size()');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-nodes').childNodes.length, node.get('childNodes').get('tagName').length, 'node.get("childNodes")');
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(byId('test-nodes').childNodes.length, node.get('childNodes').get('length').length, "node.get('childNodes').get('length')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(element.lastChild.nodeName, node.get('lastChild.nodeName'), 'node.get("lastChild.nodeName")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(element.lastChild.previousSibling.nodeName, node.get('lastChild').get('previousSibling').get('nodeName'), 'node.lastChild.previousSibling.nodeName');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('test', Y.one('#test-prop').get('firstChild.nextSibling.firstChild.nodeValue'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'node.get("firstChild.nextSibling.firstChild.nodeValue")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-prop').tabIndex, Y.one('#test-prop').get('tabIndex'), 'Y.one("#test-prop").get("tabIndex")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('doc').tabIndex, Y.one('#doc').get('tabIndex'), 'Y.one("#doc".get("tabIndex"))');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('link-1').tabIndex, Y.one('#link-1').get('tabIndex'), 'Y.one("#link1".get("tabIndex"))');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('link-2').tabIndex, Y.one('#link-2').get('tabIndex'), 'Y.one("#link1".get("tabIndex"))');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(undefined, Y.one('form').get('childNodes')._nodes.item, 'convert live list to static');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.all('input').get('parentNode') instanceof Y.NodeList, "Y.all('input').get('parentNode')");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_create: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var id = 'test-nodes',
29949e866e40b95795203f3ee46f44a197c946e4stevel element = byId(id),
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one('#' + id);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('fresh', node.create('<div id="fresh">fresh</div>').get('id'), 'node.create from string)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.Node.create('<select><option>foo</option></select>');
29949e866e40b95795203f3ee46f44a197c946e4stevel var option = Y.Node.create('<option>bar</option>').set('selected', 'selected');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.appendChild(option);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.Node.getDOMNode(option).selected, "Y.Node.create('<option>test</option>').set('selected', 'selected'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var html = '<li><a href=""></a></li>';
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.Node.create(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('A', node.get('firstChild.tagName'), html);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel html = 'baz';
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.Node.create(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('3', node.get('nodeType'), "node.get('nodeType')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('3', Y.Node.getDOMNode(node).nodeType, "Y.Node.getDOMNode(node).nodeType");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<div>bar</div>';
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.Node.create(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('3', node.get('firstChild.nodeType'), "node.get('firstChild.nodeType')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('3', node.get('firstChild').get('nodeType'), "node.get('firstChild').get('nodeType')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('3', Y.Node.getDOMNode(node.get('firstChild')).nodeType, "Y.Node.getDOMNode(node.get('firstChild')).nodeType");
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insertBefore(Y.Node.create('foo'), node.get('firstChild'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foobar', node.get('innerHTML'), "node.get('innerHTML')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foobar', node.get('text'), "node.get('text')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // test setContent with NodeList
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<div>foo</div>';
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setContent(Y.all(Y.Node.create(html)));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(html, node.get('innerHTML').toLowerCase(), "node.setContent(Y.all(Y.Node.create(html)))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_setter: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var id = 'test-prop',
29949e866e40b95795203f3ee46f44a197c946e4stevel element = byId(id),
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one('#' + id),
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes = Y.all('#test-nodes *');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var childNodes = Y.one('body').get('childNodes');
29949e866e40b95795203f3ee46f44a197c946e4stevel childNodes.set('title', 'foo bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(byId('test-nodes').title == 'foo bar', 'Y.one("body").get("childNodes").set("title")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.set('foo', 'foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isUndefined(node.get('foo'), 'node.get("foo")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.set('title', 'my title');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('my title', Y.Node.getDOMNode(node).title, 'node.title)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('my title', node.get('title'), 'node.set("title")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.set('className', 'foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', Y.NodeList.getDOMNodes(nodes)[0].className, 'node.className');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', nodes.get('className')[2], 'node.get("className")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', nodes.item(nodes.size() - 2).get('className'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'nodes.item(nodes.size - 2).get("className")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var attrMap = {
29949e866e40b95795203f3ee46f44a197c946e4stevel className: 'fooclass',
29949e866e40b95795203f3ee46f44a197c946e4stevel title: 'new title'
29949e866e40b95795203f3ee46f44a197c946e4stevel };
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setAttrs(attrMap);
29949e866e40b95795203f3ee46f44a197c946e4stevel var getAttrs = node.getAttrs(['className', 'title']);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(attrMap.className, getAttrs.className, 'node.setAttrs(attrMap) (get className)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(attrMap.title, getAttrs.title, 'node.setAttrs(attrMap) (get title)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-select').set('selectedIndex', 2);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(2, Y.one('#test-select')._node.selectedIndex,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('#test-select').set('selectedIndex', 2)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('body > form').set('test-select.selectedIndex', 2);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(2, byId('test-select').selectedIndex,
29949e866e40b95795203f3ee46f44a197c946e4stevel 'Y.one("body > form").set("test-select.selectedIndex", 2)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var index = Y.one('#test-select').one('option[value=1]').set('selected', true);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(1, Y.one('#test-select')._node.selectedIndex,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('#test-select').set('selectedIndex', 1)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-select').set('value', 1);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(1, Y.one('#test-select').get('value'), "Y.one('#test-select').set('value', 1)");
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-select').set('value', 'baz');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('baz', Y.one('#test-select').get('value'), "Y.one('#test-select').set('value', 'baz')");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_dom_methods: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var id = 'test-prop';
29949e866e40b95795203f3ee46f44a197c946e4stevel var element = byId(id);
29949e866e40b95795203f3ee46f44a197c946e4stevel var parent = Y.one(element.parentNode);
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#test-prop');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.hasMethod('appendChild'), "node.hasMethod('appendChild')");
29949e866e40b95795203f3ee46f44a197c946e4stevel var xmlNode = Y.one(document.createElement('xml'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(xmlNode.hasMethod('onreadystatechange')," xmlNode.hasMethod('onreadystatechange')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel //Assert.isTrue(element === Y.one(node), 'element === Y.one(node)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(element.getElementsByTagName('em')[0].nodeName, node.getElementsByTagName('em').item(0).get('nodeName'), 'getElementsByTagName');
29949e866e40b95795203f3ee46f44a197c946e4stevel var insertNode = document.createElement('div');
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.stamp(insertNode);
29949e866e40b95795203f3ee46f44a197c946e4stevel insertNode.innerHTML = 'inserted node';
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('body').appendChild(Y.one('div'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.one('body').get('lastChild').compareTo(Y.one('#test-append')), 'get("body").appendChild(Y.one("#test-append"))');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-append'), Y.Node.getDOMNode(Y.one('body').get('lastChild')), 'get("body").appendChild(Y.one([0]"#test-append"))');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('inserted node', node.appendChild(insertNode).get('innerHTML'), 'appendChild(element input)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('inserted node', node.removeChild(insertNode).get('innerHTML'), 'removeChild(element input)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual('inserted node', node.appendChild(Y.one(insertNode)).get('innerHTML'), 'appendChild(Node input)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('inserted node', node.removeChild(Y.one(insertNode)).get('innerHTML'), 'removeChild(Node input)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var clone = node.cloneNode();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(node === clone, 'node === node.cloneNode()');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(1, clone.get('nodeType'), 'cloneNode()');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // TODO: test deep clone with bound descendant
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isTrue(node.get('childNodes').size() === node.cloneNode(true).get('childNodes').size(), 'node.get("childNodes").size() === node.cloneNode(true).get("childNodes").size()');
29949e866e40b95795203f3ee46f44a197c946e4stevel
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isTrue(Y.one('.bar').test('.bar'), "Y.one('.bar').test('.bar')");
29949e866e40b95795203f3ee46f44a197c946e4stevel clone = Y.one('.bar').cloneNode(true);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(clone.hasClass('bar'), "clone.hasClass('bar') (before appending)");
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('body').appendChild(clone);
193974072f41a843678abf5f61979c748687e66bSherry Moore clone.set('id', 'new-bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(clone.test('.bar'), "clone.test('.bar') (after appending)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.Node.create('<div id="foo" class="bar"></div>').test('.bar'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.Node.create('<div id=\"foo\" class=\"bar\"></div>').test('.bar')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.Node.create('<div id="foo" class="bar"></div>').test('#foo.bar'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.Node.create('<div id=\"foo\" class=\"bar\"></div>').test('#foo.bar')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.hasChildNodes(), 'hasChildNodes()');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.compareTo(node), 'compareTo(node)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.compareTo(Y.one(node)), 'compareTo(new Y.Node)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(node.compareTo(null), 'compareTo(null)');
193974072f41a843678abf5f61979c748687e66bSherry Moore
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isFalse(node.create('<p>foo</p>').inDoc(), 'node.inDoc()');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.contains(byId('test-contains')), 'contains()');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.contains(node), 'contains() self');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.contains(element), 'contains() self');
29949e866e40b95795203f3ee46f44a197c946e4stevel
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isFalse(node.contains(document.getElementsByTagName('div')), 'contains() false positive for collection');
193974072f41a843678abf5f61979c748687e66bSherry Moore
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('doc', node.ancestor(function(el) {
29949e866e40b95795203f3ee46f44a197c946e4stevel return el.get('id') === 'doc';
29949e866e40b95795203f3ee46f44a197c946e4stevel }).get('id'), 'ancestor');
29949e866e40b95795203f3ee46f44a197c946e4stevel
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(node.ancestor(), node.get('parentNode'), "node.ancestor()");
193974072f41a843678abf5f61979c748687e66bSherry Moore
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(node.ancestor(function(el) {
29949e866e40b95795203f3ee46f44a197c946e4stevel return el.getAttribute('foo') !== '';
29949e866e40b95795203f3ee46f44a197c946e4stevel }), 'ancestor');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node.get('parentNode'), node.ancestor('div'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node, node.ancestor('div', true));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('test-class', node.previous().get('id'), 'node.previous()');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.one(document.body).inDoc(document));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.inDoc(), 'node.inDoc()');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.inDoc(document), 'node.inDoc(document)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.inDoc(Y.one(document)), 'node.inDoc(Y.one(document))');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(byId('test-contains'), Y.Node.getDOMNode(node.getById('test-contains')), 'node.getById("test-contains")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.hasAttribute('id'), 'node.hasAttribute("id")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.hasAttribute('title'), 'node.hasAttribute("title")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(node.hasAttribute('foo'), 'node.hasAttribute("foo")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.hasAttribute('tabIndex'), 'node.hasAttribute("tabIndex")');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.removeAttribute('tabIndex');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(node.hasAttribute('tabIndex'), 'node.hasAttribute("tabIndex") (false)');
29949e866e40b95795203f3ee46f44a197c946e4stevel /*
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node.getAttribute('tabIndex'), node.get('tabIndex'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.getAttribute('tabIndex') === node.get('tabIndex')");
29949e866e40b95795203f3ee46f44a197c946e4stevel */
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(Y.one('body').hasAttribute('title'), 'body.hasAttribute("title")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('0', Y.one('select[name=test-select] option:nth-child(1)').getAttribute('value'), 'option1.getAttribute("value") (from innerText)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('1', Y.one('select[name=test-select] option:nth-child(2)').getAttribute('value'), 'option2.getAttribute("value") (from innerText)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('', Y.one('select[name=test-select] option:nth-child(3)').getAttribute('value'), 'option3.getAttribute("value") (from innerText)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('http://www.yahoo.com/foo', Y.one('#link-1').getAttribute('href'), "Y.one('#link1').getAttribute('href')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo.html', Y.one('#link-2').getAttribute('href'), "Y.one('#link1').getAttribute('href')");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_fragment: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var frag = Y.one('document').invoke('createDocumentFragment'),
29949e866e40b95795203f3ee46f44a197c946e4stevel element = byId('test-append');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel frag.appendChild(element);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(element, Y.Node.getDOMNode(frag.get('firstChild')), 'frag.appendChild()');
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('body').appendChild(frag);
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_screen: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var id = 'test-prop';
29949e866e40b95795203f3ee46f44a197c946e4stevel var element = byId(id);
29949e866e40b95795203f3ee46f44a197c946e4stevel var parent = Y.one(element.parentNode);
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one(element);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var newNode = Y.Node.create('<div id="brand-new-foo">foo</div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(0, newNode.get('docScrollX'), 'newNode.get("docScrollX")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(0, node.get('docScrollY'), 'node.get("docScrollY")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one('#test-xy');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setXY([100, 100]);
29949e866e40b95795203f3ee46f44a197c946e4stevel var xy = node.getXY();
29949e866e40b95795203f3ee46f44a197c946e4stevel var x = Math.round(xy[0]);
29949e866e40b95795203f3ee46f44a197c946e4stevel var y = Math.round(xy[1]);
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual([100, 100], [x, y], 'Node.getXY("foo", "bar")');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_region: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.DOM.inRegion(byId('baz'), byId('doc')), 'DOM.inRegion(domNode, domNode)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.one('#get-style').inRegion(byId('doc')), 'node.inRegion(domNode)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.one('#get-style').inRegion(Y.one('#doc')), 'node.inRegion(Node)');
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(Y.DOM.region(Y.DOM.byId('doc')), Y.one('#doc').get('region'), 'node.get("region")');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_classes: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var id = 'test-class';
29949e866e40b95795203f3ee46f44a197c946e4stevel var element = byId(id);
29949e866e40b95795203f3ee46f44a197c946e4stevel var parent = Y.one(element.parentNode);
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one(element);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.get('previousSibling').hasClass('test-class'), 'node.get("previousSibling").hasClass("test-class")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.addClass('foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', element.className, 'node.addClass("foo")');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.removeClass('foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('', element.className, 'node.removeClass("foo")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.addClass('foo');
193974072f41a843678abf5f61979c748687e66bSherry Moore Y.one('body').get('childNodes').addClass('foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(byId('test-class').className == 'foo', 'NodeList.addClass');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.replaceClass('foo', 'bar');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual('bar', element.className, 'Node.replaceClass("foo", "bar")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var nodes = Y.all('#test-nodes li');
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.addClass('foo').addClass('bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.each(function(n) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(n.hasClass('foo'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(n.hasClass('bar'));
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.removeClass('bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.each(function(n) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(n.hasClass('bar'));
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.DOM.create('<div></div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.addClass(node, 'foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.replaceClass('foo', 'foo');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isTrue(Y.DOM.hasClass(node, 'foo'));
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.Node.create('<div></div>');
193974072f41a843678abf5f61979c748687e66bSherry Moore node.addClass('foo bar baz');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo bar baz', node._node.className);
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_toggle: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#test-class');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleClass('foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.hasClass('foo'), "node.toggleClass('foo')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleClass('foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(node.hasClass('foo'), "node.toggleClass('foo')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleClass('foo', false);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(node.hasClass('foo'), "node.toggleClass('foo', false)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleClass('foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.hasClass('foo'), "node.toggleClass('foo')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleClass('foo', true);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.hasClass('foo'), "node.toggleClass('foo', true)");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_setStyle: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var element = byId('set-style'),
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one(element),
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes = node.get('childNodes');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('width', '20em');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('20em', element.style.width, "setStyle('width' '20em')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('marginTop', '1em');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('1em', element.style.marginTop, "setStyle('marginTop','1em')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('opacity', 0.5);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(0.5, node.getStyle('opacity'), "setStyle('opacity', 0.5)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('float', 'left');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('left', node.getStyle('float'), "setStyle('float', 'left')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.setStyle('marginTop', '1em');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('1em', nodes.getStyle('marginTop')[2], "setStyle('marginTop', '1em'");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_getStyle: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#get-style');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('opacity', 0.5);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(0.5, node.getStyle('opacity'), "node.getStyle('opacity')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('left', node.getStyle('float'), "node.getStyle('float')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('100px', node.getStyle('height'), "getStyle('height')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('200px', node.getStyle('width'), "getStyle('width)'");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('visible', node.getStyle('visibility'), "visibility");
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('visibility', 'hidden');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('hidden', node.getStyle('visibility'), "visibility");
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('visibility', 'visible');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_getComputedStyle: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#test-computed'),
29949e866e40b95795203f3ee46f44a197c946e4stevel domNode = byId('test-computed'),
29949e866e40b95795203f3ee46f44a197c946e4stevel w = node.get('offsetWidth'),
29949e866e40b95795203f3ee46f44a197c946e4stevel h = node.get('offsetHeight'),
29949e866e40b95795203f3ee46f44a197c946e4stevel bt = parseFloat(node.getComputedStyle('borderTopWidth')),
29949e866e40b95795203f3ee46f44a197c946e4stevel bb = parseFloat(node.getComputedStyle('borderBottomWidth')),
29949e866e40b95795203f3ee46f44a197c946e4stevel bl = parseFloat(node.getComputedStyle('borderLeftWidth')),
29949e866e40b95795203f3ee46f44a197c946e4stevel br = parseFloat(node.getComputedStyle('borderRightWidth')),
29949e866e40b95795203f3ee46f44a197c946e4stevel pt = parseFloat(node.getComputedStyle('paddingTop')),
29949e866e40b95795203f3ee46f44a197c946e4stevel pb = parseFloat(node.getComputedStyle('paddingBottom')),
29949e866e40b95795203f3ee46f44a197c946e4stevel pl = parseFloat(node.getComputedStyle('paddingLeft')),
29949e866e40b95795203f3ee46f44a197c946e4stevel pr = parseFloat(node.getComputedStyle('paddingRight'));
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel if (!Y.UA.ie || document.compatMode !== 'BackCompat') {
29949e866e40b95795203f3ee46f44a197c946e4stevel w = w - (pl + pr) - (bl + br);
29949e866e40b95795203f3ee46f44a197c946e4stevel h = h - (pt + pb) - (bt + bb);
29949e866e40b95795203f3ee46f44a197c946e4stevel }
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(parseInt(bt), parseInt(node.getComputedStyle('borderTopWidth')), "borderTopWidth: medium");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(parseInt(h), parseInt(node.getComputedStyle('height')), "height: auto (offset minus padding and border)");
29949e866e40b95795203f3ee46f44a197c946e4stevel domNode.style.padding = '1em';
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('13px', node.getComputedStyle('paddingTop'), "padding 13px");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('visible', node.getComputedStyle('visibility'), "visibility");
29949e866e40b95795203f3ee46f44a197c946e4stevel domNode.parentNode.style.visibility = 'hidden';
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual('hidden', node.getComputedStyle('visibility'), "visibility:hidden");
29949e866e40b95795203f3ee46f44a197c946e4stevel domNode.parentNode.style.visibility = 'visible';
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(2, node.getComputedStyle('zIndex'), 'node.getComputedStyle("zIndex")');
29949e866e40b95795203f3ee46f44a197c946e4stevel domNode.style.margin = 'auto';
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('0px', node.getComputedStyle('marginTop'), "margin auto");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(parseInt(w), parseInt(node.getComputedStyle('width')), "percent width (from CSS)");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
193974072f41a843678abf5f61979c748687e66bSherry Moore
193974072f41a843678abf5f61979c748687e66bSherry Moore test_setStyles: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = byId('set-style');
29949e866e40b95795203f3ee46f44a197c946e4stevel var element = Y.one(node);
193974072f41a843678abf5f61979c748687e66bSherry Moore element.setStyles({
193974072f41a843678abf5f61979c748687e66bSherry Moore 'top': '5px',
29949e866e40b95795203f3ee46f44a197c946e4stevel 'right': '10em'
29949e866e40b95795203f3ee46f44a197c946e4stevel });
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isTrue( (node.style.top == '5px' && node.style.right == '10em'), "setStyles()");
193974072f41a843678abf5f61979c748687e66bSherry Moore },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_selector: function() {
193974072f41a843678abf5f61979c748687e66bSherry Moore var id = 'test-prop',
193974072f41a843678abf5f61979c748687e66bSherry Moore element = byId(id),
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one('#' + id),
29949e866e40b95795203f3ee46f44a197c946e4stevel parent = Y.one(element.parentNode),
193974072f41a843678abf5f61979c748687e66bSherry Moore nodes = Y.all('#test-nodes *');
193974072f41a843678abf5f61979c748687e66bSherry Moore
29949e866e40b95795203f3ee46f44a197c946e4stevel // Selector methods
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(Y.one(document.body).one("#fake-id"), 'body.one("#fake-id")');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isTrue(Y.one(node).test('#' + id), 'node.test( "#id")');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isNull(parent.one("#fake-id"), 'parent.one("#fake-id")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(id, parent.one('#' + id).get('id'), 'parent.one("#id")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(id, parent.one('#' + id).get('id'), 'parent.one("#id")');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isNull(parent.one('#text-xy'), 'parent.one("test-xy")');
193974072f41a843678abf5f61979c748687e66bSherry Moore
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(id, parent.all('#' + id).item(0).get('id'), 'parent.all(node, "#id")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(id, parent.all('#' + id).item(0).get('id'), 'parent.all(node, "#id")');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_window: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var win = Y.one(window);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(window, Y.Node.getDOMNode(win), 'Y.one(window)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(document, Y.Node.getDOMNode(win.get('document')), 'win.get(document)');
29949e866e40b95795203f3ee46f44a197c946e4stevel //Assert.areEqual(window, Y.Node.getDOMNode(Y.one('document').get('defaultView')), 'win.get(document)');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_windowSize: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNotNull(Y.one('body').get('winHeight'), 'body.get("winHeight")');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_scroll: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-scroll').set('scrollTop', 100);
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-scroll').set('scrollLeft', 200);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(100, byId('test-scroll').scrollTop, 'test-scroll.set("scrollTop", 100)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(200, byId('test-scroll').scrollLeft, 'test-scroll.set("scrollLeft", 200)');
29949e866e40b95795203f3ee46f44a197c946e4stevel document.body.style.height = '5000px';
29949e866e40b95795203f3ee46f44a197c946e4stevel document.body.style.width = '5000px';
29949e866e40b95795203f3ee46f44a197c946e4stevel/*
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one(window).set('scrollTop', 100);
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one(window).set('scrollLeft', 200);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(100, Y.DOM.docScrollY(window), 'window.set("scrollTop", 100)');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(200, Y.DOM.docScrollX(window), 'window.set("scrollLeft", 200)');
193974072f41a843678abf5f61979c748687e66bSherry Moore*/
193974072f41a843678abf5f61979c748687e66bSherry Moore
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one(document).set('scrollTop', 200);
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one(document).set('scrollLeft', 100);
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(200, Y.DOM.docScrollY(document), 'document.set("scrollTop", 200)');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(100, Y.DOM.docScrollX(document), 'document.set("scrollLeft", 100)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel document.body.style.height = '';
193974072f41a843678abf5f61979c748687e66bSherry Moore document.body.style.width = '';
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel window.scrollTo(0, 0);
29949e866e40b95795203f3ee46f44a197c946e4stevel },
193974072f41a843678abf5f61979c748687e66bSherry Moore
29949e866e40b95795203f3ee46f44a197c946e4stevel test_setContent: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var content = '<strong>foo</strong>';
193974072f41a843678abf5f61979c748687e66bSherry Moore Y.one('#test-insert-html').setContent(content);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(content,
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.byId('test-insert-html').innerHTML.toLowerCase(),
193974072f41a843678abf5f61979c748687e66bSherry Moore "Y.one('#test-insert-html').setContent(" + content + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-insert-html').setContent(Y.Node.create(content));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(content,
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.byId('test-insert-html').innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('#test-insert-html').setContent(Y.Node.create(" + content + "))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel content = '<strong>foo</strong><em>bar</em>';
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-insert-html').setContent(Y.Node.create(content));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(content,
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.byId('test-insert-html').innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('#test-insert-html').setContent(Y.Node.create(" + content + "))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var element = document.createElement('strong');
29949e866e40b95795203f3ee46f44a197c946e4stevel element.innerHTML = 'bar';
29949e866e40b95795203f3ee46f44a197c946e4stevel content = '<strong>bar</strong>';
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-insert-html').setContent(element);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(content,
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.byId('test-insert-html').innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('#test-insert-html').setContent(element)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel content = '';
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-insert-html').setContent(content);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(content,
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.byId('test-insert-html').innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('#test-insert-html').setContent(" + content + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel content = null;
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-insert-html').setContent(content);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('',
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.byId('test-insert-html').innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('#test-insert-html').setContent(" + content + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel content = 0;
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-insert-html').setContent(content);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('0',
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.byId('test-insert-html').innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('#test-insert-html').setContent(" + content + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_insert: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#test-insert-html'),
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<strong>foo</strong>',
29949e866e40b95795203f3ee46f44a197c946e4stevel content;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setContent('foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel content = node.get('innerHTML').toLowerCase();
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node._node.innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel content + html,
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert('" + html + "')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<em>bar</em>';
29949e866e40b95795203f3ee46f44a197c946e4stevel content = node.get('innerHTML').toLowerCase();
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert(html, 0);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node._node.innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel html + content,
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert(" + html + ", 0)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<span>baz</span>';
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert(html, 1);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node.all('> *').item(1).get('tagName'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'SPAN',
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert(" + html + ", 1)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '';
29949e866e40b95795203f3ee46f44a197c946e4stevel content = node.get('innerHTML').toLowerCase();
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node._node.innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel content,
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert(" + html + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel html = null;
29949e866e40b95795203f3ee46f44a197c946e4stevel content = node.get('innerHTML').toLowerCase();
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node._node.innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel content,
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert(" + html + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // test fragment insertion
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel var childCount = node.get('childNodes').size();
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<q>bar</q><h2>foo</h2>';
29949e866e40b95795203f3ee46f44a197c946e4stevel content = node.get('innerHTML').toLowerCase();
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(childCount + 2,
29949e866e40b95795203f3ee46f44a197c946e4stevel node.get('childNodes').size(),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert(" + html + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('Q',
29949e866e40b95795203f3ee46f44a197c946e4stevel node.get('childNodes').item(childCount).get('tagName'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert(" + html + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('H2',
29949e866e40b95795203f3ee46f44a197c946e4stevel node.get('childNodes').item(childCount + 1).get('tagName'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert(" + html + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<label>foo</label><input>';
193974072f41a843678abf5f61979c748687e66bSherry Moore content = node.get('innerHTML').toLowerCase();
193974072f41a843678abf5f61979c748687e66bSherry Moore
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node._node.innerHTML.toLowerCase(),
193974072f41a843678abf5f61979c748687e66bSherry Moore Y.Lang.trim(content + html).toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert(" + html + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setContent('<em>foo</em><span>bar</span>');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert('<strong>baz</strong>', node.one('span'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node._node.childNodes[1].tagName, 'STRONG',
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert('<strong>bar</strong>', node.one('span')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert('<code>var lorem</code>', node.one('em')._node);
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(node._node.childNodes[0].tagName, 'CODE',
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert('<code>var lorem</code>', node.one('em')._node)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // insert Node instance
29949e866e40b95795203f3ee46f44a197c946e4stevel html = Y.Node.create('<div>foo</div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.insert(html, 2);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node._node.childNodes[2], html._node,
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.insert(Y.Node.create('<div>foo</div>'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // insert DOM node
29949e866e40b95795203f3ee46f44a197c946e4stevel html = document.createElement('div');
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('#test-insert-html').insert(html, 2);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(Y.one('#test-insert-html')._node.childNodes[2], html, 'node.insert(someDOMNode, 2)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_inject: function() {
193974072f41a843678abf5f61979c748687e66bSherry Moore var node = Y.one('#test-insert-html'),
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<strong>foo</strong>',
29949e866e40b95795203f3ee46f44a197c946e4stevel content = node.get('innerHTML').toLowerCase();
29949e866e40b95795203f3ee46f44a197c946e4stevel
193974072f41a843678abf5f61979c748687e66bSherry Moore node.prepend(html);
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(node._node.innerHTML.toLowerCase(),
29949e866e40b95795203f3ee46f44a197c946e4stevel html + content,
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.prepend('" + html + "')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<em>bar</em>';
29949e866e40b95795203f3ee46f44a197c946e4stevel content = node.get('innerHTML').toLowerCase();
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.append(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node._node.innerHTML.toLowerCase(),
193974072f41a843678abf5f61979c748687e66bSherry Moore content + html,
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.append('" + html + "')");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
193974072f41a843678abf5f61979c748687e66bSherry Moore test_getValue: function() {
193974072f41a843678abf5f61979c748687e66bSherry Moore // text
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.one('input[name=test-text-value]').hasAttribute('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'input[name=test-text-value].hasAttribute("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(Y.one('input[name=test-text-novalue]').hasAttribute('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'input[name=test-text-novalue].hasAttribute("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('text value',
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('input[name=test-text-value]').get('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('input[name=test-text-value]').get('value')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('', // TODO: normalize to null?
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('input[name=test-text-novalue]').get('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('input[name=test-text-novalue]').get('value')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // textarea
29949e866e40b95795203f3ee46f44a197c946e4stevel // textarea doesn't use value attribute
29949e866e40b95795203f3ee46f44a197c946e4stevel //Assert.isTrue(Y.one('textarea[name=test-textarea-value]').hasAttribute('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel // 'textarea[name=test-textarea-value].hasAttribute("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(Y.one('textarea[name=test-textarea-novalue]').hasAttribute('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'textarea[name=test-textarea-value].hasAttribute("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('textarea text',
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('textarea[name=test-textarea-textvalue]').get('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'textarea[name=test-textarea-textvalue].get("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('',
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('textarea[name=test-textarea-novalue]').get('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'textarea[name=test-textarea-novalue].get("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('',
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('textarea[name=test-textarea-value]').get('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'textarea[name=test-textarea-value].get("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // button
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.one('button[name=test-button-value]').hasAttribute('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'textarea[name=test-button-value].hasAttribute("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(Y.one('button[name=test-button-novalue]').hasAttribute('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'textarea[name=test-button-value].hasAttribute("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('button value',
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('button[name=test-button-value]').get('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'button[name=test-button-value].get("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('',
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('button[name=test-button-novalue]').get('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'button[name=test-button-novalue].get("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('',
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('button[name=test-button-textvalue]').get('value'),
29949e866e40b95795203f3ee46f44a197c946e4stevel 'button[name=test-button-textvalue].get("value")');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_remove: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#test-remove'),
29949e866e40b95795203f3ee46f44a197c946e4stevel domNode = Y.DOM.byId('test-remove'),
29949e866e40b95795203f3ee46f44a197c946e4stevel parent = domNode.parentNode;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.remove();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(parent !== domNode.parentNode, 'node.remove()');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // ensure remove doesnt fail when no parent
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.Node.create('<div/>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.remove();
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // or after destroy
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.Node.create('<div/>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.appendTo('body');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.destroy();
29949e866e40b95795203f3ee46f44a197c946e4stevel node.remove();
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_replace: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#test-replace').get('firstChild'),
29949e866e40b95795203f3ee46f44a197c946e4stevel newNode = document.createElement('div');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.replace(newNode);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(newNode, Y.one('#test-replace').get('firstChild')._node, 'node.replace(domNode)');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one('#test-replace').get('firstChild');
29949e866e40b95795203f3ee46f44a197c946e4stevel newNode = Y.Node.create('<div/>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.replace(newNode);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(newNode, Y.one('#test-replace').get('firstChild'), 'node.replace()');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(newNode._node, Y.one('#test-replace').get('firstChild')._node, 'node.replace()');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_elements: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var elements = Y.one('#test-form').get('elements');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(Y.DOM.byId('test-form').elements, elements._nodes, "Y.one('#test-form').get('elements')");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_toFrag: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var frag = Y.all('#test-frag p').toFrag();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(11, frag.get('nodeType'), "Y.all('#test-frag p').toFrag();");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_aria: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('body').set('role', 'menu');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(document.body.getAttribute('role') === 'menu', "Y.one('body').set('role', 'menu')")
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('body').set('aria-checked', true);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('true', document.body.getAttribute('aria-checked', 2), "Y.one('body').set('aria-checked', true)")
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('true', Y.one('body').getAttribute('aria-checked'), "Y.one('body').set('aria-checked', true)")
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('true', Y.one('#foo').get('aria-checked'), "Y.one('#foo').get('aria-checked')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('body').set('aria-checked', false);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('false', Y.one('body').get('aria-checked'), "Y.one('body').set('aria-checked', false)");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_plugin: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.Node.plug(Y.Plugin.NodeFX);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(!!Y.Node.create('<div></div>').fx, 'Node.plug()');
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.Node.unplug(Y.Plugin.NodeFX);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(!!Y.Node.create('<div></div>').fx, 'Node.unplug()');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.all('input').plug(Y.Plugin.NodeFX);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.all('input').each(function(n) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isObject(n.fx, "Y.all('input').plug(Y.Plugin.NodeFX)");
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.all('input').unplug(Y.Plugin.NodeFX);
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.all('input').each(function(n) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(undefined, n.fx, "Y.all('input').unplug(Y.Plugin.NodeFX)");
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_props: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var mask = document.createElement('div');
29949e866e40b95795203f3ee46f44a197c946e4stevel mask.className = 'mask';
29949e866e40b95795203f3ee46f44a197c946e4stevel document.body.appendChild(mask);
29949e866e40b95795203f3ee46f44a197c946e4stevel var doc = Y.one('document');
29949e866e40b95795203f3ee46f44a197c946e4stevel window.scrollTo(0,0);
29949e866e40b95795203f3ee46f44a197c946e4stevel mask.style.height = doc.get('docHeight') + 'px';
29949e866e40b95795203f3ee46f44a197c946e4stevel mask.style.width = doc.get('docWidth') + 'px';
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.DOM.setStyle(mask, 'opacity', 0.4);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('DIV', Y.one('#test-prop').get('nodeName'), 'one("test-prop")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('test-xy', doc.one('#test-xy').get('id'), 'doc.one("#test-xy")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(doc.one('fake-id'), 'doc.one("#fake-id")');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(mask.offsetHeight, doc.get('docHeight'), 'get("docHeight")');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(mask.offsetWidth, doc.get('docWidth'), 'get("docWidth")');
29949e866e40b95795203f3ee46f44a197c946e4stevel mask.className = '';
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_refresh: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#test-nodes'),
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist = node.all('li');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.item(1).remove();
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual( node.one('li'), nodelist, "Y.one('#test-node').all('li')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
193974072f41a843678abf5f61979c748687e66bSherry Moore nodelist = Y.all('#test-nodes li');
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.item(1).remove();
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual( node.one('li'), nodelist, "Y.one('#test-node').all('li')");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_one: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.DOM.byId('test:colon');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node.getElementsByTagName('h2')[0], Y.one(node).one('h2')._node,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one(Y.DOM.byId('test:colon')).one(h2)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.DOM.byId('_funky:id{$400}');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node.getElementsByTagName('h2')[0], Y.one(node).one('h2')._node,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one(Y.DOM.byId('_funky:id{$400}')).one(h2)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one(1);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(node, "Y.one(1)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one(true);
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isNull(node, "Y.one(true)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one(false);
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.isNull(node, "Y.one(false)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one(0);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(node, "Y.one(0)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel test_all: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.DOM.byId('test:colon');
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(node.getElementsByTagName('h2'),
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one(node).all('h2')._nodes,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one(Y.DOM.byId('test:colon')).all(h2)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.DOM.byId('_funky:id{$400}');
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(node.getElementsByTagName('h2'),
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one(node).all('h2')._nodes,
193974072f41a843678abf5f61979c748687e66bSherry Moore "Y.one(Y.DOM.byId('_funky:id{$400}')).all(h2)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one('body');
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual([node._node], Y.all(node)._nodes,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.all(Y.one('body'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.one('win');
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual([node._node], Y.all(node)._nodes,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.all(Y.one('win'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel/* comparision fails in webkit, so using alert test below
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(window, Y.all(window)._nodes[0],
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.all(window)");
29949e866e40b95795203f3ee46f44a197c946e4stevel*/
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNotUndefined(Y.all(window)._nodes[0].alert,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.all(window)");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_isEmpty: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isFalse(Y.all('input').isEmpty());
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(Y.all('.nomatch').isEmpty());
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_siblings: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var parent = Y.one('#test-nodes > ol'),
29949e866e40b95795203f3ee46f44a197c946e4stevel children = parent.get('children');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(
29949e866e40b95795203f3ee46f44a197c946e4stevel [children.item(0)._node, children.item(1)._node, children.item(3)._node],
29949e866e40b95795203f3ee46f44a197c946e4stevel children.item(2).siblings()._nodes,
29949e866e40b95795203f3ee46f44a197c946e4stevel "children.item(2).siblings()"
29949e866e40b95795203f3ee46f44a197c946e4stevel );
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(
29949e866e40b95795203f3ee46f44a197c946e4stevel [children.item(0)._node, children.item(1)._node, children.item(3)._node],
29949e866e40b95795203f3ee46f44a197c946e4stevel children.item(2).siblings('li')._nodes,
29949e866e40b95795203f3ee46f44a197c946e4stevel "children.item(2).siblings('li')"
29949e866e40b95795203f3ee46f44a197c946e4stevel );
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel children.addClass('bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel children.item(1).removeClass('bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual(
29949e866e40b95795203f3ee46f44a197c946e4stevel [children.item(0)._node, children.item(3)._node],
29949e866e40b95795203f3ee46f44a197c946e4stevel children.item(2).siblings('li.bar')._nodes,
29949e866e40b95795203f3ee46f44a197c946e4stevel "children.item(2).siblings('li.bar')"
29949e866e40b95795203f3ee46f44a197c946e4stevel );
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_swap: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var elements = Y.DOM.byId('test-swap').getElementsByTagName('li'),
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes = Y.all('#test-swap li');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(elements[0], nodes.item(0)._node);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.item(0).swap(nodes.item(3));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(elements[0], nodes.item(3)._node, "nodes.item(0).swap(nodes.item(3))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.item(0).swap(nodes.item(3));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(elements[0], nodes.item(0)._node);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(elements[3], nodes.item(3)._node);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.item(1).swap(nodes.item(2));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(elements[1], nodes.item(2)._node);
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes.item(1).swap(nodes.item(2));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(elements[1], nodes.item(1)._node);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(elements[2], nodes.item(2)._node);
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_data: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // deprecated usage
29949e866e40b95795203f3ee46f44a197c946e4stevel node.set('data', 'foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', node.get('data'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.set('data', 'foo')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setData('foo', 'foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', node.getData('foo'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.setData('foo', 'foo')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.clearData();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(undefined, node.getData('baz'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.clearData()");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setData({'bar': 'bar', 'baz': 'baz'});
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('bar', node.getData('bar'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.setData({'bar': 'bar', 'baz': 'baz'})");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('baz', node.getData('baz'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.setData({'bar': 'bar', 'baz': 'baz'})");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.clearData('bar');
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(undefined, node.getData('bar'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.clearData('bar')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('baz', node.getData('baz'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.clearData('bar')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.clearData();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(undefined, node.getData('baz'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.clearData()");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.clearData();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(undefined, node.getData('baz'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.clearData() after cleared");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_appendStyle: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var html = '<style>body {height:100px}</style>';
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('head').append(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('100px', Y.one('body').getStyle('height'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('head').append(" + html + ")");
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_ancestor: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#test-table div div').ancestor('td');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.Assert.areEqual(byId('test-td'), node._node,
29949e866e40b95795203f3ee46f44a197c946e4stevel "Y.one('#test-table div').ancestor('td'))");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.Node.create('<div><div><table><tbody><tr></tr><tr></tr><tr><td><div><div class="inner"></div></div></td></tr></tbody></table></div></div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel var inner = node.one('.inner');
29949e866e40b95795203f3ee46f44a197c946e4stevel inner.ancestor('td');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_ancestors: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = document.createElement('node'),
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.className = 'foo';
29949e866e40b95795203f3ee46f44a197c946e4stevel document.body.appendChild(node);
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist = Y.one(node).ancestors();
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual([document.documentElement, document.body], nodelist._nodes);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist = Y.one(node).ancestors('.foo', true);
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual([node], nodelist._nodes);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist = Y.one(node).ancestors('body', true);
29949e866e40b95795203f3ee46f44a197c946e4stevel ArrayAssert.itemsAreEqual([document.body], nodelist._nodes);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel document.body.removeChild(node);
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_nodelistEvent: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var nodelist = Y.all('div'),
29949e866e40b95795203f3ee46f44a197c946e4stevel item = nodelist.item(0),
29949e866e40b95795203f3ee46f44a197c946e4stevel evtObj = {
29949e866e40b95795203f3ee46f44a197c946e4stevel mousedown: function(e, foo, bar) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('DIV', e.currentTarget.get('nodeName'), "e.currentTarget.get('nodeName')");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', foo, "foo === 'foo'");
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('bar', bar, "bar === 'bar'");
29949e866e40b95795203f3ee46f44a197c946e4stevel }
29949e866e40b95795203f3ee46f44a197c946e4stevel };
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.on('click', function(e) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(this, nodelist);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('DIV', e.currentTarget.get('nodeName'), "e.currentTarget.get('nodeName')");
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.on(evtObj, null, nodelist, null, 'foo', 'bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.on(evtObj, null, null, 'foo', 'bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.on({mouseup: true}, function(e) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(this, nodelist);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('DIV', e.currentTarget.get('nodeName'), "e.currentTarget.get('nodeName')");
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.on({mouseup: function(e) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(this, nodelist);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('DIV', e.currentTarget.get('nodeName'), "e.currentTarget.get('nodeName')");
29949e866e40b95795203f3ee46f44a197c946e4stevel }});
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.on({keydown: true}, function(e) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(this, nodelist.item(0));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('DIV', e.currentTarget.get('nodeName'), "e.currentTarget.get('nodeName')");
29949e866e40b95795203f3ee46f44a197c946e4stevel }, item);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.on({keydown: true}, function(e) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(this, nodelist.item(0));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('DIV', e.currentTarget.get('nodeName'), "e.currentTarget.get('nodeName')");
29949e866e40b95795203f3ee46f44a197c946e4stevel }, item);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.after('click', function(e) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(this, nodelist);
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual('DIV', e.currentTarget.get('nodeName'), "e.currentTarget.get('nodeName')");
193974072f41a843678abf5f61979c748687e66bSherry Moore });
193974072f41a843678abf5f61979c748687e66bSherry Moore
193974072f41a843678abf5f61979c748687e66bSherry Moore Y.after(evtObj, null, nodelist, null, 'foo', 'bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.after(evtObj, null, null, 'foo', 'bar');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel nodelist.after({mouseup: true}, function(e) {
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(this, nodelist);
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual('DIV', e.currentTarget.get('nodeName'), "e.currentTarget.get('nodeName')");
193974072f41a843678abf5f61979c748687e66bSherry Moore });
193974072f41a843678abf5f61979c748687e66bSherry Moore
193974072f41a843678abf5f61979c748687e66bSherry Moore nodelist.after({keydown: true}, function(e) {
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(this, nodelist.item(0));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('DIV', e.currentTarget.get('nodeName'), "e.currentTarget.get('nodeName')");
29949e866e40b95795203f3ee46f44a197c946e4stevel }, item);
193974072f41a843678abf5f61979c748687e66bSherry Moore
193974072f41a843678abf5f61979c748687e66bSherry Moore item.simulate('mousedown');
193974072f41a843678abf5f61979c748687e66bSherry Moore item.simulate('click');
193974072f41a843678abf5f61979c748687e66bSherry Moore item.simulate('mouseup');
193974072f41a843678abf5f61979c748687e66bSherry Moore item.simulate('keydown');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_size: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('#doc'),
193974072f41a843678abf5f61979c748687e66bSherry Moore height = node._node.offsetHeight,
193974072f41a843678abf5f61979c748687e66bSherry Moore width = node._node.offsetWidth;
193974072f41a843678abf5f61979c748687e66bSherry Moore
193974072f41a843678abf5f61979c748687e66bSherry Moore node.set('offsetHeight', 1000);
193974072f41a843678abf5f61979c748687e66bSherry Moore node.set('offsetWidth', 800);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(1000, node.get('offsetHeight'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.set('offsetHeight')");
193974072f41a843678abf5f61979c748687e66bSherry Moore
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual(800, node.get('offsetWidth'),
193974072f41a843678abf5f61979c748687e66bSherry Moore "node.set('offsetWidth')");
193974072f41a843678abf5f61979c748687e66bSherry Moore
193974072f41a843678abf5f61979c748687e66bSherry Moore node.set('offsetWidth', -100);
193974072f41a843678abf5f61979c748687e66bSherry Moore node.set('offsetHeight', -100);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('0px', node.getStyle('height'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.get('offsetHeight')");
193974072f41a843678abf5f61979c748687e66bSherry Moore
193974072f41a843678abf5f61979c748687e66bSherry Moore Assert.areEqual('0px', node.getStyle('width'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.get('offsetWidth')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('height', '');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('width', '');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(height, node.get('offsetHeight'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.get('offsetHeight')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(width, node.get('offsetWidth'),
29949e866e40b95795203f3ee46f44a197c946e4stevel "node.get('offsetWidth')");
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_select: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var select = Y.Node.create('<select>');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('', select.get('value'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_label_for: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var label = Y.Node.create('<label for="foo">');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', label.get('for'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_destroy: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div><em>foo</em><strong>bar</strong></div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel nodes = node.all('em, strong');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.destroy();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNull(node._node);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_prependFrag: function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var html = '<link id="dyn-link-1" href="#" rel="stylesheet"><link id="dyn-link-2" href="#" rel="stylesheet">';
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('head').prepend(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel //Y.one('head').prepend(Y.Node.create(html));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNotNull(document.getElementById('dyn-link-1'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNotNull(document.getElementById('dyn-link-2'));
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel html = '<link id="dyn-link-3" href="#" rel="stylesheet">'
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one('head').prepend(html);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isNotNull(document.getElementById('dyn-link-3'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel test_focus: function () {
29949e866e40b95795203f3ee46f44a197c946e4stevel var button = document.createElement('button');
29949e866e40b95795203f3ee46f44a197c946e4stevel button.style.visibility = 'hidden';
29949e866e40b95795203f3ee46f44a197c946e4stevel document.body.appendChild(button);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel // This will throw in IE, but the focus() wrapper should catch the
29949e866e40b95795203f3ee46f44a197c946e4stevel // exception.
29949e866e40b95795203f3ee46f44a197c946e4stevel Y.one(button).focus();
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should hide the node': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.hide();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('none', node.getStyle('display'));
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'block');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should show the node': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'none');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.show(1);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('block', node.getStyle('display'));
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'block');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should show the node and fire callback': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body'),
29949e866e40b95795203f3ee46f44a197c946e4stevel called = false;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'none');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.show(function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel called = true;
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(called);
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'block');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should show the node and treat function as callback': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body'),
29949e866e40b95795203f3ee46f44a197c946e4stevel called = false;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'none');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.show(null, function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel called = true;
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(called);
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'block');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should hide the node and fire callback': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body'),
29949e866e40b95795203f3ee46f44a197c946e4stevel called = false;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.hide(function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel called = true;
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(called);
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'block');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should hide the node and treat function as callback': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body'),
29949e866e40b95795203f3ee46f44a197c946e4stevel called = false;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.hide(null, function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel called = true;
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(called);
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'block');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should toggle the node view on': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'none');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleView();
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('block', node.getStyle('display'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should toggle the node view on and fire callback': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body'),
29949e866e40b95795203f3ee46f44a197c946e4stevel called = false;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'none');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleView('foo', function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel called = true;
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(called);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('block', node.getStyle('display'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should force toggle the node view on': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body'),
29949e866e40b95795203f3ee46f44a197c946e4stevel called = false;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleView(true);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('block', node.getStyle('display'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should force toggle the node view on and fire callback': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body'),
29949e866e40b95795203f3ee46f44a197c946e4stevel called = false;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleView(true, function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel called = true;
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(called);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('block', node.getStyle('display'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should force toggle the node view off': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleView(false);
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('none', node.getStyle('display'));
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'block');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should force toggle the node view off and fire callback': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one('body'),
29949e866e40b95795203f3ee46f44a197c946e4stevel called = false;
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.toggleView(false, function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel called = true;
29949e866e40b95795203f3ee46f44a197c946e4stevel });
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(called);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('none', node.getStyle('display'));
29949e866e40b95795203f3ee46f44a197c946e4stevel node.setStyle('display', 'block');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should set text for textNode': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.one(document.createElement('text'));
29949e866e40b95795203f3ee46f44a197c946e4stevel node.set('text', 'foo');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('foo', node.get('text'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should append to the given node': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div/>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.appendTo(Y.one('body'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should append to the given DOM node': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div/>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.appendTo(document.body);
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should wrap the node with the given html': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<span/>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.wrap('<div/>');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node.get('parentNode.tagName'), 'DIV');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should remove the node from its parent': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div/>').append('<span><em>foo</em></span>').one('em');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.unwrap();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual(node.get('parentNode.tagName'), 'DIV');
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should return true for fragment': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<span>foo</span><em>bar</em>');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.isTrue(node.isFragment());
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should create a caption element': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<table/>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.createCaption();
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('CAPTION', node.get('firstChild.tagName'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should replace node with the given node': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div><span>foo</span></div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.one('span').replace(Y.Node.create('<em>bar</em>'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('EM', node.get('firstChild.tagName'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should replace node with the given dom node': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div><span>foo</span></div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.one('span').replace(Y.Node.create('<em>bar</em>')._node);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('EM', node.get('firstChild.tagName'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should replace node with the given html': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div><span>foo</span></div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node.one('span').replace('<em>bar</em>');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('EM', node.get('firstChild.tagName'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should replace node with the given html and return the replaced node': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div><span>foo</span></div>');
29949e866e40b95795203f3ee46f44a197c946e4stevel node = node.replaceChild('<em>bar</em>', node.one('span'));
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('SPAN', node.get('tagName'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should append the given html and return the new node': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var node = Y.Node.create('<div></div>').appendChild('<em>foo</em>');
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('EM', node.get('tagName'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should append the given nodelist': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var nodelist = Y.Node.create('<div><em>foo</em><strong>bar</strong></div>').all('*'),
29949e866e40b95795203f3ee46f44a197c946e4stevel node = Y.Node.create('<div/>');
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel node.append(nodelist);
29949e866e40b95795203f3ee46f44a197c946e4stevel Assert.areEqual('EM', node.get('firstChild.tagName'));
29949e866e40b95795203f3ee46f44a197c946e4stevel },
29949e866e40b95795203f3ee46f44a197c946e4stevel
29949e866e40b95795203f3ee46f44a197c946e4stevel 'should append the given nodelist and return a NodeList instance': function() {
29949e866e40b95795203f3ee46f44a197c946e4stevel var nodelist = Y.Node.create('<div><em>foo</em><strong>bar</strong></div>').all('*'),
node = Y.Node.create('<div/>'),
nodelist2 = node.appendChild(nodelist);
Assert.areEqual('EM', nodelist.item(0).get('tagName'));
Assert.areEqual('STRONG', nodelist.item(nodelist.size() - 1).get('tagName'));
},
'should insert the given html and return the new node': function() {
var node = Y.Node.create('<div><span>foo</span></div>'),
newNode = node.insertBefore('<em>bar</em>', node.one('*'));
Assert.areEqual('EM', node.get('firstChild.tagName'));
},
'should insert the given nodelist before the given node and return the nodelist': function() {
var nodelist = Y.Node.create('<div><em>foo</em><strong>bar</strong></div>').all('*'),
node = Y.Node.create('<div><span>baz</span><b>foobar</b></div>'),
nodelist2 = node.insertBefore(nodelist, node.one('b')),
childNodes = node.get('childNodes');
Assert.areEqual(4, childNodes.size());
Assert.areEqual('EM', childNodes.item(1).get('tagName'));
Assert.areEqual('B', childNodes.item(childNodes.size() - 1).get('tagName'));
Assert.areEqual('SPAN', childNodes.item(0).get('tagName'));
},
'should insert the node before the given node and return the new node': function() {
var node = Y.Node.create('<div><span>baz</span><b>foobar</b></div>'),
node2 = node.insertBefore(Y.Node.create('<em>foo</em>'), node.one('b')),
childNodes = node.get('childNodes');
Assert.areEqual('EM', childNodes.item(1).get('tagName'));
Assert.areEqual('B', childNodes.item(childNodes.size() - 1).get('tagName'));
Assert.areEqual('EM', node2.get('tagName'));
},
'should insert the given node before the given dom node and return the new node': function() {
var node = Y.Node.create('<div><span>baz</span><b>foobar</b></div>'),
node2 = node.insertBefore(document.createElement('em'), node.one('b')),
childNodes = node.get('childNodes');
Assert.areEqual('EM', node.get('childNodes').item(1).get('tagName'));
Assert.areEqual('B', childNodes.item(childNodes.size() - 1).get('tagName'));
Assert.areEqual('EM', node2.get('tagName'));
},
'should fire the handler once': function() {
var i = 0,
test = this,
nodelist = Y.all('body');
nodelist.once('click', function() {
i++;
Assert.areEqual(1, i);
});
nodelist.item(0).simulate('click');
nodelist.item(0).simulate('click');
i = 0;
nodelist.onceAfter('click', function () {
i++;
Assert.areEqual(1, i);
});
nodelist.item(0).simulate('click');
nodelist.item(0).simulate('click');
},
'should pop the nodelist': function() {
var nodes = Y.all('div'),
node = nodes.pop();
Assert.areEqual(Y.all('div').item(Y.all('div').size() - 1), node);
Assert.areEqual(Y.all('div').size() - 1, nodes.size());
},
'should shift the nodelist': function() {
var nodes = Y.all('div'),
node = nodes.shift();
Assert.areEqual(Y.one('div'), node);
Assert.areEqual(Y.all('div').size() - 1, nodes.size());
},
'should push the node on nodelist': function() {
var nodes = Y.all('div'),
node = Y.one(document.createElement('div'));
Assert.areEqual(nodes.size() + 1, nodes.push(node));
Assert.areEqual(nodes.item(nodes.size() - 1), node);
Assert.areEqual(node._node, nodes._nodes[nodes.size() - 1]);
},
'should unshift the node on nodelist': function() {
var nodes = Y.all('div'),
size = nodes.size(),
node = Y.one(document.createElement('div'));
nodes.unshift(node);
Assert.areEqual(size + 1, nodes.size());
Assert.areEqual(nodes.item(0), node);
Assert.areEqual(node._node, nodes._nodes[0]);
},
'should unshift the dom node on nodelist': function() {
var nodes = Y.all('div'),
size = nodes.size(),
node = document.createElement('div');
nodes.unshift(node);
Assert.areEqual(size + 1, nodes.size());
Assert.areEqual(nodes.item(0), Y.one(node));
Assert.areEqual(node, nodes._nodes[0]);
},
'should concat the nodelists': function() {
var nodelist1 = Y.all('div'),
nodelist2 = Y.all('li'),
nodelist3 = nodelist1.concat(nodelist2);
ArrayAssert.itemsAreEqual(nodelist1._nodes.concat(nodelist2._nodes), nodelist3._nodes);
},
'should concat the nodes': function() {
var nodelist1 = Y.all('div');
nodelist2 = nodelist1.concat(Y.one('ul'), Y.one('li'));
ArrayAssert.itemsAreEqual(nodelist1._nodes.concat(Y.one('ul')._node, Y.one('li')._node), nodelist2._nodes);
},
'should return nodelist from empty concat': function() {
var nodelist = Y.Node.create('<div></div>').get('childNodes');
ArrayAssert.itemsAreEqual([], nodelist.concat()._nodes);
},
'should return nodelist from empty slice': function() {
var nodelist = Y.Node.create('<div></div>').get('childNodes');
ArrayAssert.itemsAreEqual([], nodelist.slice()._nodes);
},
'should return nodelist from empty splice': function() {
var nodelist = Y.Node.create('<div></div>').get('childNodes');
ArrayAssert.itemsAreEqual([], nodelist.splice()._nodes);
},
'should slice the nodes': function() {
var nodelist1 = Y.all('div');
nodelist2 = nodelist1.slice(1, 4);
nodelist3 = nodelist1.slice(0, 3);
ArrayAssert.itemsAreEqual(nodelist1._nodes.slice(1, 4), nodelist2._nodes);
ArrayAssert.itemsAreEqual(nodelist1._nodes.slice(0, 3), nodelist3._nodes);
},
'should splice the nodes': function() {
var nodelist1 = Y.all('div'),
nodes = Y.all('div')._nodes,
spliced1 = nodes.splice(1, 2),
spliced2 = nodelist1.splice(1, 2)._nodes;
ArrayAssert.itemsAreEqual(nodes, nodelist1._nodes);
ArrayAssert.itemsAreEqual(spliced1, spliced2);
},
'should empty the node': function() {
var node = Y.Node.create('<div><span><em>foo</em></span><strong>bar</strong></div>');
node.empty();
Assert.areEqual(0, node.get('childNodes').size());
},
'should empty the node and recursively destroy': function() {
var node = Y.Node.create('<div><span><em>foo</em></span><strong>bar</strong></div>'),
node2 = node.one('em');
Assert.areEqual(node2, node.one('em'));
node.empty(true);
Assert.areNotEqual(node2, node.one('em'));
},
'should empty the nodelist': function() {
var node = Y.Node.create('<div><span><em>foo</em></span><span>strong>bar</strong></span></div>');
node.all('span').empty();
Assert.areEqual(0, node.get('childNodes').item(0).get('childNodes').size());
Assert.areEqual(0, node.get('childNodes').item(1).get('childNodes').size());
},
'should load the content from the given url into the node': function() {
var node = Y.Node.create('<div></div>'),
test = this;
node.set('id', 'test-loading');
node.appendTo('body');
node.load('test-frame.html', function(code, response) {
test.resume(function() {
Assert.areEqual(1, node.all('div').size());
node.remove();
});
});
test.wait(1000);
},
'should load the query result from the given url into the node': function() {
var node = Y.Node.create('<div></div>'),
test = this;
node.set('id', 'test-loading');
node.appendTo('body');
node.load('test-frame.html', 'ul', function(code, response) {
test.resume(function() {
Assert.areEqual(1, node.all('ul').size());
node.remove();
});
});
test.wait(1000);
},
'should call method with node context': function() {
Y.Node.addMethod('testThis', function() {
return this.get('id');
});
var node1 = Y.Node.create('<div id="foo"/>');
var node2 = Y.Node.create('<div id="bar"/>');
Assert.areEqual('foo', node1.testThis());
Assert.areEqual('bar', node2.testThis());
},
'should clear inline styles': function() {
var node = Y.Node.create('<div/>');
document.body.appendChild(node._node);
node.setStyle('paddingTop', '10px');
Assert.areEqual('10px', node.getStyle('paddingTop'));
node.setStyle('');
Assert.areEqual('0px', node.getStyle('paddingTop'));
document.body.removeChild(node._node);
},
'should apply inline opacity': function() {
var node = Y.Node.create('<div/>');
document.body.appendChild(node._node);
node.setStyle('opacity', '0.5');
Assert.areEqual('0.5', node.getStyle('opacity'));
node.setStyle('');
Assert.areEqual('1', node.getStyle('opacity'));
document.body.removeChild(node._node);
},
'should accept document Node instance': function() {
Y.DOM._fragClones = {};
var node = Y.Node.create('<div/>', Y.one(document));
Assert.areEqual('DIV', node.get('tagName'));
},
'should destroy recursively': function() {
var node = Y.one('#test-nodes');
node.one('ul')._bar = 'bar';
node.destroy(true);
Assert.isUndefined(Y.one('#test-nodes ul')._bar);
},
'should return the DOM node': function() {
var node = document.getElementById('test-nodes');
Assert.areEqual(node, Y.one('#test-nodes').getDOMNode());
},
'should return the DOM nodes': function() {
var nodes = document.getElementsByTagName('input');
ArrayAssert.itemsAreEqual(nodes, Y.all(nodes).getDOMNodes());
},
'should not cache document fragment': function() {
var node = Y.Node.create('<div>foo</div><div>bar</div>');
Assert.isUndefined(Y.Node._instances[node._yuid]);
}
}));
suite.add( new Y.Test.Case({
name: 'generateID',
'should generate a unique ID': function() {
var node = Y.Node.create('<div/>'),
id = node.generateID();
Assert.isTrue(node.get('id') !== '');
Assert.areEqual(node.get('id'), id);
},
'should return exising ID': function() {
var node = Y.Node.create('<div id="foo"/>'),
id = node.generateID();
Assert.areEqual('foo', node.get('id'));
Assert.areEqual('foo', id);
}
}));
suite.add( new Y.Test.Case({
name: 'new Y.Node()',
'should generate a fresh instance': function() {
Assert.areNotEqual(Y.one('body'), Y.Node('body'));
},
'compareTo should pass': function() {
Assert.isTrue(Y.one('body').compareTo(Y.Node('body')));
}
}));
suite.add( new Y.Test.Case({
name: 'NodeList API',
'should have the create API': function() {
Assert.isTrue(typeof Y.all('body').append == 'function');
Assert.isTrue(typeof Y.all('body').prepend == 'function');
Assert.isTrue(typeof Y.all('body').insert == 'function');
Assert.isTrue(typeof Y.all('body').setContent == 'function');
Assert.isTrue(typeof Y.all('body').appendChild == 'function');
},
'should have the view API': function() {
Assert.isTrue(typeof Y.all('body').hide == 'function');
Assert.isTrue(typeof Y.all('body').show == 'function');
Assert.isTrue(typeof Y.all('body').toggleView == 'function');
},
'should have the event API': function() {
Assert.isTrue(typeof Y.all('body').on == 'function');
Assert.isTrue(typeof Y.all('body').after == 'function');
Assert.isTrue(typeof Y.all('body').detach == 'function');
Assert.isTrue(typeof Y.all('body').detachAll == 'function');
}
}));
Y.Test.Runner.add(new Y.Test.Case({
name: 'Y.Node.ancestor',
'should return the parent node': function() {
Assert.areEqual(document.documentElement,
Y.one(document.body).ancestor()._node);
},
'should return the same node': function() {
Assert.areEqual(document.body,
Y.one(document.body).ancestor('body', true)._node);
},
'should return the matching ancestor': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
return node._node.tagName === 'BODY';
};
Assert.areEqual(document.body, Y.one(node).ancestor(fn)._node);
},
'should return the matching ancestor via selector': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0];
Assert.areEqual(document.body, Y.one(node).ancestor('body')._node);
},
'should return the matching ancestor (test self match)': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
return node.get('tagName') === 'EM';
};
Assert.areEqual(node, Y.one(node).ancestor(fn, true)._node);
},
'should return the matching ancestor (test self match) via selector': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0];
Assert.areEqual(node, Y.one(node).ancestor('em', true)._node);
},
'should return the matching ancestor (test self not matched)': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
return node.get('tagName') === 'BODY';
};
Assert.areEqual(document.body, Y.one(node).ancestor(fn, true)._node);
},
'should return the matching ancestor (test self not matched) via selector': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0];
Assert.areEqual(document.body, Y.one(node).ancestor('body', true)._node);
},
'should stop when the stop function returns true': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.tagName === 'BODY';
},
stopFn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
};
Assert.isNull(Y.one(node).ancestor(fn, null, stopFn));
},
'should stop when the stop function returns true as 2nd arg': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.tagName === 'BODY';
},
stopFn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
};
Assert.isNull(Y.one(node).ancestor(fn, stopFn));
},
'should stop when the stop function returns true via selector': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0];
Assert.isNull(Y.one(node).ancestor('body', null, '#test-ancestor-stop'));
},
'should stop when the stop function returns true via selector as 2nd arg': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0];
Assert.isNull(Y.one(node).ancestor('body', '#test-ancestor-stop'));
},
'should find ancestor before stop': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
},
stopFn = function(node) {
node = node._node;
return node.tagName === 'BODY';
};
Assert.areEqual('test-ancestor-stop',
Y.one(node).ancestor(fn, null, stopFn)._node.id);
},
'should find ancestor before stop fn as 2nd arg': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
},
stopFn = function(node) {
node = node._node;
return node.tagName === 'BODY';
};
Assert.areEqual('test-ancestor-stop',
Y.one(node).ancestor(fn, stopFn)._node.id);
},
'should find ancestor before stop via selector': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
};
Assert.areEqual('test-ancestor-stop',
Y.one(node).ancestor(fn, null, 'body')._node.id);
},
'should find ancestor before stop via selector as 2nd arg': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
};
Assert.areEqual('test-ancestor-stop',
Y.one(node).ancestor(fn, 'body')._node.id);
},
'should find ancestor via selector before stop via selector': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0];
Assert.areEqual('test-ancestor-stop',
Y.one(node).ancestor('#test-ancestor-stop', null, 'body')._node.id);
},
'should find ancestor when both test and stop return true': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
},
stopFn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
};
Assert.areEqual('test-ancestor-stop',
Y.one(node).ancestor(fn, null, stopFn)._node.id);
},
'should find ancestor when testFn and stop via selector both pass': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
};
Assert.areEqual('test-ancestor-stop',
Y.one(node).ancestor(fn, null, '#test-ancestor-stop')._node.id);
},
'should find ancestor when test and stop via selector both pass': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0];
Assert.areEqual('test-ancestor-stop',
Y.one(node).ancestor('#test-ancestor-stop', null, '#test-ancestor-stop')._node.id);
}
}));
Y.Test.Runner.add(new Y.Test.Case({
name: 'Y.DOM.ancestors',
'should return an array of one (documentElement)': function() {
ArrayAssert.itemsAreEqual([document.documentElement],
Y.one(document.body).ancestors()._nodes);
},
'should include the starting node': function() {
var node = document.createElement('div');
document.body.appendChild(node);
ArrayAssert.itemsAreEqual([document.documentElement, document.body, node],
Y.one(node).ancestors(null, true)._nodes);
document.body.removeChild(node);
},
'should omit the starting node': function() {
var node = document.createElement('div');
document.body.appendChild(node);
ArrayAssert.itemsAreEqual([document.documentElement, document.body],
Y.one(node).ancestors()._nodes);
document.body.removeChild(node);
},
'should return the matching ancestors': function() {
var node = document.createElement('div'),
fn = function(node) {
node = node._node;
return node.tagName !== 'HTML';
};
document.body.appendChild(node);
ArrayAssert.itemsAreEqual([document.body], Y.one(node).ancestors(fn)._nodes);
document.body.removeChild(node);
},
'should return the matching ancestors via selector': function() {
var node = document.createElement('div');
document.body.appendChild(node);
ArrayAssert.itemsAreEqual([document.body], Y.one(node).ancestors(':not(html)')._nodes);
document.body.removeChild(node);
},
'should return the matching ancestors (test self match)': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.tagName === 'EM';
};
ArrayAssert.itemsAreEqual([node], Y.one(node).ancestors(fn, true)._nodes);
},
'should return the matching ancestors (test self not matched)': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.tagName === 'BODY';
};
ArrayAssert.itemsAreEqual([document.body], Y.one(node).ancestors(fn, true)._nodes);
},
'should stop when the stop function returns true': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.tagName === 'BODY';
},
stopFn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
};
ArrayAssert.itemsAreEqual([], Y.one(node).ancestors(fn, null, stopFn)._nodes);
},
'should find ancestor before stop': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.tagName === 'DIV';
},
stopFn = function(node) {
node = node._node;
return node.tagName === 'BODY';
};
ArrayAssert.itemsAreEqual([
node.parentNode.parentNode.parentNode,
node.parentNode.parentNode,
node.parentNode
],
Y.one(node).ancestors(fn, null, stopFn)._nodes);
},
'should find ancestor when both test and stop return true': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.tagName === 'DIV';
},
stopFn = function(node) {
node = node._node;
return node.tagName === 'DIV';
};
Assert.areEqual(1,
Y.one(node).ancestors(fn, null, stopFn).size());
},
'should stop when the stop function returns true as 2nd arg': function() {
var root = document.getElementById('test-element-by-axis'),
node = root.getElementsByTagName('EM')[0],
fn = function(node) {
node = node._node;
return node.tagName === 'BODY';
},
stopFn = function(node) {
node = node._node;
return node.id === 'test-ancestor-stop';
};
Assert.areEqual(0, Y.one(node).ancestors(fn, stopFn).size());
}
}));
Y.Test.Runner.add(new Y.Test.Case({
name: 'Y.Node.insert',
'insert should fail silently given null input': function() {
Assert.areEqual(document.body, Y.one('body').insert(null)._node);
},
'insert should work with 0 (falsy number input)': function() {
var node = document.createElement('div');
Assert.isTrue(Y.one(node).insert(0)._node.innerHTML === '0');
},
'insert should replace content when given null input and replace where string': function() {
var node = document.createElement('div');
node.innerHTML = '<strong>foo</strong><em>bar</em>';
Assert.areEqual('', Y.one(node).insert(null, 'replace')._node.innerHTML);
},
'prepend should fail silently given null input': function() {
Assert.areEqual(document.body, Y.one('body').prepend(null)._node);
}
}));
Y.Test.Runner.add(new Y.Test.Case({
name: 'Y.Node.removeAttribute',
'should remove the given attribute': function() {
var node = document.createElement('div');
node.innerHTML = '<div id="foo">foo</div>';
node = node.getElementsByTagName('div')[0];
Y.one(node).removeAttribute('id');
Assert.areEqual('', Y.one(node).get('id'));
},
'should be chainable': function() {
var node = document.createElement('div');
node.innerHTML = '<div id="foo">foo</div>';
node = Y.one(node.getElementsByTagName('div')[0]);
Assert.areEqual(node, node.removeAttribute('id'));
}
}));
Y.Test.Runner.add(suite);
Y.on('load', function() {
Y.Test.Runner.run();
}, window);
});
</script>
</body>
</html>