node.html revision 894e963127a7a83369f5ea79174379e1658b06b8
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<html>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<head>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<title>Node Test Suite</title>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<link type="text/css" rel="stylesheet" href="/yui2/build/logger/assets/logger.css">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<link type="text/css" rel="stylesheet" href="/yui2/build/yuitest/assets/testlogger.css">
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<script type="text/javascript" src="/build/yui/yui.js"></script>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<script type="text/javascript" src="/build/event-custom/event-custom.js"></script>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<script type="text/javascript" src="/build/event-simulate/event-simulate.js"></script>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<script type="text/javascript" src="/build/event/event.js"></script>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<script type="text/javascript" src="/build/oop/oop.js"></script>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<script type="text/javascript" src="/build/dom/dom.js"></script>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<script type="text/javascript" src="/build/dom/selector-css3.js"></script>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<script type="text/javascript" src="/build/base/base.js"></script>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<script type="text/javascript" src="/build/attribute/attribute.js"></script>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<script type="text/javascript" src="/build/node/node-debug.js"></script>
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<script type="text/javascript" src="/yui2/build/yahoo/yahoo-min.js"></script>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<script type="text/javascript" src="/yui2/build/dom/dom-min.js"></script>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<script type="text/javascript" src="/yui2/build/event/event.js"></script>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<script type="text/javascript" src="/yui2/build/logger/logger-min.js"></script>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<script type="text/javascript" src="/yui2/build/yuitest/yuitest.js"></script>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews<style type="text/css">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonbody {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson font:13px/1.22 arial;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson width:1000px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson}
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson#doc {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson min-height:200px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson}
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson#get-style {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson background:#ccc;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson float:left;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson font-size:10px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson height:10em;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson padding:15px 0;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson width:200px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson}
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson.mask {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson background:#ccc;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson position:absolute;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson top:0;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson left:0;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson overflow:hidden;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson}
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson#test-xy {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson background:green;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson position:absolute;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson height:10px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson width:10px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson}
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson#test-computed {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson position:relative;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson width:50%;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson margin:auto;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson padding:10px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson z-index: 2;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson}
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson#test-scroll {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson height: 100px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson width: 100px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson overflow:auto;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson}
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson#test-scroll p {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson height:1000px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson width:1000px;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson}
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</style>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<style type="text/css">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</style>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</head>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<body class="yui-skin-sam">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="test-append"></div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="test-xy"></div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="test-scroll">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <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>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson </div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="doc" class="doc-wrap">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <a href="http://www.yahoo.com" id="link-1">Yahoo!</a>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <a href="http://www.yahoo.com" id="link-2" tabIndex="-1">Yahoo!</a>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <form id="test-form" class="test-class" action="#">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <input name="test-data1" value="0">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <textarea name="test-data2" value="0"></textarea>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <button name="test-data3" value="0">button</button>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <button name="test-data4">button</button>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson </form><div id="test-class">test class</div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="test-prop" tabindex="4">text<em id="test-contains">test<span></span></em><strong>node</strong></div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="set-style"><div class="bar" id="bar">setStyle</div>foo<div>blah</div></div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="get-style">getStyle</div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="baz">baz</div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson text
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="test-extras">extras</div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="test-children">foo <span>bar</span> <strong>baz</strong> </div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson </div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="inline-style" style="color: green">inline style</div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="foo"></div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="test-computed">test computed style</div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <form id="form.foo@bar:baz">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <select id="test-select" name="test-select">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <option value="0">foo</option>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <option value="1">bar</option>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <option>baz</option>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson </select>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson </form>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <div id="test-nodes"> <ul> <li>item 1</li>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <li>item 2</li>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <li>item 3</li>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <li>item 4</li>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson </ul>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <ol>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <li>item 1</li>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <li>item 2</li>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <li>item 3</li>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson <li>item 4</li>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson </ol>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson </div>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<iframe src="test-frame"></iframe>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<script type="text/javascript">
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonYUI({ base: '/build/', filter: 'debug' }).use('*', function(Y) {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var tool = YAHOO.tool,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson suite = new tool.TestSuite("yuisuite");
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var Assert = YAHOO.util.Assert;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var ArrayAssert = YAHOO.util.ArrayAssert;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var logger = new tool.TestLogger(null, { height: '800px', fontSize: '100%' });
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var handleClick = function(e) {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson //alert('click');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson e.currentTarget.detach('click', handleClick);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson };
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Y.Node.get('html').on('click', handleClick);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var byId = function(id) {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson return document.getElementById(id);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson };
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var $ = Y.Selector.query;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson suite.add( new tool.TestCase({
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson name: 'Y.Node Instance',
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson test_get: function() {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var node = Y.get('#test-nodes'),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson nodes = Y.all('#test-nodes *');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson // return null
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isNull(Y.get(''), 'Y.get("")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isNull(Y.get(null), 'Y.get(null)');
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson Assert.isNull(Y.get('#fake-id li'), 'Y.get("#fake-id li") === null');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isNull(Y.get('#fake-id'), 'Y.get("#fake-id") === null');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isNull(Y.get('#fake-id li'), 'Y.get("#fake-id li") === null');
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson // return zero length collection
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue((Y.all('') instanceof Y.NodeList), 'Y.all("") instanceof NodeList');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue((Y.all('null') instanceof Y.NodeList), 'Y.all("null") instanceof NodeList');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue((Y.all('#foo *') instanceof Y.NodeList), 'Y.all("#foo *") === null');
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson // return 1
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('test-nodes').id, Y.get('#test-nodes').get('id'), 'Y.get("#test-nodes")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('test-nodes'), Y.Node.getDOMNode(Y.get('#test-nodes')), 'Y.get("#test-nodes")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('test-nodes'), Y.Node.getDOMNode(Y.get('#test-nodes')), 'Y.get("#test-nodes")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('test-nodes', Y.get('#test-nodes').get('id'), 'Y.get("#test-nodes").get("id")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(node, Y.get('#test-nodes'), 'node === Y.get("#test-nodes")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('test-nodes').getElementsByTagName('li')[0],
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Y.Node.getDOMNode(Y.get('#test-nodes li:first-child')), 'Y.get("#test-nodes")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(byId('test-nodes').getElementsByTagName('li')[1],
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Y.Node.getDOMNode(Y.get('#test-nodes li:nth-child(2)')), 'Y.get("#test-nodes:nth-child(2)")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('test-nodes').getElementsByTagName('li')[1],
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Y.Node.getDOMNode(Y.get('#test-nodes li:nth-child(2)')), 'Y.get("#test-nodes:nth-child(2)")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(document.body, Y.Node.getDOMNode(Y.get('div, .foo, body')), "Y.get('div, .foo, body')");
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var frameDoc = Y.get('iframe').get('contentWindow.document');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('iframe foo', frameDoc.query('#demo li').get('innerHTML'),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson "frameDoc.query('#demo li').get('innerHTML')");
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(document.getElementById('form.foo@bar:baz'), Y.Node.getDOMNode(Y.get('[id=form.foo@bar:baz]')), "#form.foo@bar:baz");
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var firstChild = Y.get('body :first-child');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Y.get('body').insertBefore(Y.Node.create('<div>foo</div>'), firstChild);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson console.log(Y.Node.getDOMNode(Y.get('body :first-child')));
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isFalse(Y.Node.getDOMNode(firstChild) === Y.Node.getDOMNode(Y.get('body :first-child')), "wrong node: Y.get('body :first-child')");
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Y.get('body').removeChild(Y.get('body :first-child'));
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(Y.Selector.query('body :firstChild', null, true), Y.Node.getDOMNode(Y.get('body : first-child')), "body :first-child === #test-append");
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson // return more than 1
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson ArrayAssert.itemsAreEqual($('#test-select option'), Y.NodeList.getDOMNodes(Y.all('#test-select option')), 'Y.get("#test-select option")');
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(3, Y.all('#test-select option').size(), 'Y.get("#test-select option").size()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(2, Y.all('form').size(), 'Y.get("form").size()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('FORM', Y.all('form').item(1).get('tagName'), 'Y.get("form").item(1)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(1, Y.all('.bar').size(), 'Y.get(".bar")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areNotEqual(nodes, Y.all('#test-nodes *'), 'nodes === Y.all("#test-nodes")');
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(nodes.size(), Y.all('#test-nodes *').size(), 'nodes.size() === Y.all("#test-nodes").size()');
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson },
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson test_each: function() {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var count = 0,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson nodes = Y.all('#test-nodes *'),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson index, instance, isNode;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson nodes.each(function(node, i, list) {
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson count++;
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson index = i;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson instance = list;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson isNode = (node instanceof Y.Node);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson });
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(count, nodes.size(), 'node.each(count) === nodes.size()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(nodes.size() - 1, index, 'nodes.size() - 1 === index');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(nodes, instance, 'nodes === instance');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(isNode, 'node instanceof Y.Node');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson },
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson test_getters: function() {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var id = 'test-nodes',
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson element = byId(id),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson node = Y.get('#' + id),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson nodes = Y.all('#' + id + ' *');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(null, node.get(''), 'node.get("") === null');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(null, node.get('fake'), 'node.get("fake") === null');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(null, node.get('nodeValue'), 'nodeValue === null');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('DIV', node.get('nodeName'), 'nodeName === "DIV"');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('UL', nodes.get('nodeName')[0], 'nodeName === "UL"');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('LI', nodes.get('nodeName')[nodes.size() - 1], 'nodeName === "UL"');
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(element.firstChild.nextSibling.nodeName, node.get('firstChild').get('nextSibling').get('nodeName'), 'node.firstChild.nextSibling.nodeName"');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(element.lastChild.nodeName, node.get('lastChild').get('nodeName'), 'lastChild.nodeName"');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(9, node.get('ownerDocument').get('nodeType'), 'node.ownerDocument.nodeType === 9');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual('test-nodes', nodes.get('parentNode')[0].get('id'), 'nodes.get(parentNode)[0].get("id") === test-nodes');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(element.firstChild.nodeType, node.get('firstChild').get('nodeType'), 'firstChild.get("nodeType")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(element.offsetWidth, node.get('offsetWidth'), 'offsetWidth === node.offsetWidth');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(element.offsetParent.tagName, node.get('offsetParent').get('tagName'), 'offsetParent.tagName === offsetParent.tagName');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('item 1', Y.Lang.trim(nodes.get('children')[0].get('text')[0]), 'nodes.get("children")[0].get("text")[0]');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson ArrayAssert.itemsAreEqual($('#test-select option'),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Y.NodeList.getDOMNodes(Y.get('#test-select').get('options')),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson 'Y.get("#test-select.get("options")');
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(2, node.get('children').size(), 'get("children")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(8, Y.all('#' + id + ' li').size(), 'Y.all("#test-nodes li.size()")');
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson // size() is deprecated on Node
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson //Assert.areEqual(1, Y.get('#' + id + ' li').size(), 'Y.get("#test-nodes li.size()")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('test-nodes').childNodes.length, node.get('childNodes').get('tagName').length, 'node.get("childNodes")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson ArrayAssert.itemsAreEqual(byId('test-nodes').childNodes.length, node.get('childNodes').get('length').length, "node.get('childNodes').get('length')");
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(element.lastChild.nodeName, node.get('lastChild.nodeName'), 'node.get("lastChild.nodeName")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(element.lastChild.previousSibling.nodeName, node.get('lastChild').get('previousSibling').get('nodeName'), 'node.lastChild.previousSibling.nodeName');
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual('test', Y.get('#test-prop').get('firstChild.nextSibling.firstChild.nodeValue'),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson 'node.get("firstChild.nextSibling.firstChild.nodeValue")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(byId('test-prop').tabIndex, Y.get('#test-prop').get('tabIndex'), 'Y.get("#test-prop").get("tabIndex")');
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson Assert.areEqual(byId('doc').tabIndex, Y.get('#doc').get('tabIndex'), 'Y.get("#doc".get("tabIndex"))');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('link-1').tabIndex, Y.get('#link-1').get('tabIndex'), 'Y.get("#link1".get("tabIndex"))');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('link-2').tabIndex, Y.get('#link-2').get('tabIndex'), 'Y.get("#link1".get("tabIndex"))');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson },
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson test_create: function() {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var id = 'test-nodes',
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson element = byId(id),
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson node = Y.get('#' + id);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('fresh', node.create('<div id="fresh">fresh</div>').get('id'), 'node.create from string)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson node = Y.Node.create('<select><option>foo</option></select>');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var option = Y.Node.create('<option>bar</option>').set('selected', 'selected');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson node.appendChild(option);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(Y.Node.getDOMNode(option).selected, "Y.Node.create('<option>test</option>').set('selected', 'selected'))");
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ac299c4f5ca236370b9df2a91b18b149b1d344a7Andreas Gustafsson },
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson test_setter: function() {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var id = 'test-prop',
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson element = byId(id),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson node = Y.get('#' + id),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson nodes = Y.all('#test-nodes *');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var childNodes = Y.get('body').get('childNodes');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson childNodes.set('title', 'foo bar');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(byId('test-nodes').title == 'foo bar', 'Y.get("body").get("childNodes").set("title")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson node.set('foo', 'foo');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isUndefined(node.get('foo'), 'node.get("foo")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson node.set('title', 'my title');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('my title', Y.Node.getDOMNode(node).title, 'node.title)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('my title', node.get('title'), 'node.set("title")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson nodes.set('className', 'foo');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('foo', Y.NodeList.getDOMNodes(nodes)[0].className, 'node.className');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('foo', nodes.get('className')[2], 'node.get("className")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('foo', nodes.item(nodes.size() - 2).get('className'),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson 'nodes.item(nodes.size - 2).get("className")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson /* // chains attrs currently broken
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Y.get('body > form').set('test-select.selectedIndex', 2);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(2, byId('test-select').selectedIndex,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson 'Y.get("body > form").set("test-select.selectedIndex", 2)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson */
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson },
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson test_dom_methods: function() {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var id = 'test-prop';
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var element = byId(id);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var parent = Y.Node.get(element.parentNode);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var node = Y.Node.get('#test-prop');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson //Assert.isTrue(element === Y.get(node), 'element === Y.get(node)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(element.getElementsByTagName('em')[0].nodeName, node.getElementsByTagName('em').item(0).get('nodeName'), 'getElementsByTagName');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var insertNode = document.createElement('div');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Y.stamp(insertNode);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson insertNode.innerHTML = 'inserted node';
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Y.get('body').appendChild(Y.get('div'));
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(Y.get('body').get('lastChild').compareTo(Y.get('#test-append')), 'get("body").appendChild(Y.get("#test-append"))');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('test-append'), Y.Node.getDOMNode(Y.get('body').get('lastChild')), 'get("body").appendChild(Y.get([0]"#test-append"))');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('inserted node', node.appendChild(insertNode).get('innerHTML'), 'appendChild(element input)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('inserted node', node.removeChild(insertNode).get('innerHTML'), 'removeChild(element input)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('inserted node', node.appendChild(Y.get(insertNode)).get('innerHTML'), 'appendChild(Node input)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('inserted node', node.removeChild(Y.get(insertNode)).get('innerHTML'), 'removeChild(Node input)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(1, node.cloneNode().get('nodeType'), 'cloneNode()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isFalse(node === node.cloneNode(), 'node === node.cloneNode()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson // TODO: test deep clone with bound descendant
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.get('childNodes').size() === node.cloneNode(true).get('childNodes').size(), 'node.get("childNodes").size() === node.cloneNode(true).get("childNodes").size()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.hasChildNodes(), 'hasChildNodes()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.compareTo(node), 'compareTo(node)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.compareTo(Y.Node.get(node)), 'compareTo(new Y.Node)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isFalse(node.compareTo(null), 'compareTo(null)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isFalse(node.create('<p>foo</p>').inDoc(), 'node.inDoc()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.contains(byId('test-contains')), 'contains()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.contains(node), 'contains() self');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.contains(element), 'contains() self');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isFalse(node.contains(document.getElementsByTagName('div')), 'contains() false positive for collection');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('doc', node.ancestor(function(el) {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson return el.get('id') === 'doc';
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson }).get('id'), 'ancestor');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isNull(node.ancestor(function(el) {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson return el.hasAttribute('foo');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson }), 'ancestor');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('test-class', node.previous().get('id'), 'node.previous()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.inDoc(), 'node.inDoc()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(byId('test-contains'), Y.Node.getDOMNode(node.getById('test-contains')), 'node.getById("test-contains")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.hasAttribute('id'), 'node.hasAttribute("id")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(node.hasAttribute('title'), 'node.hasAttribute("title")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isFalse(node.hasAttribute('foo'), 'node.hasAttribute("foo")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isFalse(Y.get('body').hasAttribute('title'), 'body.hasAttribute("title")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(Y.get('input[name=test-data1]').hasAttribute('value'), 'input.hasAttribute("value")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.isTrue(Y.get('textarea[name=test-data2]').hasAttribute('value'), 'textarea.hasAttribute("value")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('0', Y.get('textarea[name=test-data2]').getAttribute('value'), 'textarea.getAttribute("value")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('0', Y.get('button[name=test-data3]').getAttribute('value'), 'button.getAttribute("value")');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('0', Y.get('select[name=test-select] option:nth-child(1)').getAttribute('value'), 'option1.getAttribute("value") (from innerText)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('1', Y.get('select[name=test-select] option:nth-child(2)').getAttribute('value'), 'option2.getAttribute("value") (from innerText)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual('', Y.get('select[name=test-select] option:nth-child(3)').getAttribute('value'), 'option3.getAttribute("value") (from innerText)');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson },
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson test_fragment: function() {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var frag = Y.get('document').invoke('createDocumentFragment'),
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson element = byId('test-append');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson frag.appendChild(element);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Assert.areEqual(element, Y.Node.getDOMNode(frag.get('firstChild')), 'frag.appendChild()');
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson Y.get('body').appendChild(frag);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson },
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson test_screen: function() {
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var id = 'test-prop';
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var element = byId(id);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var parent = Y.Node.get(element.parentNode);
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson var node = Y.Node.get(element);
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews
var newNode = Y.Node.create('<div id="brand-new-foo">foo</div>');
Assert.areEqual(document.documentElement.scrollLeft, newNode.get('docScrollX'), 'newNode.get("docScrollX")');
Assert.areEqual(document.documentElement.scrollTop, node.get('docScrollY'), 'node.get("docScrollY")');
node.setXY([100, 100]);
ArrayAssert.itemsAreEqual([100, 100], node.getXY(), 'Node.getXY("foo", "bar")');
},
test_region: function() {
Assert.isTrue(Y.DOM.inRegion(byId('baz'), byId('doc')), 'DOM.inRegion(domNode, domNode)');
Assert.isTrue(Y.Node.get('#get-style').inRegion(byId('doc')), 'node.inRegion(domNode)');
Assert.isTrue(Y.Node.get('#get-style').inRegion(Y.Node.get('#doc')), 'node.inRegion(Node)');
ArrayAssert.itemsAreEqual(Y.DOM.region(Y.DOM.byId('doc')), Y.Node.get('#doc').get('region'), 'node.get("region")');
},
test_classes: function() {
var id = 'test-class';
var element = byId(id);
var parent = Y.Node.get(element.parentNode);
var node = Y.Node.get(element);
Assert.isTrue(node.get('previousSibling').hasClass('test-class'), 'node.get("previousSibling").hasClass("test-class")');
node.addClass('foo');
Assert.areEqual('foo', element.className, 'node.addClass("foo")');
node.removeClass('foo');
Assert.areEqual('', element.className, 'node.removeClass("foo")');
node.addClass('foo');
Y.Node.get('body').get('childNodes').addClass('foo');
Assert.isTrue(byId('test-class').className == 'foo', 'NodeList.addClass');
node.replaceClass('foo', 'bar');
Assert.areEqual('bar', element.className, 'Node.replaceClass("foo", "bar")');
var nodes = Y.all('#test-nodes li');
nodes.addClass('foo').addClass('bar');
nodes.each(function(n) {
Assert.isTrue(n.hasClass('foo'));
Assert.isTrue(n.hasClass('bar'));
});
nodes.removeClass('bar');
nodes.each(function(n) {
Assert.isFalse(n.hasClass('bar'));
});
},
test_setStyle: function() {
var element = byId('set-style'),
node = Y.Node.get(element),
nodes = node.get('childNodes');
node.setStyle('width', '20em');
Assert.areEqual('20em', element.style.width, "setStyle('width' '20em')");
node.setStyle('marginTop', '1em');
Assert.areEqual('1em', element.style.marginTop, "setStyle('marginTop','1em')");
node.setStyle('opacity', 0.5);
Assert.areEqual(0.5, node.getStyle('opacity'), "setStyle('opacity', 0.5)");
node.setStyle('float', 'left');
Assert.areEqual('left', node.getStyle('float'), "setStyle('float', 'left')");
node.setStyle('float', 'left');
Assert.areEqual('left', node.getStyle('float'), "setStyle('float', 'left')");
nodes.setStyle('marginTop', '1em');
Assert.areEqual('1em', nodes.getStyle('marginTop')[2], "setStyle('marginTop', '1em'");
},
test_getStyle: function() {
var node = Y.Node.get('#get-style');
node.setStyle('opacity', 0.5);
Assert.areEqual(0.5, node.getStyle('opacity'), "node.getStyle('opacity')");
Assert.areEqual('left', node.getStyle('float'), "node.getStyle('float')");
Assert.areEqual('100px', node.getStyle('height'), "getStyle('height')");
Assert.areEqual('200px', node.getStyle('width'), "getStyle('width)'");
Assert.areEqual('visible', node.getStyle('visibility'), "visibility");
node.setStyle('visibility', 'hidden');
Assert.areEqual('hidden', node.getStyle('visibility'), "visibility");
node.setStyle('visibility', 'visible');
},
test_getComputedStyle: function() {
var node = Y.get('#test-computed');
var domNode = byId('test-computed');
domNode.style.zoom = 1;
domNode.style.border = 'medium solid #000';
var bw = (Y.UA.ie) ? 4 : 3;
var h = node.get('offsetHeight') - 20 - 2 * bw;
Assert.areEqual(bw + 'px', node.getComputedStyle('borderTopWidth'), "borderTopWidth: medium");
Assert.areEqual(h, Math.round(parseFloat(node.getComputedStyle('height'))), "height: auto (offset minus padding and border)");
domNode.style.padding = '1em';
Assert.areEqual('13px', node.getComputedStyle('paddingTop'), "padding 10em");
Assert.areEqual('visible', node.getComputedStyle('visibility'), "visibility");
domNode.parentNode.style.visibility = 'hidden';
Assert.areEqual('hidden', node.getComputedStyle('visibility'), "visibility");
domNode.parentNode.style.visibility = 'visible';
Assert.areEqual(2, node.getComputedStyle('zIndex'), 'node.getComputedStyle("zIndex")');
Assert.areEqual('500px', node.getComputedStyle('width'), "percent width (from CSS)");
domNode.style.margin = 'auto';
Assert.areEqual('0px', node.getComputedStyle('marginTop'), "margin auto");
},
test_setStyles: function() {
var node = byId('set-style');
var element = Y.Node.get(node);
element.setStyles({
'top': '5px',
'right': '10em'
});
Assert.isTrue( (node.style.top == '5px' && node.style.right == '10em'), "setStyles()");
},
test_rootNode: function() {
var element = byId('test-prop');
var node = Y.Node.get(element, null, true);
Assert.isNull(Y.get('body', null, true).get('parentNode'), "Y.get('body', null, true).get('parentNode')");
Assert.isNull(node.get('parentNode'), "node.get('parentNode')");
Assert.isNull(node.get('offsetParent'), "node.get('offsetParent')");
Assert.isNull(node.get('previousSibling'), "node.get('previousSibling')");
Assert.isNull(node.get('previousSibling'), "node.get('previousSibling')");
Assert.isTrue(node.get('firstChild').compareTo(element.firstChild), "node.firstChild() (is textNode)");
Assert.isTrue(node.get('lastChild').compareTo(element.lastChild), "node.lastChild()");
},
test_selector: function() {
var id = 'test-prop',
element = byId(id),
node = Y.get('#' + id),
parent = Y.Node.get(element.parentNode),
nodes = Y.all('#test-nodes *');
// Selector methods
Assert.isNull(Y.Node.get(document.body).query("#fake-id"), 'body.query("#fake-id")');
Assert.isTrue(Y.Node.get(node).test('#' + id), 'node.test( "#id")');
Assert.isNull(parent.query("#fake-id"), 'parent.query("#fake-id")');
Assert.areEqual(id, parent.query('#' + id).get('id'), 'parent.query("#id")');
Assert.areEqual(id, parent.query('#' + id).get('id'), 'parent.query("#id")');
Assert.isNull(parent.query('#text-xy'), 'parent.query("test-xy")');
Assert.areEqual(id, parent.queryAll('#' + id).item(0).get('id'), 'parent.queryAll(node, "#id")');
Assert.areEqual(id, parent.queryAll('#' + id).item(0).get('id'), 'parent.queryAll(node, "#id")');
},
test_window: function() {
var win = Y.get(window);
Assert.areEqual(window, Y.Node.getDOMNode(win), 'Y.get(window)');
Assert.areEqual(document, Y.Node.getDOMNode(win.get('document')), 'win.get(document)');
//Assert.areEqual(window, Y.Node.getDOMNode(Y.get('document').get('defaultView')), 'win.get(document)');
},
test_windowSize: function() {
Assert.isNotNull(Y.get('body').get('winHeight'), 'body.get("winHeight")');
},
test_scroll: function() {
Y.get('#test-scroll').set('scrollTop', 100);
Y.get('#test-scroll').set('scrollLeft', 200);
Assert.areEqual(100, byId('test-scroll').scrollTop, 'test-scroll.set("scrollTop", 100)');
Assert.areEqual(200, byId('test-scroll').scrollLeft, 'test-scroll.set("scrollLeft", 200)');
document.body.style.height = '5000px';
document.body.style.width = '5000px';
Y.get(window).set('scrollTop', 100);
Y.get(window).set('scrollLeft', 200);
Assert.areEqual(100, Y.DOM.docScrollY(window), 'window.set("scrollTop", 100)');
Assert.areEqual(200, Y.DOM.docScrollX(window), 'window.set("scrollLeft", 200)');
Y.get(document).set('scrollTop', 200);
Y.get(document).set('scrollLeft', 100);
Assert.areEqual(200, Y.DOM.docScrollY(document), 'document.set("scrollTop", 200)');
Assert.areEqual(100, Y.DOM.docScrollX(document), 'document.set("scrollLeft", 100)');
document.body.style.height = '';
document.body.style.width = '';
window.scrollTo(0, 0);
},
test_aria: function() {
Y.get('body').set('role', 'menu');
Assert.isTrue(document.body.getAttribute('role') === 'menu', "Y.get('body').set('role', 'menu')")
Y.get('body').set('aria-checked', true);
Assert.isTrue(document.body.getAttribute('aria-checked') === 'true', "Y.get('body').set('aria-checked', true)")
},
}));
suite.add( new tool.TestCase({
name: 'Document Node',
test_props: function() {
var mask = document.createElement('div');
mask.className = 'mask';
document.body.appendChild(mask);
var doc = Y.Node.get('document');
mask.style.height = doc.get('docHeight') + 'px';
mask.style.width = doc.get('docWidth') + 'px';
Y.DOM.setStyle(mask, 'opacity', 0.4);
Assert.areEqual(document.documentElement.scrollLeft, doc.get('docScrollX'), 'doc.get("docScrollX")');
Assert.areEqual(document.documentElement.scrollTop, doc.get('docScrollY'), 'doc.get("docScrollY")');
Assert.areEqual('DIV', Y.Node.get('#test-prop').get('nodeName'), 'query("test-prop")');
Assert.areEqual('test-xy', doc.query('#test-xy').get('id'), 'doc.query("#test-xy")');
Assert.isNull(doc.query('fake-id'), 'doc.query("#fake-id")');
Assert.areEqual(document.documentElement.scrollHeight, mask.offsetHeight, 'get("height")');
Assert.areEqual(document.documentElement.scrollWidth, mask.offsetWidth, 'get("width")');
}
}));
suite.add( new tool.TestCase({
name: 'Instance Y.NodeExtras',
test_methods: function() {
var node = byId('test-extras');
var element = Y.Node.get('#test-extras');
}
}));
tool.TestRunner.add(suite);
// allow window scroll event to happen post-onload
Y.on('load', function() {
setTimeout(function() {
tool.TestRunner.run();
}, 1);
}, window);
});
</script>
</body>
</html>