selector.html revision 5d829590558aa225fef50b0d3d22e35ff361d431
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<link type="text/css" rel="stylesheet" href="/yui2/build/logger/assets/logger.css">
9982ae2753aea312f8260f66903f5cfb1d202d22Adam Moore<link type="text/css" rel="stylesheet" href="/yui2/build/yuitest/assets/testlogger.css">
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/build/yui/yui.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/build/event-custom/event-custom.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/build/event/event.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/build/oop/oop.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/build/dom/dom-debug.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/build/dom/selector-css3.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/build/base/base-debug.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/build/attribute/attribute-debug.js"></script>
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore<script type="text/javascript" src="/build/node/node-debug.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/yui2/build/yahoo/yahoo-min.js"></script>
9982ae2753aea312f8260f66903f5cfb1d202d22Adam Moore<script type="text/javascript" src="/yui2/build/dom/dom-min.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/yui2/build/event/event.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/yui2/build/logger/logger-min.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore<script type="text/javascript" src="/yui2/build/yuitest/yuitest.js"></script>
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Mooreonload = function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore YUI().use('*', function(Y) {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var logger = new YAHOO.tool.TestLogger(null, {height:'2000px'});
9982ae2753aea312f8260f66903f5cfb1d202d22Adam Moore var suite = new YAHOO.tool.TestSuite("Selector Suite");
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore var Selector = Y.Selector;
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var ArrayAssert = YAHOO.util.ArrayAssert;
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var demo = Y.Dom.get('demo');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore children = Y.Dom.getChildren(demo);
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var demoFirstChild = children[0];
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var demoLastChild = children[children.length - 1];
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var selectorQueryAll = new YAHOO.tool.TestCase({
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore name: 'Query All',
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore testFilter: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var all = Y.Dom.get('test-inputs').getElementsByTagName('input');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([all[0], all[1], all[2]], Selector.filter(all, '[type=checkbox]'), '[type=checkbox]');
838d626f7e69c325fea41507371d80369a69026cAdam Moore ArrayAssert.itemsAreEqual([], Selector.filter(null, '[type=checkbox]'), 'null input');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore //ArrayAssert.itemsAreEqual([document.getElementById('test-inputs')], Selector.filter(['root-test', 'test-inputs'], 'form'), 'form (string inputs)');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore // no longer supporting string input for element
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore //ArrayAssert.itemsAreEqual([document.getElementById('test-inputs')], Selector.filter(['root-test', document.getElementById('test-inputs'), document.createTextNode('foo')], 'form'), 'form (mixed inputs)');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore testTest: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('checkbox-unchecked'), '[type=checkbox], button'), '[type=checkbox], button');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('checkbox-unchecked'), 'button, [type=checkbox]'), 'button, [type=checkbox]');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.get('checkbox-unchecked'), 'foo, button'), 'foo, button');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(null, '#foo'), ';ull input');
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore Assert.isFalse(Selector.test(document.createTextNode('foo'), '#foo'), 'textNode input');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('test-lang-en-us'), '[lang|=en]'), '[lang|=en] (lang="en-us")');
838d626f7e69c325fea41507371d80369a69026cAdam Moore Assert.isTrue(Selector.test(Y.Dom.get('test-lang-en'), '[lang|=en]'), '[lang|=en] (lang="en")');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.get('test-lang-none'), '[lang|=en]'), '[lang|=en] false pos');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.get('checkbox-unchecked'), 'for [type=checkbox]'), 'for [type=checkbox] false pos');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('checkbox-unchecked'), 'form [type=checkbox]'), 'form [type=checkbox]');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.get('checkbox-unchecked'), 'for [type=checkbox]'), 'for [type=checkbox] false pos');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('checkbox-checked'), '[type=checkbox]:checked'), 'type=checkbox:checked');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('radio-checked'), ':checked'), ':checked (radio)');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.get('radio-unchecked'), ':checked'), ':checked (radio) false pos');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.get('checkbox-unchecked'), '[type=checkbox]:checked'), 'type=checkbox:checked false pos');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('checkbox-unchecked'), '[type=checkbox]:not(:checked)'), 'type=checkbox:not(:checked)');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore testRootQuery: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var all = Y.Dom.get('nth-test').getElementsByTagName('li');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(all, $('li', document), 'document');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(all, $('#root-test li'), 'document');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([], $('#root-tes li', Y.DOM.byId('demo')), 'false id document');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore // standard: no element-scoped query
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore //ArrayAssert.itemsAreEqual(document.body.getElementsByTagName('p'), $('body p', document.body), "$('body p', document.body)");
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore /* no longer supporting string input for element
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro ArrayAssert.itemsAreEqual([], $('li', 'nth-tes'), 'id as root false pos');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(all, $('li', Y.Dom.get('nth-test')), 'node as root');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(all, $('#nth-test li', Y.Dom.get('root-test')), 'id selector w/root node ref');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.areEqual(all[0], $('#nth-test li', 'root-test', true), 'id selector w/root string, firstOnly');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore // based on non-standard behavior
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro ArrayAssert.itemsAreEqual([], $('body p', document.body), "$('body p', document.body)");
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([], $('#root-test li', Y.Dom.get('nth-test')), 'id selector w/root false pos');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore testNthLastChild: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var all = Y.Dom.get('nth-test').getElementsByTagName('li');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var odd = Y.Dom.getElementsByClassName('even', 'li', 'nth-test');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro var even = Y.Dom.getElementsByClassName('odd', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var four1 = Y.Dom.getElementsByClassName('last-four-1', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(odd, $('li:nth-last-child(odd)'), 'odd');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(even, $('li:nth-last-child(2n)'), '2n');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(even, $('li:nth-last-child(even)'), 'even');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(even, $('li:nth-last-child(2n+0)'), '2n+0');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(odd, $('li:nth-last-child(2n+1)'), '2n+1');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(four1, $('li:nth-last-child(4n+1)'), '4n+1');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore testNthType: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var all = Y.Dom.get('nth-test').getElementsByTagName('li');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var odd = Y.Dom.getElementsByClassName('odd', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var even = Y.Dom.getElementsByClassName('even', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var three1 = Y.Dom.getElementsByClassName('three-1', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var four1 = Y.Dom.getElementsByClassName('four-1', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var four2 = Y.Dom.getElementsByClassName('four-2', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var four3 = Y.Dom.getElementsByClassName('four-3', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var four4 = Y.Dom.getElementsByClassName('four-4', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(odd, $('li:nth-of-type(odd)'), 'odd');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore testNthChild: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var all = Y.Dom.get('nth-test').getElementsByTagName('li');
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore var odd = Y.Dom.getElementsByClassName('odd', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var even = Y.Dom.getElementsByClassName('even', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var three1 = Y.Dom.getElementsByClassName('three-1', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var four1 = Y.Dom.getElementsByClassName('four-1', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var four2 = Y.Dom.getElementsByClassName('four-2', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var four3 = Y.Dom.getElementsByClassName('four-3', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var four4 = Y.Dom.getElementsByClassName('four-4', 'li', 'nth-test');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(even[1], $('li:nth-child(2)'), '2');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(even[1], $('li:nth-child(0n+2)'), '0n+2');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(three1, $('li:nth-child(3n+1)'), '3n+1');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(all, $('li:nth-child(n+1)'), 'n+1');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore //from http://www.w3.org/TR/css3-selectors/#nth-child-pseudo examples
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(odd, $('li:nth-child(2n+1)'), '2n+1');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(odd, $('li:nth-child(odd)'), 'odd');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(even, $('li:nth-child(2n+0)'), '2n+0');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(even, $('li:nth-child(2n)'), '2n');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(even, $('li:nth-child(even)'), 'even');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(four1, $('li:nth-child(4n+1)'), '4n+1');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(four2, $('li:nth-child(4n+2)'), '4n+2');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(four3, $('li:nth-child(4n+3)'), '4n+3');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(four4, $('li:nth-child(4n+4)'), '4n+4');
838d626f7e69c325fea41507371d80369a69026cAdam Moore ArrayAssert.itemsAreEqual(even[0], $('li:nth-child(0n+1)'), '0n+1');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(even[0], $('li:nth-child(1)'), '1');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(all, $('li:nth-child(1n+0)'), '1n+0');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(all, $('li:nth-child(n+0)'), 'n+0');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore testQuery: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(document.getElementsByTagName('p'), $('p, p'), 'p, p');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.areEqual(document.getElementsByTagName('p')[0], $('p', null, true), 'p (firstOnly)');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([], $('.Foo'), '.Foo');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([document.getElementById('root-test')], $('#root-test'), 'id only');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([], $('#demo.bar p'), '#demo.bar p');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(Y.Dom.get('demo').getElementsByTagName('p'), $('#demo.foo p'), '#demo.foo p');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(Y.Dom.get('demo').getElementsByTagName('p'), $('.foo p'), '.foo p');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(Y.Dom.get('demo').getElementsByTagName('p'), $('#demo p'), '#demo p');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual($('p > em'), [Y.Dom.getFirstChild('demo-first-child')], 'p > em');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(Y.Dom.getElementsByClassName('para'), $('[class~=para]'), '[class~=para]');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(Y.Dom.getElementsByClassName('para'), $('[class~="para"]'), '[class~="para"]');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(document.body.getElementsByTagName('p'), $('body div p'), 'body div p');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([], $('#demo .madeup'), '#demo .madeup');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(Y.Dom.getElementsByClassName('para', 'p'), $('div .para'), 'div .para');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(Y.Dom.getElementsByClassName('first', null, Y.DOM.byId(demo)), $('#demo .first'), '#demo .first');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(document.getElementsByTagName('div'), $('div'), 'div');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual(document.body.getElementsByTagName('div'), $('body div'), 'body div');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([demoFirstChild, Y.DOM.next(demoFirstChild)], $('#demo > p:not(.last)'), '#demo > p:not(.last)');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([Y.Dom.get('class-bar')], $('.Bar'), '.Bar');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore //ArrayAssert.itemsAreEqual([], $(null), 'null input');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ArrayAssert.itemsAreEqual([], $('#fake-id-not-in-doc'), 'id false positive');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Y.Dom.addClass($('li'), 'first-child');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.areEqual(document.getElementById('label-checkbox-unchecked'), $('label[for=checkbox-unchecked]', null, true), 'for attribute');
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore ArrayAssert.itemsAreEqual($('.not-button', Y.DOM.byId('test-inputs')), $('input:not([type=button])', Y.DOM.byId('test-inputs')), 'input[type=radio], input[type=checkbox] = input:not([type=button])');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore //ArrayAssert.itemsAreEqual(Y.Dom.get('demo2').getElementsByTagName('div'), $('div:contains(child of demo2)', Y.DOM.byId('demo2')), 'div:contains:(child of demo2) ');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore //Assert.areEqual(document.getElementById('contains-special'), $(':contains(contains "\' & ])'), 'contains "\' & ]');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.areEqual(Y.DOM.byId('test-select'), $('#test-select', null, true), "($('#test-select'), null, true)");
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.areEqual(document.getElementsByTagName('link')[0], $('[rel^=style]', null, true), "($('[rel^=style]), null, true)");
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore Assert.areEqual(Y.DOM.byId('test-rel-div'), $('div[rel^=foo2]', null, true), "($('[rel^=foo2]), null, true)");
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore Assert.areEqual(Y.DOM.byId('test-rel-div'), $("div[rel^='foo2']", null, true), "($('[rel^=\'foo2\']), null, true)");
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore Assert.areEqual(Y.DOM.byId('foo-bar'), $("input[name='foo.bar']", null, true), "input[name='foo.bar'], null, true)");
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var simpleTest = new YAHOO.tool.TestCase({
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore name: 'Simple Node Test',
838d626f7e69c325fea41507371d80369a69026cAdam Moore testPseudo: function() {
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore Assert.isTrue(Selector.test(Y.Dom.getLastChild('demo'), ':last-child'), 'last-child');
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore Assert.isTrue(Selector.test(Y.Dom.getFirstChild('demo'), 'p:first-child'), 'first-child tag');
838d626f7e69c325fea41507371d80369a69026cAdam Moore Assert.isTrue(Selector.test(Y.Dom.getFirstChild('demo'), ':first-child'), 'first-child');
838d626f7e69c325fea41507371d80369a69026cAdam Moore Assert.isFalse(Selector.test(Y.Dom.getFirstChild('demo'), ':first-child.last'), 'first-child class false pos');
637be785ab98741335d5cd6634fddc5f6ecdb41bAdam Moore Assert.isTrue(Selector.test(Y.Dom.getFirstChild('demo'), ':first-child.first'), 'first-child class');
838d626f7e69c325fea41507371d80369a69026cAdam Moore Assert.isFalse(Selector.test(Y.Dom.getFirstChild('demo'), ':only-child'), 'only-child');
838d626f7e69c325fea41507371d80369a69026cAdam Moore Assert.isFalse(Selector.test(Y.Dom.get('demo'), ':not(.foo)'), 'not(.foo)');
637be785ab98741335d5cd6634fddc5f6ecdb41bAdam Moore Assert.isTrue(Selector.test(Y.Dom.get('demo'), ':not(p)'), 'not(p)');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isTrue(Selector.test(demoFirstChild, ':not(.last)'), 'not(.last)');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isTrue(Selector.test(Y.Dom.getFirstChild('demo'), ':first-of-type'), 'first-of-type');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isTrue(Selector.test(Y.Dom.getLastChild('demo'), ':last-of-type'), 'last-of-type');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isFalse(Selector.test(Y.Dom.getFirstChild('demo'), ':only-of-type'), 'only-of-type false pos');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isFalse(Selector.test(Y.Dom.get('demo2'), ':empty'), 'empty false pos');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isTrue(Selector.test(Y.Dom.get('empty'), ':empty'), 'empty');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro /* non-standard
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isTrue(Selector.test(Y.Dom.get('demo2'), ':contains(demo2)'), 'contains(demo2)');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isFalse(Selector.test(Y.Dom.get('demo2'), ':not(:contains(demo2))'), ':not(:contains(demo2))');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isTrue(Selector.test(Y.Dom.get('demo2'), ':not(:contains(demo1))'), ':not(:contains(demo1))');
453cd2583d95cd4eef2ec23a7b564ed63d08e0b1Daniel Barreiro Assert.isTrue(Selector.test(Y.Dom.get('demo2'), ':contains(child of demo2)'), 'contains(child of demo2)');
47f7380215b8e35dd4da7b1dde41e85467f13777Luke Smith testAttr: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('demo'), '[title]'), 'title exists');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.getFirstChild('demo'), '[title]'), 'title exists false pos');
a02dc3badfd643b0ea8a5b6b610c53bb0a363ab0Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('demo'), '[id=demo]'), 'id equality');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.get('demo'), '[id|=me]'), 'id starts with false pos');
9a76bc095233b0cb0be3a913f5913bfc72c38b6cSatyen Desai Assert.isTrue(Selector.test(Y.Dom.get('demo'), '[id~=demo]'), 'id includes');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('demo'), '[title~=demo]'), 'title includes');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('demo'), '[id^=de]'), 'id starts with');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('demo'), '[id$=mo]'), 'id ends with');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.get('demo'), '[id$=m]'), 'id ends with false pos');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('demo'), '[id*=em]'), 'id substr');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse(Selector.test(Y.Dom.get('demo'), '[id*=ex]'), 'id substr false pos');
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue(Selector.test(Y.Dom.get('demo'), '[id=demo][title~=demo]'), 'multiple attributes');
Assert.isTrue(Selector.test(Y.Dom.get('demo'), 'div[id=demo][title~=demo]'), 'tag & multiple attributes');
Assert.isTrue(Selector.test(Y.Dom.get('demo'), 'div[title="this is a demo"]'), 'quoted attribute with spaces');
Assert.isTrue(Selector.test(Y.Dom.get('demo'), "div[title='this is a demo']"), 'single quoted attribute with spaces');
Assert.isFalse(Selector.test(Y.Dom.get('demo'), '[id=demo][title=demo]'), 'multiple attributes false pos');
alert(Y.Dom.get('demo').querySelector('[id!=bar]'));
Assert.isTrue(Selector.test(Y.Dom.get('demo'), 'div[title=this is a demo]'), 'attribute with spaces');
Assert.isTrue(Selector.test(Y.Dom.getFirstChild('demo'), 'p.first.para'), 'tag & multiple class match');
return (child.tagName === 'P' &&
ArrayAssert.itemsAreEqual($('#demo > p'), $('foo, > p', Y.DOM.byId('demo')), '#demo foo, #demo > p');
//ArrayAssert.itemsAreEqual($('#demo-first-child ~ p'), $('~ p', Y.DOM.byId('demo-first-child')), '#demo-first-child ~ div');
//ArrayAssert.itemsAreEqual($('#demo-first-child ~ p'), someChildren, 'someChildren');
suite.add(selectorQueryAll);
suite.add(simpleTest);
YAHOO.tool.TestRunner.add(suite);