Added selector path logging (creates a trail that plugins can use).
[jquery.git] / test / unit / core.js
index 002b130..6c670af 100644 (file)
@@ -50,6 +50,64 @@ test("jQuery()", function() {
        equals( jQuery([1,2,3]).get(1), 2, "Test passing an array to the factory" );\r
 \r
        equals( jQuery(document.body).get(0), jQuery('body').get(0), "Test passing an html node to the factory" );\r
+});
+
+test("selector state", function() {
+       expect(26);
+
+       var test;
+       
+       test = jQuery();
+       equals( test.selector, "", "Empty jQuery Selector" );
+       equals( test.context, document, "Empty jQuery Context" );
+       
+       test = jQuery(document);
+       equals( test.selector, "", "Document Selector" );
+       equals( test.context, document, "Document Context" );
+       
+       test = jQuery(document.body);
+       equals( test.selector, "", "Body Selector" );
+       equals( test.context, document.body, "Body Context" );
+       
+       test = jQuery("#main");
+       equals( test.selector, "#main", "#main Selector" );
+       equals( test.context, document, "#main Context" );
+       
+       test = jQuery("#main", document);
+       equals( test.selector, "#main", "#main Selector" );
+       equals( test.context, document, "#main Context" );
+       
+       test = jQuery("#main", document.body);
+       equals( test.selector, "#main", "#main Selector" );
+       equals( test.context, document.body, "#main Context" );
+       
+       test = jQuery(document.body).find("#main");
+       equals( test.selector, "#main", "#main find Selector" );
+       equals( test.context, document.body, "#main find Context" );
+
+       test = jQuery("#main").filter("div");
+       equals( test.selector, "#main.filter(div)", "#main filter Selector" );
+       equals( test.context, document, "#main filter Context" );
+       
+       test = jQuery("#main").not("div");
+       equals( test.selector, "#main.not(div)", "#main not Selector" );
+       equals( test.context, document, "#main not Context" );
+       
+       test = jQuery("#main").filter("div").not("div");
+       equals( test.selector, "#main.filter(div).not(div)", "#main filter, not Selector" );
+       equals( test.context, document, "#main filter, not Context" );
+       
+       test = jQuery("#main").filter("div").not("div").end();
+       equals( test.selector, "#main.filter(div)", "#main filter, not, end Selector" );
+       equals( test.context, document, "#main filter, not, end Context" );
+       
+       test = jQuery("#main").parent("body");
+       equals( test.selector, "#main.parent(body)", "#main parent Selector" );
+       equals( test.context, document, "#main parent Context" );
+       
+       test = jQuery("#main").eq(0);
+       equals( test.selector, "#main.slice(0,1)", "#main eq Selector" );
+       equals( test.context, document, "#main eq Context" );
 });\r
 \r
 test("browser", function() {\r
@@ -1361,25 +1419,24 @@ test("addClass(String)", function() {
 \r
 test("removeClass(String) - simple", function() {\r
        expect(4);\r
-       var div = jQuery("div").addClass("test").removeClass("test"),\r
-               pass = true;\r
-       for ( var i = 0; i < div.size(); i++ ) {\r
-               if ( div.get(i).className.indexOf("test") != -1 ) pass = false;\r
-       }\r
-       ok( pass, "Remove Class" );\r
+       \r
+       var $divs = jQuery('div');\r
+       \r
+       $divs.addClass("test").removeClass("test");\r
+               \r
+       ok( !$divs.is('.test'), "Remove Class" );\r
 \r
        reset();\r
-       var div = jQuery("div").addClass("test").addClass("foo").addClass("bar");\r
-       div.removeClass("test").removeClass("bar").removeClass("foo");\r
-       var pass = true;\r
-       for ( var i = 0; i < div.size(); i++ ) {\r
-        if ( div.get(i).className.match(/test|bar|foo/) ) pass = false;\r
-       }\r
-       ok( pass, "Remove multiple classes" );\r
+       \r
+       $divs.addClass("test").addClass("foo").addClass("bar");\r
+       $divs.removeClass("test").removeClass("bar").removeClass("foo");\r
+       \r
+       ok( !$divs.is('.test,.bar,.foo'), "Remove multiple classes" );\r
 \r
        reset();\r
-       var div = jQuery("div:eq(0)").addClass("test").removeClass("");\r
-       ok( div.is('.test'), "Empty string passed to removeClass" );\r
+       \r
+       $divs.eq(0).addClass("test").removeClass("");\r
+       ok( $divs.eq(0).is('.test'), "Empty string passed to removeClass" );\r
 \r
        // using contents will get regular, text, and comment nodes\r
        var j = jQuery("#nonnodes").contents();\r
@@ -1709,9 +1766,7 @@ test("jQuery.makeArray", function(){
        ok( !!jQuery.makeArray( document.documentElement.childNodes ).slice(0,1)[0].nodeName, "Pass makeArray a childNodes array" );\r
 \r
        // function, is tricky as it has length\r
-       // NOTE: Due to the conflict with Scriptaculous (http://dev.jquery.com/ticket/3248)\r
-       // We remove support for functions since jQuery 1.3\r
-       //equals( jQuery.makeArray( function(){ return 1;} )[0](), 1, "Pass makeArray a function" );\r
+       equals( jQuery.makeArray( function(){ return 1;} )[0](), 1, "Pass makeArray a function" );\r
        \r
        //window, also has length\r
        equals( jQuery.makeArray(window)[0], window, "Pass makeArray the window" );\r