2007-03-26 04:06:50 +02:00
module ( "core" ) ;
test ( "Basic requirements" , function ( ) {
expect ( 7 ) ;
ok ( Array . prototype . push , "Array.push()" ) ;
ok ( Function . prototype . apply , "Function.apply()" ) ;
ok ( document . getElementById , "getElementById" ) ;
ok ( document . getElementsByTagName , "getElementsByTagName" ) ;
ok ( RegExp , "RegExp" ) ;
ok ( jQuery , "jQuery" ) ;
ok ( $ , "$()" ) ;
} ) ;
2007-03-25 20:06:18 +02:00
test ( "$()" , function ( ) {
2007-09-04 06:34:48 +02:00
expect ( 5 ) ;
2007-03-26 04:06:50 +02:00
var main = $ ( "#main" ) ;
isSet ( $ ( "div p" , main ) . get ( ) , q ( "sndp" , "en" , "sap" ) , "Basic selector with jQuery object as context" ) ;
// make sure this is handled
2007-03-25 20:06:18 +02:00
$ ( '<p>\r\n</p>' ) ;
ok ( true , "Check for \\r and \\n in jQuery()" ) ;
2007-03-26 04:06:50 +02:00
2007-07-09 01:19:09 +02:00
/* / / Disabled until we add this functionality in
2007-03-26 04:06:50 +02:00
var pass = true ;
try {
2007-07-09 01:19:09 +02:00
$ ( "<div>Testing</div>" ) . appendTo ( document . getElementById ( "iframe" ) . contentDocument . body ) ;
2007-03-26 04:06:50 +02:00
} catch ( e ) {
pass = false ;
}
2007-07-09 01:19:09 +02:00
ok ( pass , "$('<tag>') needs optional document parameter to ease cross-frame DOM wrangling, see #968" ) ; * /
2007-09-04 06:34:48 +02:00
var code = $ ( "<code/>" ) ;
equals ( code . length , 1 , "Correct number of elements generated for code" ) ;
var img = $ ( "<img/>" ) ;
equals ( img . length , 1 , "Correct number of elements generated for img" ) ;
var div = $ ( "<div/><hr/><code/><b/>" ) ;
equals ( div . length , 4 , "Correct number of elements generated for div hr code b" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
test ( "isFunction" , function ( ) {
expect ( 21 ) ;
// Make sure that false values return false
ok ( ! jQuery . isFunction ( ) , "No Value" ) ;
ok ( ! jQuery . isFunction ( null ) , "null Value" ) ;
ok ( ! jQuery . isFunction ( undefined ) , "undefined Value" ) ;
ok ( ! jQuery . isFunction ( "" ) , "Empty String Value" ) ;
ok ( ! jQuery . isFunction ( 0 ) , "0 Value" ) ;
// Check built-ins
// Safari uses "(Internal Function)"
ok ( jQuery . isFunction ( String ) , "String Function" ) ;
ok ( jQuery . isFunction ( Array ) , "Array Function" ) ;
ok ( jQuery . isFunction ( Object ) , "Object Function" ) ;
ok ( jQuery . isFunction ( Function ) , "Function Function" ) ;
// When stringified, this could be misinterpreted
var mystr = "function" ;
ok ( ! jQuery . isFunction ( mystr ) , "Function String" ) ;
// When stringified, this could be misinterpreted
var myarr = [ "function" ] ;
ok ( ! jQuery . isFunction ( myarr ) , "Function Array" ) ;
// When stringified, this could be misinterpreted
var myfunction = { "function" : "test" } ;
ok ( ! jQuery . isFunction ( myfunction ) , "Function Object" ) ;
// Make sure normal functions still work
var fn = function ( ) { } ;
ok ( jQuery . isFunction ( fn ) , "Normal Function" ) ;
var obj = document . createElement ( "object" ) ;
// Firefox says this is a function
ok ( ! jQuery . isFunction ( obj ) , "Object Element" ) ;
// IE says this is an object
ok ( jQuery . isFunction ( obj . getAttribute ) , "getAttribute Function" ) ;
var nodes = document . body . childNodes ;
// Safari says this is a function
ok ( ! jQuery . isFunction ( nodes ) , "childNodes Property" ) ;
var first = document . body . firstChild ;
// Normal elements are reported ok everywhere
ok ( ! jQuery . isFunction ( first ) , "A normal DOM Element" ) ;
var input = document . createElement ( "input" ) ;
input . type = "text" ;
document . body . appendChild ( input ) ;
// IE says this is an object
ok ( jQuery . isFunction ( input . focus ) , "A default function property" ) ;
document . body . removeChild ( input ) ;
var a = document . createElement ( "a" ) ;
a . href = "some-function" ;
document . body . appendChild ( a ) ;
// This serializes with the word 'function' in it
ok ( ! jQuery . isFunction ( a ) , "Anchor Element" ) ;
document . body . removeChild ( a ) ;
// Recursive function calls have lengths and array-like properties
function callme ( callback ) {
function fn ( response ) {
callback ( response ) ;
}
ok ( jQuery . isFunction ( fn ) , "Recursive Function Call" ) ;
fn ( { some : "data" } ) ;
} ;
callme ( function ( ) {
callme ( function ( ) { } ) ;
} ) ;
} ) ;
2007-10-01 22:15:20 +02:00
var foo = false ;
2007-08-20 01:37:26 +02:00
test ( "$('html')" , function ( ) {
2007-10-01 22:15:20 +02:00
expect ( 4 ) ;
2007-08-20 01:37:26 +02:00
reset ( ) ;
2007-10-01 22:15:20 +02:00
foo = false ;
var s = $ ( "<script>var foo='test';</script>" ) [ 0 ] ;
ok ( s , "Creating a script" ) ;
ok ( ! foo , "Make sure the script wasn't executed prematurely" ) ;
$ ( "body" ) . append ( s ) ;
ok ( foo , "Executing a scripts contents in the right context" ) ;
2007-08-20 01:37:26 +02:00
reset ( ) ;
ok ( $ ( "<link rel='stylesheet'/>" ) [ 0 ] , "Creating a link" ) ;
reset ( ) ;
} ) ;
2007-03-25 20:06:18 +02:00
test ( "length" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 1 ) ;
2007-07-29 21:07:21 +02:00
ok ( $ ( "p" ) . length == 6 , "Get Number of Elements Found" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
2007-03-25 20:06:18 +02:00
test ( "size()" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 1 ) ;
2007-07-29 21:07:21 +02:00
ok ( $ ( "p" ) . size ( ) == 6 , "Get Number of Elements Found" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
2007-03-25 20:06:18 +02:00
test ( "get()" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 1 ) ;
2007-07-29 21:07:21 +02:00
isSet ( $ ( "p" ) . get ( ) , q ( "firstp" , "ap" , "sndp" , "en" , "sap" , "first" ) , "Get All Elements" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
2007-03-25 20:06:18 +02:00
test ( "get(Number)" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 1 ) ;
2007-07-29 21:07:21 +02:00
ok ( $ ( "p" ) . get ( 0 ) == document . getElementById ( "firstp" ) , "Get A Single Element" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
2007-03-25 20:06:18 +02:00
test ( "add(String|Element|Array)" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 7 ) ;
isSet ( $ ( "#sndp" ) . add ( "#en" ) . add ( "#sap" ) . get ( ) , q ( "sndp" , "en" , "sap" ) , "Check elements from document" ) ;
isSet ( $ ( "#sndp" ) . add ( $ ( "#en" ) [ 0 ] ) . add ( $ ( "#sap" ) ) . get ( ) , q ( "sndp" , "en" , "sap" ) , "Check elements from document" ) ;
2007-07-30 01:10:00 +02:00
ok ( $ ( [ ] ) . add ( $ ( "#form" ) [ 0 ] . elements ) . length >= 13 , "Check elements from array" ) ;
2007-03-26 04:06:50 +02:00
var x = $ ( [ ] ) . add ( $ ( "<p id='x1'>xxx</p>" ) ) . add ( $ ( "<p id='x2'>xxx</p>" ) ) ;
ok ( x [ 0 ] . id == "x1" , "Check on-the-fly element1" ) ;
ok ( x [ 1 ] . id == "x2" , "Check on-the-fly element2" ) ;
var x = $ ( [ ] ) . add ( "<p id='x1'>xxx</p>" ) . add ( "<p id='x2'>xxx</p>" ) ;
ok ( x [ 0 ] . id == "x1" , "Check on-the-fly element1" ) ;
ok ( x [ 1 ] . id == "x2" , "Check on-the-fly element2" ) ;
} ) ;
test ( "each(Function)" , function ( ) {
expect ( 1 ) ;
var div = $ ( "div" ) ;
div . each ( function ( ) { this . foo = 'zoo' ; } ) ;
var pass = true ;
for ( var i = 0 ; i < div . size ( ) ; i ++ ) {
if ( div . get ( i ) . foo != "zoo" ) pass = false ;
}
ok ( pass , "Execute a function, Relative" ) ;
} ) ;
test ( "index(Object)" , function ( ) {
expect ( 8 ) ;
ok ( $ ( [ window , document ] ) . index ( window ) == 0 , "Check for index of elements" ) ;
ok ( $ ( [ window , document ] ) . index ( document ) == 1 , "Check for index of elements" ) ;
var inputElements = $ ( '#radio1,#radio2,#check1,#check2' ) ;
ok ( inputElements . index ( document . getElementById ( 'radio1' ) ) == 0 , "Check for index of elements" ) ;
ok ( inputElements . index ( document . getElementById ( 'radio2' ) ) == 1 , "Check for index of elements" ) ;
ok ( inputElements . index ( document . getElementById ( 'check1' ) ) == 2 , "Check for index of elements" ) ;
ok ( inputElements . index ( document . getElementById ( 'check2' ) ) == 3 , "Check for index of elements" ) ;
ok ( inputElements . index ( window ) == - 1 , "Check for not found index" ) ;
ok ( inputElements . index ( document ) == - 1 , "Check for not found index" ) ;
} ) ;
test ( "attr(String)" , function ( ) {
expect ( 13 ) ;
ok ( $ ( '#text1' ) . attr ( 'value' ) == "Test" , 'Check for value attribute' ) ;
ok ( $ ( '#text1' ) . attr ( 'type' ) == "text" , 'Check for type attribute' ) ;
ok ( $ ( '#radio1' ) . attr ( 'type' ) == "radio" , 'Check for type attribute' ) ;
ok ( $ ( '#check1' ) . attr ( 'type' ) == "checkbox" , 'Check for type attribute' ) ;
ok ( $ ( '#simon1' ) . attr ( 'rel' ) == "bookmark" , 'Check for rel attribute' ) ;
ok ( $ ( '#google' ) . attr ( 'title' ) == "Google!" , 'Check for title attribute' ) ;
ok ( $ ( '#mark' ) . attr ( 'hreflang' ) == "en" , 'Check for hreflang attribute' ) ;
ok ( $ ( '#en' ) . attr ( 'lang' ) == "en" , 'Check for lang attribute' ) ;
ok ( $ ( '#simon' ) . attr ( 'class' ) == "blog link" , 'Check for class attribute' ) ;
ok ( $ ( '#name' ) . attr ( 'name' ) == "name" , 'Check for name attribute' ) ;
ok ( $ ( '#text1' ) . attr ( 'name' ) == "action" , 'Check for name attribute' ) ;
ok ( $ ( '#form' ) . attr ( 'action' ) . indexOf ( "formaction" ) >= 0 , 'Check for action attribute' ) ;
$ ( '<a id="tAnchor5"></a>' ) . attr ( 'href' , '#5' ) . appendTo ( '#main' ) ; // using innerHTML in IE causes href attribute to be serialized to the full path
ok ( $ ( '#tAnchor5' ) . attr ( 'href' ) == "#5" , 'Check for non-absolute href (an anchor)' ) ;
} ) ;
2007-09-23 17:58:49 +02:00
if ( ! isLocal ) {
test ( "attr(String) in XML Files" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
$ . get ( "data/dashboard.xml" , function ( xml ) {
ok ( $ ( "locations" , xml ) . attr ( "class" ) == "foo" , "Check class attribute in XML document" ) ;
ok ( $ ( "location" , xml ) . attr ( "for" ) == "bar" , "Check for attribute in XML document" ) ;
start ( ) ;
} ) ;
} ) ;
}
2007-03-26 04:06:50 +02:00
test ( "attr(String, Function)" , function ( ) {
expect ( 2 ) ;
ok ( $ ( '#text1' ) . attr ( 'value' , function ( ) { return this . id } ) [ 0 ] . value == "text1" , "Set value from id" ) ;
ok ( $ ( '#text1' ) . attr ( 'title' , function ( i ) { return i } ) . attr ( 'title' ) == "0" , "Set value with an index" ) ;
} ) ;
test ( "attr(Hash)" , function ( ) {
expect ( 1 ) ;
var pass = true ;
$ ( "div" ) . attr ( { foo : 'baz' , zoo : 'ping' } ) . each ( function ( ) {
if ( this . getAttribute ( 'foo' ) != "baz" && this . getAttribute ( 'zoo' ) != "ping" ) pass = false ;
} ) ;
ok ( pass , "Set Multiple Attributes" ) ;
} ) ;
test ( "attr(String, Object)" , function ( ) {
2007-09-04 06:17:14 +02:00
expect ( 12 ) ;
2007-03-26 04:06:50 +02:00
var div = $ ( "div" ) ;
div . attr ( "foo" , "bar" ) ;
var pass = true ;
for ( var i = 0 ; i < div . size ( ) ; i ++ ) {
if ( div . get ( i ) . getAttribute ( 'foo' ) != "bar" ) pass = false ;
}
ok ( pass , "Set Attribute" ) ;
ok ( $ ( "#foo" ) . attr ( { "width" : null } ) , "Try to set an attribute to nothing" ) ;
$ ( "#name" ) . attr ( 'name' , 'something' ) ;
ok ( $ ( "#name" ) . attr ( 'name' ) == 'something' , 'Set name attribute' ) ;
$ ( "#check2" ) . attr ( 'checked' , true ) ;
ok ( document . getElementById ( 'check2' ) . checked == true , 'Set checked attribute' ) ;
$ ( "#check2" ) . attr ( 'checked' , false ) ;
ok ( document . getElementById ( 'check2' ) . checked == false , 'Set checked attribute' ) ;
$ ( "#text1" ) . attr ( 'readonly' , true ) ;
ok ( document . getElementById ( 'text1' ) . readOnly == true , 'Set readonly attribute' ) ;
$ ( "#text1" ) . attr ( 'readonly' , false ) ;
ok ( document . getElementById ( 'text1' ) . readOnly == false , 'Set readonly attribute' ) ;
2007-05-31 18:49:49 +02:00
$ ( "#name" ) . attr ( 'maxlength' , '5' ) ;
ok ( document . getElementById ( 'name' ) . maxLength == '5' , 'Set maxlength attribute' ) ;
2007-09-04 06:17:14 +02:00
reset ( ) ;
var type = $ ( "#check2" ) . attr ( 'type' ) ;
var thrown = false ;
try {
$ ( "#check2" ) . attr ( 'type' , 'hidden' ) ;
} catch ( e ) {
thrown = true ;
}
ok ( thrown , "Exception thrown when trying to change type property" ) ;
equals ( type , $ ( "#check2" ) . attr ( 'type' ) , "Verify that you can't change the type of an input element" ) ;
var check = document . createElement ( "input" ) ;
var thrown = true ;
try {
$ ( check ) . attr ( 'type' , 'checkbox' ) ;
} catch ( e ) {
thrown = false ;
}
ok ( thrown , "Exception thrown when trying to change type property" ) ;
equals ( "checkbox" , $ ( check ) . attr ( 'type' ) , "Verify that you can change the type of an input element that isn't in the DOM" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
2007-09-23 17:58:49 +02:00
if ( ! isLocal ) {
test ( "attr(String, Object) - Loaded via XML document" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
$ . get ( 'data/dashboard.xml' , function ( xml ) {
var titles = [ ] ;
$ ( 'tab' , xml ) . each ( function ( ) {
titles . push ( $ ( this ) . attr ( 'title' ) ) ;
} ) ;
ok ( titles [ 0 ] == 'Location' , 'attr() in XML context: Check first title' ) ;
ok ( titles [ 1 ] == 'Users' , 'attr() in XML context: Check second title' ) ;
start ( ) ;
} ) ;
} ) ;
}
2007-03-26 04:06:50 +02:00
test ( "css(String|Hash)" , function ( ) {
expect ( 19 ) ;
ok ( $ ( '#main' ) . css ( "display" ) == 'none' , 'Check for css property "display"' ) ;
ok ( $ ( '#foo' ) . is ( ':visible' ) , 'Modifying CSS display: Assert element is visible' ) ;
$ ( '#foo' ) . css ( { display : 'none' } ) ;
ok ( ! $ ( '#foo' ) . is ( ':visible' ) , 'Modified CSS display: Assert element is hidden' ) ;
$ ( '#foo' ) . css ( { display : 'block' } ) ;
ok ( $ ( '#foo' ) . is ( ':visible' ) , 'Modified CSS display: Assert element is visible' ) ;
$ ( '#floatTest' ) . css ( { styleFloat : 'right' } ) ;
ok ( $ ( '#floatTest' ) . css ( 'styleFloat' ) == 'right' , 'Modified CSS float using "styleFloat": Assert float is right' ) ;
$ ( '#floatTest' ) . css ( { cssFloat : 'left' } ) ;
ok ( $ ( '#floatTest' ) . css ( 'cssFloat' ) == 'left' , 'Modified CSS float using "cssFloat": Assert float is left' ) ;
$ ( '#floatTest' ) . css ( { 'float' : 'right' } ) ;
ok ( $ ( '#floatTest' ) . css ( 'float' ) == 'right' , 'Modified CSS float using "float": Assert float is right' ) ;
$ ( '#floatTest' ) . css ( { 'font-size' : '30px' } ) ;
ok ( $ ( '#floatTest' ) . css ( 'font-size' ) == '30px' , 'Modified CSS font-size: Assert font-size is 30px' ) ;
$ . each ( "0,0.25,0.5,0.75,1" . split ( ',' ) , function ( i , n ) {
$ ( '#foo' ) . css ( { opacity : n } ) ;
ok ( $ ( '#foo' ) . css ( 'opacity' ) == parseFloat ( n ) , "Assert opacity is " + parseFloat ( n ) + " as a String" ) ;
$ ( '#foo' ) . css ( { opacity : parseFloat ( n ) } ) ;
ok ( $ ( '#foo' ) . css ( 'opacity' ) == parseFloat ( n ) , "Assert opacity is " + parseFloat ( n ) + " as a Number" ) ;
} ) ;
$ ( '#foo' ) . css ( { opacity : '' } ) ;
ok ( $ ( '#foo' ) . css ( 'opacity' ) == '1' , "Assert opacity is 1 when set to an empty String" ) ;
} ) ;
test ( "css(String, Object)" , function ( ) {
expect ( 18 ) ;
ok ( $ ( '#foo' ) . is ( ':visible' ) , 'Modifying CSS display: Assert element is visible' ) ;
$ ( '#foo' ) . css ( 'display' , 'none' ) ;
ok ( ! $ ( '#foo' ) . is ( ':visible' ) , 'Modified CSS display: Assert element is hidden' ) ;
$ ( '#foo' ) . css ( 'display' , 'block' ) ;
ok ( $ ( '#foo' ) . is ( ':visible' ) , 'Modified CSS display: Assert element is visible' ) ;
$ ( '#floatTest' ) . css ( 'styleFloat' , 'left' ) ;
ok ( $ ( '#floatTest' ) . css ( 'styleFloat' ) == 'left' , 'Modified CSS float using "styleFloat": Assert float is left' ) ;
$ ( '#floatTest' ) . css ( 'cssFloat' , 'right' ) ;
ok ( $ ( '#floatTest' ) . css ( 'cssFloat' ) == 'right' , 'Modified CSS float using "cssFloat": Assert float is right' ) ;
$ ( '#floatTest' ) . css ( 'float' , 'left' ) ;
ok ( $ ( '#floatTest' ) . css ( 'float' ) == 'left' , 'Modified CSS float using "float": Assert float is left' ) ;
$ ( '#floatTest' ) . css ( 'font-size' , '20px' ) ;
ok ( $ ( '#floatTest' ) . css ( 'font-size' ) == '20px' , 'Modified CSS font-size: Assert font-size is 20px' ) ;
$ . each ( "0,0.25,0.5,0.75,1" . split ( ',' ) , function ( i , n ) {
$ ( '#foo' ) . css ( 'opacity' , n ) ;
ok ( $ ( '#foo' ) . css ( 'opacity' ) == parseFloat ( n ) , "Assert opacity is " + parseFloat ( n ) + " as a String" ) ;
$ ( '#foo' ) . css ( 'opacity' , parseFloat ( n ) ) ;
ok ( $ ( '#foo' ) . css ( 'opacity' ) == parseFloat ( n ) , "Assert opacity is " + parseFloat ( n ) + " as a Number" ) ;
} ) ;
$ ( '#foo' ) . css ( 'opacity' , '' ) ;
ok ( $ ( '#foo' ) . css ( 'opacity' ) == '1' , "Assert opacity is 1 when set to an empty String" ) ;
} ) ;
2007-03-25 20:06:18 +02:00
test ( "text()" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 1 ) ;
var expected = "This link has class=\"blog\": Simon Willison's Weblog" ;
ok ( $ ( '#sap' ) . text ( ) == expected , 'Check for merged text of more then one element.' ) ;
} ) ;
test ( "wrap(String|Element)" , function ( ) {
2007-07-09 01:52:14 +02:00
expect ( 6 ) ;
2007-03-26 04:06:50 +02:00
var defaultText = 'Try them out:'
var result = $ ( '#first' ) . wrap ( '<div class="red"><span></span></div>' ) . text ( ) ;
ok ( defaultText == result , 'Check for wrapping of on-the-fly html' ) ;
ok ( $ ( '#first' ) . parent ( ) . parent ( ) . is ( '.red' ) , 'Check if wrapper has class "red"' ) ;
reset ( ) ;
var defaultText = 'Try them out:'
var result = $ ( '#first' ) . wrap ( document . getElementById ( 'empty' ) ) . parent ( ) ;
ok ( result . is ( 'ol' ) , 'Check for element wrapping' ) ;
2007-03-25 20:06:18 +02:00
ok ( result . text ( ) == defaultText , 'Check for element wrapping' ) ;
2007-03-26 04:06:50 +02:00
reset ( ) ;
$ ( '#check1' ) . click ( function ( ) {
var checkbox = this ;
ok ( checkbox . checked , "Checkbox's state is erased after wrap() action, see #769" ) ;
$ ( checkbox ) . wrap ( '<div id="c1" style="display:none;"></div>' ) ;
ok ( checkbox . checked , "Checkbox's state is erased after wrap() action, see #769" ) ;
} ) . click ( ) ;
} ) ;
2007-08-31 07:33:43 +02:00
test ( "wrapAll(String|Element)" , function ( ) {
expect ( 8 ) ;
var prev = $ ( "#first" ) [ 0 ] . previousSibling ;
var p = $ ( "#first" ) [ 0 ] . parentNode ;
var result = $ ( '#first,#firstp' ) . wrapAll ( '<div class="red"><div id="tmp"></div></div>' ) ;
equals ( result . parent ( ) . length , 1 , 'Check for wrapping of on-the-fly html' ) ;
ok ( $ ( '#first' ) . parent ( ) . parent ( ) . is ( '.red' ) , 'Check if wrapper has class "red"' ) ;
ok ( $ ( '#firstp' ) . parent ( ) . parent ( ) . is ( '.red' ) , 'Check if wrapper has class "red"' ) ;
equals ( $ ( "#first" ) . parent ( ) . parent ( ) [ 0 ] . previousSibling , prev , "Correct Previous Sibling" ) ;
equals ( $ ( "#first" ) . parent ( ) . parent ( ) [ 0 ] . parentNode , p , "Correct Parent" ) ;
reset ( ) ;
var prev = $ ( "#first" ) [ 0 ] . previousSibling ;
var p = $ ( "#first" ) [ 0 ] . parentNode ;
var result = $ ( '#first,#firstp' ) . wrapAll ( document . getElementById ( 'empty' ) ) ;
equals ( $ ( "#first" ) . parent ( ) [ 0 ] , $ ( "#firstp" ) . parent ( ) [ 0 ] , "Same Parent" ) ;
equals ( $ ( "#first" ) . parent ( ) [ 0 ] . previousSibling , prev , "Correct Previous Sibling" ) ;
equals ( $ ( "#first" ) . parent ( ) [ 0 ] . parentNode , p , "Correct Parent" ) ;
} ) ;
test ( "wrapInner(String|Element)" , function ( ) {
expect ( 6 ) ;
var num = $ ( "#first" ) . children ( ) . length ;
var result = $ ( '#first' ) . wrapInner ( '<div class="red"><div id="tmp"></div></div>' ) ;
equals ( $ ( "#first" ) . children ( ) . length , 1 , "Only one child" ) ;
ok ( $ ( "#first" ) . children ( ) . is ( ".red" ) , "Verify Right Element" ) ;
equals ( $ ( "#first" ) . children ( ) . children ( ) . children ( ) . length , num , "Verify Elements Intact" ) ;
reset ( ) ;
var num = $ ( "#first" ) . children ( ) . length ;
var result = $ ( '#first' ) . wrapInner ( document . getElementById ( 'empty' ) ) ;
equals ( $ ( "#first" ) . children ( ) . length , 1 , "Only one child" ) ;
ok ( $ ( "#first" ) . children ( ) . is ( "#empty" ) , "Verify Right Element" ) ;
equals ( $ ( "#first" ) . children ( ) . children ( ) . length , num , "Verify Elements Intact" ) ;
} ) ;
2007-03-26 04:06:50 +02:00
test ( "append(String|Element|Array<Element>|jQuery)" , function ( ) {
2007-08-16 05:35:29 +02:00
expect ( 18 ) ;
2007-03-26 04:06:50 +02:00
var defaultText = 'Try them out:'
var result = $ ( '#first' ) . append ( '<b>buga</b>' ) ;
ok ( result . text ( ) == defaultText + 'buga' , 'Check if text appending works' ) ;
ok ( $ ( '#select3' ) . append ( '<option value="appendTest">Append Test</option>' ) . find ( 'option:last-child' ) . attr ( 'value' ) == 'appendTest' , 'Appending html options to select element' ) ;
reset ( ) ;
2007-04-29 20:39:07 +02:00
var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:" ;
2007-03-26 04:06:50 +02:00
$ ( '#sap' ) . append ( document . getElementById ( 'first' ) ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for appending of element" ) ;
reset ( ) ;
expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo" ;
$ ( '#sap' ) . append ( [ document . getElementById ( 'first' ) , document . getElementById ( 'yahoo' ) ] ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for appending of array of elements" ) ;
reset ( ) ;
expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo" ;
$ ( '#sap' ) . append ( $ ( "#first, #yahoo" ) ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for appending of jQuery object" ) ;
reset ( ) ;
$ ( "#sap" ) . append ( 5 ) ;
ok ( $ ( "#sap" ) [ 0 ] . innerHTML . match ( /5$/ ) , "Check for appending a number" ) ;
reset ( ) ;
$ ( "#sap" ) . append ( " text with spaces " ) ;
ok ( $ ( "#sap" ) [ 0 ] . innerHTML . match ( / text with spaces $/ ) , "Check for appending text with spaces" ) ;
reset ( ) ;
ok ( $ ( "#sap" ) . append ( [ ] ) , "Check for appending an empty array." ) ;
ok ( $ ( "#sap" ) . append ( "" ) , "Check for appending an empty string." ) ;
ok ( $ ( "#sap" ) . append ( document . getElementsByTagName ( "foo" ) ) , "Check for appending an empty nodelist." ) ;
reset ( ) ;
$ ( "#sap" ) . append ( document . getElementById ( 'form' ) ) ;
ok ( $ ( "#sap>form" ) . size ( ) == 1 , "Check for appending a form" ) ; // Bug #910
reset ( ) ;
var pass = true ;
try {
$ ( $ ( "iframe" ) [ 0 ] . contentWindow . document . body ) . append ( "<div>test</div>" ) ;
} catch ( e ) {
pass = false ;
}
ok ( pass , "Test for appending a DOM node to the contents of an IFrame" ) ;
2007-04-25 20:41:49 +02:00
reset ( ) ;
2007-07-08 06:46:21 +02:00
$ ( '<fieldset/>' ) . appendTo ( '#form' ) . append ( '<legend id="legend">test</legend>' ) ;
2007-04-25 20:41:49 +02:00
t ( 'Append legend' , '#legend' , [ 'legend' ] ) ;
2007-04-25 21:48:00 +02:00
reset ( ) ;
$ ( '#select1' ) . append ( '<OPTION>Test</OPTION>' ) ;
ok ( $ ( '#select1 option:last' ) . text ( ) == "Test" , "Appending <OPTION> (all caps)" ) ;
2007-04-30 03:43:52 +02:00
$ ( '#table' ) . append ( '<colgroup></colgroup>' ) ;
ok ( $ ( '#table colgroup' ) . length , "Append colgroup" ) ;
2007-07-08 06:46:21 +02:00
$ ( '#table colgroup' ) . append ( '<col/>' ) ;
2007-04-30 03:43:52 +02:00
ok ( $ ( '#table colgroup col' ) . length , "Append col" ) ;
2007-05-13 07:53:49 +02:00
2007-08-16 05:35:29 +02:00
reset ( ) ;
$ ( '#table' ) . append ( '<caption></caption>' ) ;
ok ( $ ( '#table caption' ) . length , "Append caption" ) ;
2007-05-13 07:53:49 +02:00
reset ( ) ;
$ ( 'form:last' )
. append ( '<select id="appendSelect1"></select>' )
. append ( '<select id="appendSelect2"><option>Test</option></select>' ) ;
t ( "Append Select" , "#appendSelect1, #appendSelect2" , [ "appendSelect1" , "appendSelect2" ] ) ;
2007-03-26 04:06:50 +02:00
} ) ;
test ( "appendTo(String|Element|Array<Element>|jQuery)" , function ( ) {
2007-04-25 21:48:00 +02:00
expect ( 6 ) ;
2007-03-26 04:06:50 +02:00
var defaultText = 'Try them out:'
$ ( '<b>buga</b>' ) . appendTo ( '#first' ) ;
ok ( $ ( "#first" ) . text ( ) == defaultText + 'buga' , 'Check if text appending works' ) ;
ok ( $ ( '<option value="appendTest">Append Test</option>' ) . appendTo ( '#select3' ) . parent ( ) . find ( 'option:last-child' ) . attr ( 'value' ) == 'appendTest' , 'Appending html options to select element' ) ;
reset ( ) ;
2007-04-29 20:39:07 +02:00
var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:" ;
2007-03-26 04:06:50 +02:00
$ ( document . getElementById ( 'first' ) ) . appendTo ( '#sap' ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for appending of element" ) ;
reset ( ) ;
expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo" ;
$ ( [ document . getElementById ( 'first' ) , document . getElementById ( 'yahoo' ) ] ) . appendTo ( '#sap' ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for appending of array of elements" ) ;
reset ( ) ;
expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo" ;
$ ( "#first, #yahoo" ) . appendTo ( '#sap' ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for appending of jQuery object" ) ;
2007-04-25 21:48:00 +02:00
reset ( ) ;
$ ( '#select1' ) . appendTo ( '#foo' ) ;
t ( 'Append select' , '#foo select' , [ 'select1' ] ) ;
2007-03-26 04:06:50 +02:00
} ) ;
test ( "prepend(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 5 ) ;
var defaultText = 'Try them out:'
var result = $ ( '#first' ) . prepend ( '<b>buga</b>' ) ;
ok ( result . text ( ) == 'buga' + defaultText , 'Check if text prepending works' ) ;
ok ( $ ( '#select3' ) . prepend ( '<option value="prependTest">Prepend Test</option>' ) . find ( 'option:first-child' ) . attr ( 'value' ) == 'prependTest' , 'Prepending html options to select element' ) ;
reset ( ) ;
2007-04-29 20:39:07 +02:00
var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog" ;
2007-03-26 04:06:50 +02:00
$ ( '#sap' ) . prepend ( document . getElementById ( 'first' ) ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for prepending of element" ) ;
reset ( ) ;
expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog" ;
$ ( '#sap' ) . prepend ( [ document . getElementById ( 'first' ) , document . getElementById ( 'yahoo' ) ] ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for prepending of array of elements" ) ;
reset ( ) ;
expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog" ;
$ ( '#sap' ) . prepend ( $ ( "#first, #yahoo" ) ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for prepending of jQuery object" ) ;
} ) ;
test ( "prependTo(String|Element|Array<Element>|jQuery)" , function ( ) {
2007-05-13 07:53:49 +02:00
expect ( 6 ) ;
2007-03-26 04:06:50 +02:00
var defaultText = 'Try them out:'
$ ( '<b>buga</b>' ) . prependTo ( '#first' ) ;
ok ( $ ( '#first' ) . text ( ) == 'buga' + defaultText , 'Check if text prepending works' ) ;
ok ( $ ( '<option value="prependTest">Prepend Test</option>' ) . prependTo ( '#select3' ) . parent ( ) . find ( 'option:first-child' ) . attr ( 'value' ) == 'prependTest' , 'Prepending html options to select element' ) ;
reset ( ) ;
2007-04-29 20:39:07 +02:00
var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog" ;
2007-03-26 04:06:50 +02:00
$ ( document . getElementById ( 'first' ) ) . prependTo ( '#sap' ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for prepending of element" ) ;
reset ( ) ;
expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog" ;
$ ( [ document . getElementById ( 'yahoo' ) , document . getElementById ( 'first' ) ] ) . prependTo ( '#sap' ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for prepending of array of elements" ) ;
reset ( ) ;
expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog" ;
$ ( "#yahoo, #first" ) . prependTo ( '#sap' ) ;
ok ( expected == $ ( '#sap' ) . text ( ) , "Check for prepending of jQuery object" ) ;
2007-05-13 07:53:49 +02:00
reset ( ) ;
$ ( '<select id="prependSelect1"></select>' ) . prependTo ( 'form:last' ) ;
$ ( '<select id="prependSelect2"><option>Test</option></select>' ) . prependTo ( 'form:last' ) ;
t ( "Prepend Select" , "#prependSelect1, #prependSelect2" , [ "prependSelect1" , "prependSelect2" ] ) ;
2007-03-26 04:06:50 +02:00
} ) ;
test ( "before(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 4 ) ;
var expected = 'This is a normal link: bugaYahoo' ;
$ ( '#yahoo' ) . before ( '<b>buga</b>' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , 'Insert String before' ) ;
reset ( ) ;
expected = "This is a normal link: Try them out:Yahoo" ;
$ ( '#yahoo' ) . before ( document . getElementById ( 'first' ) ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert element before" ) ;
reset ( ) ;
expected = "This is a normal link: Try them out:diveintomarkYahoo" ;
$ ( '#yahoo' ) . before ( [ document . getElementById ( 'first' ) , document . getElementById ( 'mark' ) ] ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert array of elements before" ) ;
reset ( ) ;
expected = "This is a normal link: Try them out:diveintomarkYahoo" ;
$ ( '#yahoo' ) . before ( $ ( "#first, #mark" ) ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert jQuery before" ) ;
} ) ;
test ( "insertBefore(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 4 ) ;
var expected = 'This is a normal link: bugaYahoo' ;
$ ( '<b>buga</b>' ) . insertBefore ( '#yahoo' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , 'Insert String before' ) ;
reset ( ) ;
expected = "This is a normal link: Try them out:Yahoo" ;
$ ( document . getElementById ( 'first' ) ) . insertBefore ( '#yahoo' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert element before" ) ;
reset ( ) ;
expected = "This is a normal link: Try them out:diveintomarkYahoo" ;
$ ( [ document . getElementById ( 'first' ) , document . getElementById ( 'mark' ) ] ) . insertBefore ( '#yahoo' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert array of elements before" ) ;
reset ( ) ;
expected = "This is a normal link: Try them out:diveintomarkYahoo" ;
$ ( "#first, #mark" ) . insertBefore ( '#yahoo' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert jQuery before" ) ;
} ) ;
test ( "after(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 4 ) ;
var expected = 'This is a normal link: Yahoobuga' ;
$ ( '#yahoo' ) . after ( '<b>buga</b>' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , 'Insert String after' ) ;
reset ( ) ;
expected = "This is a normal link: YahooTry them out:" ;
$ ( '#yahoo' ) . after ( document . getElementById ( 'first' ) ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert element after" ) ;
reset ( ) ;
expected = "This is a normal link: YahooTry them out:diveintomark" ;
$ ( '#yahoo' ) . after ( [ document . getElementById ( 'first' ) , document . getElementById ( 'mark' ) ] ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert array of elements after" ) ;
reset ( ) ;
expected = "This is a normal link: YahooTry them out:diveintomark" ;
$ ( '#yahoo' ) . after ( $ ( "#first, #mark" ) ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert jQuery after" ) ;
} ) ;
test ( "insertAfter(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 4 ) ;
var expected = 'This is a normal link: Yahoobuga' ;
$ ( '<b>buga</b>' ) . insertAfter ( '#yahoo' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , 'Insert String after' ) ;
reset ( ) ;
expected = "This is a normal link: YahooTry them out:" ;
$ ( document . getElementById ( 'first' ) ) . insertAfter ( '#yahoo' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert element after" ) ;
reset ( ) ;
expected = "This is a normal link: YahooTry them out:diveintomark" ;
$ ( [ document . getElementById ( 'mark' ) , document . getElementById ( 'first' ) ] ) . insertAfter ( '#yahoo' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert array of elements after" ) ;
reset ( ) ;
expected = "This is a normal link: YahooTry them out:diveintomark" ;
$ ( "#mark, #first" ) . insertAfter ( '#yahoo' ) ;
ok ( expected == $ ( '#en' ) . text ( ) , "Insert jQuery after" ) ;
} ) ;
2007-08-25 07:12:20 +02:00
test ( "replaceWith(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 10 ) ;
$ ( '#yahoo' ) . replaceWith ( '<b id="replace">buga</b>' ) ;
ok ( $ ( "#replace" ) [ 0 ] , 'Replace element with string' ) ;
ok ( ! $ ( "#yahoo" ) [ 0 ] , 'Verify that original element is gone, after string' ) ;
reset ( ) ;
$ ( '#yahoo' ) . replaceWith ( document . getElementById ( 'first' ) ) ;
ok ( $ ( "#first" ) [ 0 ] , 'Replace element with element' ) ;
ok ( ! $ ( "#yahoo" ) [ 0 ] , 'Verify that original element is gone, after element' ) ;
reset ( ) ;
$ ( '#yahoo' ) . replaceWith ( [ document . getElementById ( 'first' ) , document . getElementById ( 'mark' ) ] ) ;
ok ( $ ( "#first" ) [ 0 ] , 'Replace element with array of elements' ) ;
ok ( $ ( "#mark" ) [ 0 ] , 'Replace element with array of elements' ) ;
ok ( ! $ ( "#yahoo" ) [ 0 ] , 'Verify that original element is gone, after array of elements' ) ;
reset ( ) ;
$ ( '#yahoo' ) . replaceWith ( $ ( "#first, #mark" ) ) ;
ok ( $ ( "#first" ) [ 0 ] , 'Replace element with set of elements' ) ;
ok ( $ ( "#mark" ) [ 0 ] , 'Replace element with set of elements' ) ;
ok ( ! $ ( "#yahoo" ) [ 0 ] , 'Verify that original element is gone, after set of elements' ) ;
} ) ;
test ( "replaceAll(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 10 ) ;
$ ( '<b id="replace">buga</b>' ) . replaceAll ( "#yahoo" ) ;
ok ( $ ( "#replace" ) [ 0 ] , 'Replace element with string' ) ;
ok ( ! $ ( "#yahoo" ) [ 0 ] , 'Verify that original element is gone, after string' ) ;
reset ( ) ;
$ ( document . getElementById ( 'first' ) ) . replaceAll ( "#yahoo" ) ;
ok ( $ ( "#first" ) [ 0 ] , 'Replace element with element' ) ;
ok ( ! $ ( "#yahoo" ) [ 0 ] , 'Verify that original element is gone, after element' ) ;
reset ( ) ;
$ ( [ document . getElementById ( 'first' ) , document . getElementById ( 'mark' ) ] ) . replaceAll ( "#yahoo" ) ;
ok ( $ ( "#first" ) [ 0 ] , 'Replace element with array of elements' ) ;
ok ( $ ( "#mark" ) [ 0 ] , 'Replace element with array of elements' ) ;
ok ( ! $ ( "#yahoo" ) [ 0 ] , 'Verify that original element is gone, after array of elements' ) ;
reset ( ) ;
$ ( "#first, #mark" ) . replaceAll ( "#yahoo" ) ;
ok ( $ ( "#first" ) [ 0 ] , 'Replace element with set of elements' ) ;
ok ( $ ( "#mark" ) [ 0 ] , 'Replace element with set of elements' ) ;
ok ( ! $ ( "#yahoo" ) [ 0 ] , 'Verify that original element is gone, after set of elements' ) ;
} ) ;
2007-03-26 04:06:50 +02:00
test ( "end()" , function ( ) {
expect ( 3 ) ;
ok ( 'Yahoo' == $ ( '#yahoo' ) . parent ( ) . end ( ) . text ( ) , 'Check for end' ) ;
ok ( $ ( '#yahoo' ) . end ( ) , 'Check for end with nothing to end' ) ;
var x = $ ( '#yahoo' ) ;
x . parent ( ) ;
ok ( 'Yahoo' == $ ( '#yahoo' ) . text ( ) , 'Check for non-destructive behaviour' ) ;
} ) ;
2007-03-25 20:06:18 +02:00
test ( "find(String)" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 1 ) ;
ok ( 'Yahoo' == $ ( '#foo' ) . find ( '.blogTest' ) . text ( ) , 'Check for find' ) ;
} ) ;
test ( "clone()" , function ( ) {
expect ( 3 ) ;
ok ( 'This is a normal link: Yahoo' == $ ( '#en' ) . text ( ) , 'Assert text for #en' ) ;
var clone = $ ( '#yahoo' ) . clone ( ) ;
ok ( 'Try them out:Yahoo' == $ ( '#first' ) . append ( clone ) . text ( ) , 'Check for clone' ) ;
ok ( 'This is a normal link: Yahoo' == $ ( '#en' ) . text ( ) , 'Reassert text for #en' ) ;
} ) ;
test ( "is(String)" , function ( ) {
expect ( 26 ) ;
ok ( $ ( '#form' ) . is ( 'form' ) , 'Check for element: A form must be a form' ) ;
ok ( ! $ ( '#form' ) . is ( 'div' ) , 'Check for element: A form is not a div' ) ;
ok ( $ ( '#mark' ) . is ( '.blog' ) , 'Check for class: Expected class "blog"' ) ;
ok ( ! $ ( '#mark' ) . is ( '.link' ) , 'Check for class: Did not expect class "link"' ) ;
ok ( $ ( '#simon' ) . is ( '.blog.link' ) , 'Check for multiple classes: Expected classes "blog" and "link"' ) ;
ok ( ! $ ( '#simon' ) . is ( '.blogTest' ) , 'Check for multiple classes: Expected classes "blog" and "link", but not "blogTest"' ) ;
2007-09-04 04:55:38 +02:00
ok ( $ ( '#en' ) . is ( '[lang="en"]' ) , 'Check for attribute: Expected attribute lang to be "en"' ) ;
ok ( ! $ ( '#en' ) . is ( '[lang="de"]' ) , 'Check for attribute: Expected attribute lang to be "en", not "de"' ) ;
ok ( $ ( '#text1' ) . is ( '[type="text"]' ) , 'Check for attribute: Expected attribute type to be "text"' ) ;
ok ( ! $ ( '#text1' ) . is ( '[type="radio"]' ) , 'Check for attribute: Expected attribute type to be "text", not "radio"' ) ;
2007-03-26 04:06:50 +02:00
ok ( $ ( '#text2' ) . is ( ':disabled' ) , 'Check for pseudoclass: Expected to be disabled' ) ;
ok ( ! $ ( '#text1' ) . is ( ':disabled' ) , 'Check for pseudoclass: Expected not disabled' ) ;
ok ( $ ( '#radio2' ) . is ( ':checked' ) , 'Check for pseudoclass: Expected to be checked' ) ;
ok ( ! $ ( '#radio1' ) . is ( ':checked' ) , 'Check for pseudoclass: Expected not checked' ) ;
2007-09-04 04:55:38 +02:00
ok ( $ ( '#foo' ) . is ( ':has(p)' ) , 'Check for child: Expected a child "p" element' ) ;
ok ( ! $ ( '#foo' ) . is ( ':has(ul)' ) , 'Check for child: Did not expect "ul" element' ) ;
ok ( $ ( '#foo' ) . is ( ':has(p):has(a):has(code)' ) , 'Check for childs: Expected "p", "a" and "code" child elements' ) ;
ok ( ! $ ( '#foo' ) . is ( ':has(p):has(a):has(code):has(ol)' ) , 'Check for childs: Expected "p", "a" and "code" child elements, but no "ol"' ) ;
2007-03-26 04:06:50 +02:00
ok ( ! $ ( '#foo' ) . is ( 0 ) , 'Expected false for an invalid expression - 0' ) ;
ok ( ! $ ( '#foo' ) . is ( null ) , 'Expected false for an invalid expression - null' ) ;
ok ( ! $ ( '#foo' ) . is ( '' ) , 'Expected false for an invalid expression - ""' ) ;
ok ( ! $ ( '#foo' ) . is ( undefined ) , 'Expected false for an invalid expression - undefined' ) ;
// test is() with comma-seperated expressions
2007-09-04 04:55:38 +02:00
ok ( $ ( '#en' ) . is ( '[lang="en"],[lang="de"]' ) , 'Comma-seperated; Check for lang attribute: Expect en or de' ) ;
ok ( $ ( '#en' ) . is ( '[lang="de"],[lang="en"]' ) , 'Comma-seperated; Check for lang attribute: Expect en or de' ) ;
ok ( $ ( '#en' ) . is ( '[lang="en"] , [lang="de"]' ) , 'Comma-seperated; Check for lang attribute: Expect en or de' ) ;
ok ( $ ( '#en' ) . is ( '[lang="de"] , [lang="en"]' ) , 'Comma-seperated; Check for lang attribute: Expect en or de' ) ;
2007-03-26 04:06:50 +02:00
} ) ;
test ( "$.extend(Object, Object)" , function ( ) {
2007-10-18 01:35:57 +02:00
expect ( 11 ) ;
2007-08-20 01:37:26 +02:00
2007-03-26 04:06:50 +02:00
var settings = { xnumber1 : 5 , xnumber2 : 7 , xstring1 : "peter" , xstring2 : "pan" } ,
options = { xnumber2 : 1 , xstring2 : "x" , xxx : "newstring" } ,
optionsCopy = { xnumber2 : 1 , xstring2 : "x" , xxx : "newstring" } ,
2007-08-20 01:37:26 +02:00
merged = { xnumber1 : 5 , xnumber2 : 1 , xstring1 : "peter" , xstring2 : "x" , xxx : "newstring" } ,
deep1 = { foo : { bar : true } } ,
deep1copy = { foo : { bar : true } } ,
2007-10-18 01:35:57 +02:00
deep2 = { foo : { baz : true } , foo2 : document } ,
deep2copy = { foo : { baz : true } , foo2 : document } ,
deepmerged = { foo : { bar : true , baz : true } , foo2 : document } ;
2007-08-20 01:37:26 +02:00
2007-03-26 04:06:50 +02:00
jQuery . extend ( settings , options ) ;
2007-04-29 20:39:07 +02:00
isObj ( settings , merged , "Check if extended: settings must be extended" ) ;
isObj ( options , optionsCopy , "Check if not modified: options must not be modified" ) ;
2007-03-26 04:06:50 +02:00
2007-08-20 01:37:26 +02:00
jQuery . extend ( settings , null , options ) ;
isObj ( settings , merged , "Check if extended: settings must be extended" ) ;
isObj ( options , optionsCopy , "Check if not modified: options must not be modified" ) ;
2007-08-21 06:42:31 +02:00
jQuery . extend ( true , deep1 , deep2 ) ;
2007-08-20 01:37:26 +02:00
isObj ( deep1 . foo , deepmerged . foo , "Check if foo: settings must be extended" ) ;
isObj ( deep2 . foo , deep2copy . foo , "Check if not deep2: options must not be modified" ) ;
2007-10-18 01:35:57 +02:00
equals ( deep1 . foo2 , document , "Make sure that a deep clone was not attempted on the document" ) ;
2007-08-20 01:37:26 +02:00
2007-03-26 04:06:50 +02:00
var defaults = { xnumber1 : 5 , xnumber2 : 7 , xstring1 : "peter" , xstring2 : "pan" } ,
defaultsCopy = { xnumber1 : 5 , xnumber2 : 7 , xstring1 : "peter" , xstring2 : "pan" } ,
options1 = { xnumber2 : 1 , xstring2 : "x" } ,
options1Copy = { xnumber2 : 1 , xstring2 : "x" } ,
options2 = { xstring2 : "xx" , xxx : "newstringx" } ,
options2Copy = { xstring2 : "xx" , xxx : "newstringx" } ,
2007-08-20 01:37:26 +02:00
merged2 = { xnumber1 : 5 , xnumber2 : 1 , xstring1 : "peter" , xstring2 : "xx" , xxx : "newstringx" } ;
2007-03-26 04:06:50 +02:00
var settings = jQuery . extend ( { } , defaults , options1 , options2 ) ;
2007-08-20 01:37:26 +02:00
isObj ( settings , merged2 , "Check if extended: settings must be extended" ) ;
2007-04-29 20:39:07 +02:00
isObj ( defaults , defaultsCopy , "Check if not modified: options1 must not be modified" ) ;
isObj ( options1 , options1Copy , "Check if not modified: options1 must not be modified" ) ;
isObj ( options2 , options2Copy , "Check if not modified: options2 must not be modified" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
test ( "val()" , function ( ) {
expect ( 2 ) ;
ok ( $ ( "#text1" ) . val ( ) == "Test" , "Check for value of input element" ) ;
ok ( ! $ ( "#text1" ) . val ( ) == "" , "Check for value of input element" ) ;
} ) ;
test ( "val(String)" , function ( ) {
2007-10-12 14:51:07 +02:00
expect ( 3 ) ;
2007-03-26 04:06:50 +02:00
document . getElementById ( 'text1' ) . value = "bla" ;
ok ( $ ( "#text1" ) . val ( ) == "bla" , "Check for modified value of input element" ) ;
$ ( "#text1" ) . val ( 'test' ) ;
ok ( document . getElementById ( 'text1' ) . value == "test" , "Check for modified (via val(String)) value of input element" ) ;
2007-10-12 14:51:07 +02:00
$ ( "#select1" ) . val ( "3" ) ;
ok ( $ ( "#select1" ) . val ( ) == "3" , "Check for modified (via val(String)) value of select element" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
2007-10-18 00:42:12 +02:00
var scriptorder = 0 ;
2007-03-26 04:06:50 +02:00
test ( "html(String)" , function ( ) {
2007-10-18 00:42:12 +02:00
expect ( 9 ) ;
2007-03-26 04:06:50 +02:00
var div = $ ( "div" ) ;
div . html ( "<b>test</b>" ) ;
var pass = true ;
for ( var i = 0 ; i < div . size ( ) ; i ++ ) {
if ( div . get ( i ) . childNodes . length == 0 ) pass = false ;
}
2007-03-25 20:06:18 +02:00
ok ( pass , "Set HTML" ) ;
2007-06-26 22:45:06 +02:00
2007-09-15 04:16:29 +02:00
stop ( ) ;
$ ( "#main" ) . html ( '<script type="text/javascript">ok( true, "$().html().evalScripts() Evals Scripts Twice in Firefox, see #975" );</script>' ) ;
$ ( "#main" ) . html ( 'foo <form><script type="text/javascript">ok( true, "$().html().evalScripts() Evals Scripts Twice in Firefox, see #975" );</script></form>' ) ;
2007-10-18 00:42:12 +02:00
$ ( "#main" ) . html ( "<script>ok(scriptorder++ == 0, 'Script is executed in order');ok($('#scriptorder').length == 0,'Execute before html')<\/script><span id='scriptorder'><script>ok(scriptorder++ == 1, 'Script is executed in order');ok($('#scriptorder').length == 1,'Execute after html')<\/script></span><script>ok(scriptorder++ == 2, 'Script is executed in order');ok($('#scriptorder').length == 1,'Execute after html')<\/script>" ) ;
2007-09-15 04:16:29 +02:00
setTimeout ( start , 100 ) ;
2007-03-26 04:06:50 +02:00
} ) ;
test ( "filter()" , function ( ) {
expect ( 4 ) ;
2007-09-05 19:06:05 +02:00
isSet ( $ ( "#form input" ) . filter ( ":checked" ) . get ( ) , q ( "radio2" , "check1" ) , "filter(String)" ) ;
2007-03-26 04:06:50 +02:00
isSet ( $ ( "p" ) . filter ( "#ap, #sndp" ) . get ( ) , q ( "ap" , "sndp" ) , "filter('String, String')" ) ;
isSet ( $ ( "p" ) . filter ( "#ap,#sndp" ) . get ( ) , q ( "ap" , "sndp" ) , "filter('String,String')" ) ;
isSet ( $ ( "p" ) . filter ( function ( ) { return ! $ ( "a" , this ) . length } ) . get ( ) , q ( "sndp" , "first" ) , "filter(Function)" ) ;
} ) ;
test ( "not()" , function ( ) {
expect ( 3 ) ;
ok ( $ ( "#main > p#ap > a" ) . not ( "#google" ) . length == 2 , "not('selector')" ) ;
isSet ( $ ( "p" ) . not ( "#ap, #sndp, .result" ) . get ( ) , q ( "firstp" , "en" , "sap" , "first" ) , "not('selector, selector')" ) ;
isSet ( $ ( "p" ) . not ( $ ( "#ap, #sndp, .result" ) ) . get ( ) , q ( "firstp" , "en" , "sap" , "first" ) , "not(jQuery)" ) ;
} ) ;
2007-09-04 06:44:54 +02:00
test ( "andSelf()" , function ( ) {
expect ( 4 ) ;
isSet ( $ ( "#en" ) . siblings ( ) . andSelf ( ) . get ( ) , q ( "sndp" , "sap" , "en" ) , "Check for siblings and self" ) ;
isSet ( $ ( "#foo" ) . children ( ) . andSelf ( ) . get ( ) , q ( "sndp" , "en" , "sap" , "foo" ) , "Check for children and self" ) ;
isSet ( $ ( "#en, #sndp" ) . parent ( ) . andSelf ( ) . get ( ) , q ( "foo" , "en" , "sndp" ) , "Check for parent and self" ) ;
isSet ( $ ( "#groups" ) . parents ( "p, div" ) . andSelf ( ) . get ( ) , q ( "ap" , "main" , "groups" ) , "Check for parents and self" ) ;
} ) ;
2007-03-26 04:06:50 +02:00
test ( "siblings([String])" , function ( ) {
2007-08-19 02:07:41 +02:00
expect ( 5 ) ;
2007-03-26 04:06:50 +02:00
isSet ( $ ( "#en" ) . siblings ( ) . get ( ) , q ( "sndp" , "sap" ) , "Check for siblings" ) ;
2007-09-04 04:55:38 +02:00
isSet ( $ ( "#sndp" ) . siblings ( ":has(code)" ) . get ( ) , q ( "sap" ) , "Check for filtered siblings (has code child element)" ) ;
isSet ( $ ( "#sndp" ) . siblings ( ":has(a)" ) . get ( ) , q ( "en" , "sap" ) , "Check for filtered siblings (has anchor child element)" ) ;
2007-09-05 19:06:05 +02:00
isSet ( $ ( "#foo" ) . siblings ( "form, b" ) . get ( ) , q ( "form" , "lengthtest" , "testForm" , "floatTest" ) , "Check for multiple filters" ) ;
2007-08-19 02:07:41 +02:00
isSet ( $ ( "#en, #sndp" ) . siblings ( ) . get ( ) , q ( "sndp" , "sap" , "en" ) , "Check for unique results from siblings" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
test ( "children([String])" , function ( ) {
expect ( 3 ) ;
isSet ( $ ( "#foo" ) . children ( ) . get ( ) , q ( "sndp" , "en" , "sap" ) , "Check for children" ) ;
2007-09-04 04:55:38 +02:00
isSet ( $ ( "#foo" ) . children ( ":has(code)" ) . get ( ) , q ( "sndp" , "sap" ) , "Check for filtered children" ) ;
2007-03-26 04:06:50 +02:00
isSet ( $ ( "#foo" ) . children ( "#en, #sap" ) . get ( ) , q ( "en" , "sap" ) , "Check for multiple filters" ) ;
} ) ;
2007-08-19 02:07:41 +02:00
test ( "parent([String])" , function ( ) {
expect ( 5 ) ;
2007-03-26 04:06:50 +02:00
ok ( $ ( "#groups" ) . parent ( ) [ 0 ] . id == "ap" , "Simple parent check" ) ;
ok ( $ ( "#groups" ) . parent ( "p" ) [ 0 ] . id == "ap" , "Filtered parent check" ) ;
ok ( $ ( "#groups" ) . parent ( "div" ) . length == 0 , "Filtered parent check, no match" ) ;
ok ( $ ( "#groups" ) . parent ( "div, p" ) [ 0 ] . id == "ap" , "Check for multiple filters" ) ;
2007-08-19 02:07:41 +02:00
isSet ( $ ( "#en, #sndp" ) . parent ( ) . get ( ) , q ( "foo" ) , "Check for unique results from parent" ) ;
} ) ;
2007-03-26 04:06:50 +02:00
2007-08-19 02:07:41 +02:00
test ( "parents([String])" , function ( ) {
expect ( 5 ) ;
2007-03-26 04:06:50 +02:00
ok ( $ ( "#groups" ) . parents ( ) [ 0 ] . id == "ap" , "Simple parents check" ) ;
ok ( $ ( "#groups" ) . parents ( "p" ) [ 0 ] . id == "ap" , "Filtered parents check" ) ;
ok ( $ ( "#groups" ) . parents ( "div" ) [ 0 ] . id == "main" , "Filtered parents check2" ) ;
isSet ( $ ( "#groups" ) . parents ( "p, div" ) . get ( ) , q ( "ap" , "main" ) , "Check for multiple filters" ) ;
2007-08-19 02:07:41 +02:00
isSet ( $ ( "#en, #sndp" ) . parents ( ) . get ( ) , q ( "foo" , "main" , "dl" , "body" , "html" ) , "Check for unique results from parents" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
2007-08-19 02:07:41 +02:00
test ( "next([String])" , function ( ) {
expect ( 4 ) ;
2007-03-26 04:06:50 +02:00
ok ( $ ( "#ap" ) . next ( ) [ 0 ] . id == "foo" , "Simple next check" ) ;
ok ( $ ( "#ap" ) . next ( "div" ) [ 0 ] . id == "foo" , "Filtered next check" ) ;
ok ( $ ( "#ap" ) . next ( "p" ) . length == 0 , "Filtered next check, no match" ) ;
ok ( $ ( "#ap" ) . next ( "div, p" ) [ 0 ] . id == "foo" , "Multiple filters" ) ;
2007-08-19 02:07:41 +02:00
} ) ;
2007-03-26 04:06:50 +02:00
2007-08-19 02:07:41 +02:00
test ( "prev([String])" , function ( ) {
expect ( 4 ) ;
2007-03-26 04:06:50 +02:00
ok ( $ ( "#foo" ) . prev ( ) [ 0 ] . id == "ap" , "Simple prev check" ) ;
ok ( $ ( "#foo" ) . prev ( "p" ) [ 0 ] . id == "ap" , "Filtered prev check" ) ;
ok ( $ ( "#foo" ) . prev ( "div" ) . length == 0 , "Filtered prev check, no match" ) ;
ok ( $ ( "#foo" ) . prev ( "p, div" ) [ 0 ] . id == "ap" , "Multiple filters" ) ;
} ) ;
test ( "show()" , function ( ) {
expect ( 1 ) ;
var pass = true , div = $ ( "div" ) ;
div . show ( ) . each ( function ( ) {
if ( this . style . display == "none" ) pass = false ;
} ) ;
ok ( pass , "Show" ) ;
} ) ;
2007-03-25 20:06:18 +02:00
test ( "addClass(String)" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 1 ) ;
var div = $ ( "div" ) ;
div . addClass ( "test" ) ;
var pass = true ;
for ( var i = 0 ; i < div . size ( ) ; i ++ ) {
if ( div . get ( i ) . className . indexOf ( "test" ) == - 1 ) pass = false ;
}
ok ( pass , "Add Class" ) ;
} ) ;
test ( "removeClass(String) - simple" , function ( ) {
2007-05-12 00:29:16 +02:00
expect ( 3 ) ;
2007-03-26 04:06:50 +02:00
var div = $ ( "div" ) . addClass ( "test" ) . removeClass ( "test" ) ,
pass = true ;
for ( var i = 0 ; i < div . size ( ) ; i ++ ) {
if ( div . get ( i ) . className . indexOf ( "test" ) != - 1 ) pass = false ;
}
2007-03-25 20:06:18 +02:00
ok ( pass , "Remove Class" ) ;
reset ( ) ;
2007-03-26 04:06:50 +02:00
var div = $ ( "div" ) . addClass ( "test" ) . addClass ( "foo" ) . addClass ( "bar" ) ;
div . removeClass ( "test" ) . removeClass ( "bar" ) . removeClass ( "foo" ) ;
var pass = true ;
for ( var i = 0 ; i < div . size ( ) ; i ++ ) {
if ( div . get ( i ) . className . match ( /test|bar|foo/ ) ) pass = false ;
}
ok ( pass , "Remove multiple classes" ) ;
2007-05-12 00:29:16 +02:00
reset ( ) ;
var div = $ ( "div:eq(0)" ) . addClass ( "test" ) . removeClass ( "" ) ;
ok ( div . is ( '.test' ) , "Empty string passed to removeClass" ) ;
2007-03-26 04:06:50 +02:00
} ) ;
test ( "toggleClass(String)" , function ( ) {
expect ( 3 ) ;
var e = $ ( "#firstp" ) ;
ok ( ! e . is ( ".test" ) , "Assert class not present" ) ;
e . toggleClass ( "test" ) ;
ok ( e . is ( ".test" ) , "Assert class present" ) ;
e . toggleClass ( "test" ) ;
ok ( ! e . is ( ".test" ) , "Assert class not present" ) ;
} ) ;
2007-03-25 20:06:18 +02:00
test ( "removeAttr(String" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 1 ) ;
ok ( $ ( '#mark' ) . removeAttr ( "class" ) [ 0 ] . className == "" , "remove class" ) ;
} ) ;
test ( "text(String)" , function ( ) {
expect ( 1 ) ;
ok ( $ ( "#foo" ) . text ( "<div><b>Hello</b> cruel world!</div>" ) [ 0 ] . innerHTML == "<div><b>Hello</b> cruel world!</div>" , "Check escaped text" ) ;
} ) ;
test ( "$.each(Object,Function)" , function ( ) {
expect ( 8 ) ;
$ . each ( [ 0 , 1 , 2 ] , function ( i , n ) {
ok ( i == n , "Check array iteration" ) ;
} ) ;
$ . each ( [ 5 , 6 , 7 ] , function ( i , n ) {
ok ( i == n - 5 , "Check array iteration" ) ;
} ) ;
$ . each ( { name : "name" , lang : "lang" } , function ( i , n ) {
ok ( i == n , "Check object iteration" ) ;
} ) ;
} ) ;
test ( "$.prop" , function ( ) {
expect ( 2 ) ;
var handle = function ( ) { return this . id } ;
ok ( $ . prop ( $ ( "#ap" ) [ 0 ] , handle ) == "ap" , "Check with Function argument" ) ;
ok ( $ . prop ( $ ( "#ap" ) [ 0 ] , "value" ) == "value" , "Check with value argument" ) ;
} ) ;
test ( "$.className" , function ( ) {
expect ( 6 ) ;
var x = $ ( "<p>Hi</p>" ) [ 0 ] ;
var c = $ . className ;
c . add ( x , "hi" ) ;
ok ( x . className == "hi" , "Check single added class" ) ;
c . add ( x , "foo bar" ) ;
ok ( x . className == "hi foo bar" , "Check more added classes" ) ;
c . remove ( x ) ;
ok ( x . className == "" , "Remove all classes" ) ;
c . add ( x , "hi foo bar" ) ;
c . remove ( x , "foo" ) ;
ok ( x . className == "hi bar" , "Check removal of one class" ) ;
ok ( c . has ( x , "hi" ) , "Check has1" ) ;
ok ( c . has ( x , "bar" ) , "Check has2" ) ;
} ) ;
2007-03-25 20:06:18 +02:00
test ( "remove()" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 4 ) ;
$ ( "#ap" ) . children ( ) . remove ( ) ;
ok ( $ ( "#ap" ) . text ( ) . length > 10 , "Check text is not removed" ) ;
ok ( $ ( "#ap" ) . children ( ) . length == 0 , "Check remove" ) ;
reset ( ) ;
$ ( "#ap" ) . children ( ) . remove ( "a" ) ;
ok ( $ ( "#ap" ) . text ( ) . length > 10 , "Check text is not removed" ) ;
ok ( $ ( "#ap" ) . children ( ) . length == 1 , "Check filtered remove" ) ;
} ) ;
2007-03-25 20:06:18 +02:00
test ( "empty()" , function ( ) {
2007-03-26 04:06:50 +02:00
expect ( 2 ) ;
ok ( $ ( "#ap" ) . children ( ) . empty ( ) . text ( ) . length == 0 , "Check text is removed" ) ;
ok ( $ ( "#ap" ) . children ( ) . length == 4 , "Check elements are not removed" ) ;
} ) ;
2007-08-20 04:51:57 +02:00
test ( "slice()" , function ( ) {
2007-09-15 05:08:46 +02:00
expect ( 5 ) ;
2007-08-20 04:51:57 +02:00
isSet ( $ ( "#ap a" ) . slice ( 1 , 2 ) , q ( "groups" ) , "slice(1,2)" ) ;
isSet ( $ ( "#ap a" ) . slice ( 1 ) , q ( "groups" , "anchor1" , "mark" ) , "slice(1)" ) ;
isSet ( $ ( "#ap a" ) . slice ( 0 , 3 ) , q ( "google" , "groups" , "anchor1" ) , "slice(0,3)" ) ;
isSet ( $ ( "#ap a" ) . slice ( - 1 ) , q ( "mark" ) , "slice(-1)" ) ;
2007-09-15 05:08:46 +02:00
isSet ( $ ( "#ap a" ) . eq ( 1 ) , q ( "groups" ) , "eq(1)" ) ;
2007-08-20 04:51:57 +02:00
} ) ;
2007-08-31 05:26:03 +02:00
test ( "map()" , function ( ) {
expect ( 2 ) ;
isSet (
$ ( "#ap" ) . map ( function ( ) {
return $ ( this ) . find ( "a" ) . get ( ) ;
} ) ,
q ( "google" , "groups" , "anchor1" , "mark" ) ,
"Array Map"
) ;
isSet (
$ ( "#ap > a" ) . map ( function ( ) {
return this . parentNode ;
} ) ,
q ( "ap" , "ap" , "ap" ) ,
"Single Map"
) ;
} ) ;
2007-08-31 05:38:02 +02:00
test ( "contents()" , function ( ) {
2007-09-04 04:55:38 +02:00
expect ( 2 ) ;
2007-08-31 05:38:02 +02:00
equals ( $ ( "#ap" ) . contents ( ) . length , 9 , "Check element contents" ) ;
ok ( $ ( "#iframe" ) . contents ( ) [ 0 ] , "Check existance of IFrame document" ) ;
2007-09-04 04:55:38 +02:00
// Disabled, randomly fails
//ok( $("#iframe").contents()[0].body, "Check existance of IFrame body" );
2007-08-31 05:38:02 +02:00
} ) ;