2011-01-09 21:58:47 +00:00
module ( "core" , { teardown : moduleTeardown } ) ;
2008-12-19 05:43:37 +00:00
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 ( $ , "$" ) ;
} ) ;
test ( "jQuery()" , function ( ) {
2011-05-02 17:14:13 +00:00
expect ( 29 ) ;
2008-12-19 05:43:37 +00:00
2009-05-03 15:57:25 +00:00
// Basic constructor's behavior
2009-07-16 07:31:47 +00:00
2009-12-10 04:36:07 +00:00
equals ( jQuery ( ) . length , 0 , "jQuery() === jQuery([])" ) ;
2009-05-03 15:57:25 +00:00
equals ( jQuery ( undefined ) . length , 0 , "jQuery(undefined) === jQuery([])" ) ;
equals ( jQuery ( null ) . length , 0 , "jQuery(null) === jQuery([])" ) ;
equals ( jQuery ( "" ) . length , 0 , "jQuery('') === jQuery([])" ) ;
2011-01-01 22:13:04 +00:00
equals ( jQuery ( "#" ) . length , 0 , "jQuery('#') === jQuery([])" ) ;
2009-07-16 07:31:47 +00:00
2011-01-16 16:41:39 +00:00
var obj = jQuery ( "div" ) ;
2009-07-17 17:33:44 +00:00
equals ( jQuery ( obj ) . selector , "div" , "jQuery(jQueryObj) == jQueryObj" ) ;
2009-05-03 15:57:25 +00:00
// can actually yield more than one, when iframes are included, the window is an array as well
2010-01-28 22:17:51 +00:00
equals ( jQuery ( window ) . length , 1 , "Correct number of elements generated for jQuery(window)" ) ;
2009-07-16 07:31:47 +00:00
2011-04-17 06:43:57 +00:00
var main = jQuery ( "#qunit-fixture" ) ;
2009-09-29 19:49:43 +00:00
same ( jQuery ( "div p" , main ) . get ( ) , q ( "sndp" , "en" , "sap" ) , "Basic selector with jQuery object as context" ) ;
2008-12-19 05:43:37 +00:00
/ *
// disabled since this test was doing nothing. i tried to fix it but i'm not sure
// what the expected behavior should even be. FF returns "\n" for the text node
// make sure this is handled
var crlfContainer = jQuery ( '<p>\r\n</p>' ) ;
var x = crlfContainer . contents ( ) . get ( 0 ) . nodeValue ;
equals ( x , what ? ? ? , "Check for \\r and \\n in jQuery()" ) ;
* /
/* / / Disabled until we add this functionality in
var pass = true ;
try {
jQuery ( "<div>Testing</div>" ) . appendTo ( document . getElementById ( "iframe" ) . contentDocument . body ) ;
} catch ( e ) {
pass = false ;
}
ok ( pass , "jQuery('<tag>') needs optional document parameter to ease cross-frame DOM wrangling, see #968" ) ; * /
var code = jQuery ( "<code/>" ) ;
equals ( code . length , 1 , "Correct number of elements generated for code" ) ;
2009-12-11 01:01:04 +00:00
equals ( code . parent ( ) . length , 0 , "Make sure that the generated HTML has no parent." ) ;
2008-12-19 05:43:37 +00:00
var img = jQuery ( "<img/>" ) ;
equals ( img . length , 1 , "Correct number of elements generated for img" ) ;
2009-12-11 01:01:04 +00:00
equals ( img . parent ( ) . length , 0 , "Make sure that the generated HTML has no parent." ) ;
2008-12-19 05:43:37 +00:00
var div = jQuery ( "<div/><hr/><code/><b/>" ) ;
equals ( div . length , 4 , "Correct number of elements generated for div hr code b" ) ;
2009-12-11 01:01:04 +00:00
equals ( div . parent ( ) . length , 0 , "Make sure that the generated HTML has no parent." ) ;
2008-12-19 05:43:37 +00:00
equals ( jQuery ( [ 1 , 2 , 3 ] ) . get ( 1 ) , 2 , "Test passing an array to the factory" ) ;
2011-04-11 20:33:29 +00:00
equals ( jQuery ( document . body ) . get ( 0 ) , jQuery ( "body" ) . get ( 0 ) , "Test passing an html node to the factory" ) ;
2009-12-18 17:41:53 +00:00
2010-01-13 02:54:06 +00:00
var exec = false ;
2009-12-18 17:41:53 +00:00
var elem = jQuery ( "<div/>" , {
2009-12-18 17:43:35 +00:00
width : 10 ,
css : { paddingLeft : 1 , paddingRight : 1 } ,
2010-01-13 02:54:06 +00:00
click : function ( ) { ok ( exec , "Click executed." ) ; } ,
2009-12-18 17:41:53 +00:00
text : "test" ,
"class" : "test2" ,
id : "test3"
2009-12-18 17:43:35 +00:00
} ) ;
2011-04-11 20:33:29 +00:00
equals ( elem [ 0 ] . style . width , "10px" , "jQuery() quick setter width" ) ;
equals ( elem [ 0 ] . style . paddingLeft , "1px" , "jQuery quick setter css" ) ;
equals ( elem [ 0 ] . style . paddingRight , "1px" , "jQuery quick setter css" ) ;
equals ( elem [ 0 ] . childNodes . length , 1 , "jQuery quick setter text" ) ;
equals ( elem [ 0 ] . firstChild . nodeValue , "test" , "jQuery quick setter text" ) ;
equals ( elem [ 0 ] . className , "test2" , "jQuery() quick setter class" ) ;
equals ( elem [ 0 ] . id , "test3" , "jQuery() quick setter id" ) ;
2010-01-13 02:54:06 +00:00
exec = true ;
elem . click ( ) ;
2011-01-10 00:38:44 +00:00
2011-01-09 21:58:47 +00:00
// manually clean up detached elements
elem . remove ( ) ;
2011-01-17 21:31:43 +00:00
2011-01-10 00:38:44 +00:00
for ( var i = 0 ; i < 3 ; ++ i ) {
elem = jQuery ( "<input type='text' value='TEST' />" ) ;
}
equals ( elem [ 0 ] . defaultValue , "TEST" , "Ensure cached nodes are cloned properly (Bug #6655)" ) ;
2011-01-17 21:31:43 +00:00
// manually clean up detached elements
elem . remove ( ) ;
2011-05-02 17:14:13 +00:00
equals ( jQuery ( " <div/> " ) . length , 1 , "Make sure whitespace is trimmed." ) ;
equals ( jQuery ( " a<div/>b " ) . length , 1 , "Make sure whitespace and other characters are trimmed." ) ;
var long = "" ;
for ( var i = 0 ; i < 128 ; i ++ ) {
long += "12345678" ;
}
equals ( jQuery ( " <div>" + long + "</div> " ) . length , 1 , "Make sure whitespace is trimmed on long strings." ) ;
equals ( jQuery ( " a<div>" + long + "</div>b " ) . length , 1 , "Make sure whitespace and other characters are trimmed on long strings." ) ;
2008-12-19 04:37:10 +00:00
} ) ;
test ( "selector state" , function ( ) {
2009-09-14 18:03:18 +00:00
expect ( 31 ) ;
2008-12-19 04:37:10 +00:00
var test ;
2009-05-02 19:22:55 +00:00
2009-05-03 17:02:56 +00:00
test = jQuery ( undefined ) ;
2008-12-19 04:37:10 +00:00
equals ( test . selector , "" , "Empty jQuery Selector" ) ;
2009-03-31 17:35:20 +00:00
equals ( test . context , undefined , "Empty jQuery Context" ) ;
2009-05-02 19:22:55 +00:00
2008-12-19 04:37:10 +00:00
test = jQuery ( document ) ;
equals ( test . selector , "" , "Document Selector" ) ;
equals ( test . context , document , "Document Context" ) ;
2009-05-02 19:22:55 +00:00
2008-12-19 04:37:10 +00:00
test = jQuery ( document . body ) ;
equals ( test . selector , "" , "Body Selector" ) ;
equals ( test . context , document . body , "Body Context" ) ;
2009-05-02 19:22:55 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( "#qunit-fixture" ) ;
equals ( test . selector , "#qunit-fixture" , "#qunit-fixture Selector" ) ;
equals ( test . context , document , "#qunit-fixture Context" ) ;
2009-01-20 16:00:48 +00:00
test = jQuery ( "#notfoundnono" ) ;
equals ( test . selector , "#notfoundnono" , "#notfoundnono Selector" ) ;
equals ( test . context , document , "#notfoundnono Context" ) ;
2009-05-02 19:22:55 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( "#qunit-fixture" , document ) ;
equals ( test . selector , "#qunit-fixture" , "#qunit-fixture Selector" ) ;
equals ( test . context , document , "#qunit-fixture Context" ) ;
2009-05-02 19:22:55 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( "#qunit-fixture" , document . body ) ;
equals ( test . selector , "#qunit-fixture" , "#qunit-fixture Selector" ) ;
equals ( test . context , document . body , "#qunit-fixture Context" ) ;
2009-01-08 21:41:58 +00:00
// Test cloning
test = jQuery ( test ) ;
2011-04-17 06:43:57 +00:00
equals ( test . selector , "#qunit-fixture" , "#qunit-fixture Selector" ) ;
equals ( test . context , document . body , "#qunit-fixture Context" ) ;
2009-05-02 19:22:55 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( document . body ) . find ( "#qunit-fixture" ) ;
equals ( test . selector , "#qunit-fixture" , "#qunit-fixture find Selector" ) ;
equals ( test . context , document . body , "#qunit-fixture find Context" ) ;
2008-12-19 04:37:10 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( "#qunit-fixture" ) . filter ( "div" ) ;
equals ( test . selector , "#qunit-fixture.filter(div)" , "#qunit-fixture filter Selector" ) ;
equals ( test . context , document , "#qunit-fixture filter Context" ) ;
2009-05-02 19:22:55 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( "#qunit-fixture" ) . not ( "div" ) ;
equals ( test . selector , "#qunit-fixture.not(div)" , "#qunit-fixture not Selector" ) ;
equals ( test . context , document , "#qunit-fixture not Context" ) ;
2009-05-02 19:22:55 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( "#qunit-fixture" ) . filter ( "div" ) . not ( "div" ) ;
equals ( test . selector , "#qunit-fixture.filter(div).not(div)" , "#qunit-fixture filter, not Selector" ) ;
equals ( test . context , document , "#qunit-fixture filter, not Context" ) ;
2009-05-02 19:22:55 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( "#qunit-fixture" ) . filter ( "div" ) . not ( "div" ) . end ( ) ;
equals ( test . selector , "#qunit-fixture.filter(div)" , "#qunit-fixture filter, not, end Selector" ) ;
equals ( test . context , document , "#qunit-fixture filter, not, end Context" ) ;
2009-05-02 19:22:55 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( "#qunit-fixture" ) . parent ( "body" ) ;
equals ( test . selector , "#qunit-fixture.parent(body)" , "#qunit-fixture parent Selector" ) ;
equals ( test . context , document , "#qunit-fixture parent Context" ) ;
2009-05-02 19:22:55 +00:00
2011-04-17 06:43:57 +00:00
test = jQuery ( "#qunit-fixture" ) . eq ( 0 ) ;
equals ( test . selector , "#qunit-fixture.slice(0,1)" , "#qunit-fixture eq Selector" ) ;
equals ( test . context , document , "#qunit-fixture eq Context" ) ;
2011-01-05 21:41:23 +00:00
2009-09-14 18:03:18 +00:00
var d = "<div />" ;
equals (
jQuery ( d ) . appendTo ( jQuery ( d ) ) . selector ,
jQuery ( d ) . appendTo ( d ) . selector ,
"manipulation methods make same selector for jQuery objects"
) ;
2008-12-19 05:43:37 +00:00
} ) ;
2011-04-07 04:47:15 +00:00
test ( "globalEval" , function ( ) {
expect ( 3 ) ;
jQuery . globalEval ( "var globalEvalTest = true;" ) ;
ok ( window . globalEvalTest , "Test variable declarations are global" ) ;
window . globalEvalTest = false ;
jQuery . globalEval ( "globalEvalTest = true;" ) ;
ok ( window . globalEvalTest , "Test variable assignments are global" ) ;
window . globalEvalTest = false ;
jQuery . globalEval ( "this.globalEvalTest = true;" ) ;
ok ( window . globalEvalTest , "Test context (this) is the window object" ) ;
window . globalEvalTest = undefined ;
} ) ;
2010-01-05 22:01:20 +00:00
if ( ! isLocal ) {
2008-12-19 05:43:37 +00:00
test ( "browser" , function ( ) {
2010-01-05 22:01:20 +00:00
stop ( ) ;
jQuery . get ( "data/ua.txt" , function ( data ) {
var uas = data . split ( "\n" ) ;
expect ( ( uas . length - 1 ) * 2 ) ;
jQuery . each ( uas , function ( ) {
var parts = this . split ( "\t" ) ;
if ( parts [ 2 ] ) {
var ua = jQuery . uaMatch ( parts [ 2 ] ) ;
equals ( ua . browser , parts [ 0 ] , "Checking browser for " + parts [ 2 ] ) ;
equals ( ua . version , parts [ 1 ] , "Checking version string for " + parts [ 2 ] ) ;
}
} ) ;
start ( ) ;
} ) ;
2008-12-19 05:43:37 +00:00
} ) ;
2010-01-05 22:01:20 +00:00
}
2008-12-19 05:43:37 +00:00
test ( "noConflict" , function ( ) {
2010-09-08 17:54:33 +00:00
expect ( 7 ) ;
2008-12-19 05:43:37 +00:00
var $$ = jQuery ;
equals ( jQuery , jQuery . noConflict ( ) , "noConflict returned the jQuery object" ) ;
equals ( jQuery , $$ , "Make sure jQuery wasn't touched." ) ;
equals ( $ , original$ , "Make sure $ was reverted." ) ;
jQuery = $ = $$ ;
equals ( jQuery . noConflict ( true ) , $$ , "noConflict returned the jQuery object" ) ;
equals ( jQuery , originaljQuery , "Make sure jQuery was reverted." ) ;
equals ( $ , original$ , "Make sure $ was reverted." ) ;
2011-04-17 06:43:57 +00:00
ok ( $$ ( "#qunit-fixture" ) . html ( "test" ) , "Make sure that jQuery still works." ) ;
2008-12-19 05:43:37 +00:00
jQuery = $$ ;
} ) ;
2009-11-30 18:21:56 +00:00
test ( "trim" , function ( ) {
2010-03-09 14:14:27 +00:00
expect ( 9 ) ;
2009-11-30 18:21:56 +00:00
2010-03-09 14:14:27 +00:00
var nbsp = String . fromCharCode ( 160 ) ;
2009-11-30 18:21:56 +00:00
2010-03-09 14:14:27 +00:00
equals ( jQuery . trim ( "hello " ) , "hello" , "trailing space" ) ;
equals ( jQuery . trim ( " hello" ) , "hello" , "leading space" ) ;
equals ( jQuery . trim ( " hello " ) , "hello" , "space on both sides" ) ;
equals ( jQuery . trim ( " " + nbsp + "hello " + nbsp + " " ) , "hello" , " " ) ;
equals ( jQuery . trim ( ) , "" , "Nothing in." ) ;
equals ( jQuery . trim ( undefined ) , "" , "Undefined" ) ;
equals ( jQuery . trim ( null ) , "" , "Null" ) ;
equals ( jQuery . trim ( 5 ) , "5" , "Number" ) ;
equals ( jQuery . trim ( false ) , "false" , "Boolean" ) ;
2009-11-30 18:21:56 +00:00
} ) ;
2010-08-27 13:10:52 +00:00
test ( "type" , function ( ) {
2010-09-10 01:26:47 +00:00
expect ( 23 ) ;
2010-08-27 13:10:52 +00:00
equals ( jQuery . type ( null ) , "null" , "null" ) ;
equals ( jQuery . type ( undefined ) , "undefined" , "undefined" ) ;
equals ( jQuery . type ( true ) , "boolean" , "Boolean" ) ;
equals ( jQuery . type ( false ) , "boolean" , "Boolean" ) ;
equals ( jQuery . type ( Boolean ( true ) ) , "boolean" , "Boolean" ) ;
equals ( jQuery . type ( 0 ) , "number" , "Number" ) ;
equals ( jQuery . type ( 1 ) , "number" , "Number" ) ;
equals ( jQuery . type ( Number ( 1 ) ) , "number" , "Number" ) ;
equals ( jQuery . type ( "" ) , "string" , "String" ) ;
equals ( jQuery . type ( "a" ) , "string" , "String" ) ;
equals ( jQuery . type ( String ( "a" ) ) , "string" , "String" ) ;
equals ( jQuery . type ( { } ) , "object" , "Object" ) ;
equals ( jQuery . type ( /foo/ ) , "regexp" , "RegExp" ) ;
equals ( jQuery . type ( new RegExp ( "asdf" ) ) , "regexp" , "RegExp" ) ;
equals ( jQuery . type ( [ 1 ] ) , "array" , "Array" ) ;
equals ( jQuery . type ( new Date ( ) ) , "date" , "Date" ) ;
equals ( jQuery . type ( new Function ( "return;" ) ) , "function" , "Function" ) ;
equals ( jQuery . type ( function ( ) { } ) , "function" , "Function" ) ;
2010-08-27 23:14:59 +00:00
equals ( jQuery . type ( window ) , "object" , "Window" ) ;
2010-09-10 01:26:47 +00:00
equals ( jQuery . type ( document ) , "object" , "Document" ) ;
2010-08-27 23:14:59 +00:00
equals ( jQuery . type ( document . body ) , "object" , "Element" ) ;
equals ( jQuery . type ( document . createTextNode ( "foo" ) ) , "object" , "TextNode" ) ;
equals ( jQuery . type ( document . getElementsByTagName ( "*" ) ) , "object" , "NodeList" ) ;
2010-08-27 13:10:52 +00:00
} ) ;
2009-12-06 22:11:51 +00:00
test ( "isPlainObject" , function ( ) {
2011-07-25 21:06:38 +00:00
expect ( 15 ) ;
2009-12-02 19:57:13 +00:00
stop ( ) ;
// The use case that we want to match
2009-12-06 22:11:51 +00:00
ok ( jQuery . isPlainObject ( { } ) , "{}" ) ;
2011-01-05 21:41:23 +00:00
2009-12-18 16:34:20 +00:00
// Not objects shouldn't be matched
ok ( ! jQuery . isPlainObject ( "" ) , "string" ) ;
ok ( ! jQuery . isPlainObject ( 0 ) && ! jQuery . isPlainObject ( 1 ) , "number" ) ;
ok ( ! jQuery . isPlainObject ( true ) && ! jQuery . isPlainObject ( false ) , "boolean" ) ;
ok ( ! jQuery . isPlainObject ( null ) , "null" ) ;
ok ( ! jQuery . isPlainObject ( undefined ) , "undefined" ) ;
2011-01-05 21:41:23 +00:00
2009-12-18 16:34:20 +00:00
// Arrays shouldn't be matched
ok ( ! jQuery . isPlainObject ( [ ] ) , "array" ) ;
2011-01-05 21:41:23 +00:00
2009-12-02 19:57:13 +00:00
// Instantiated objects shouldn't be matched
2009-12-06 22:11:51 +00:00
ok ( ! jQuery . isPlainObject ( new Date ) , "new Date" ) ;
2011-01-05 21:41:23 +00:00
2009-12-02 19:57:13 +00:00
var fn = function ( ) { } ;
2011-01-05 21:41:23 +00:00
2009-12-02 19:57:13 +00:00
// Functions shouldn't be matched
2009-12-06 22:11:51 +00:00
ok ( ! jQuery . isPlainObject ( fn ) , "fn" ) ;
2011-01-05 21:41:23 +00:00
2009-12-02 19:57:13 +00:00
// Again, instantiated objects shouldn't be matched
2009-12-06 22:11:51 +00:00
ok ( ! jQuery . isPlainObject ( new fn ) , "new fn (no methods)" ) ;
2011-01-05 21:41:23 +00:00
2009-12-02 19:57:13 +00:00
// Makes the function a little more realistic
// (and harder to detect, incidentally)
fn . prototype = { someMethod : function ( ) { } } ;
2011-01-05 21:41:23 +00:00
2009-12-02 19:57:13 +00:00
// Again, instantiated objects shouldn't be matched
2009-12-06 22:11:51 +00:00
ok ( ! jQuery . isPlainObject ( new fn ) , "new fn" ) ;
2009-12-02 19:57:13 +00:00
// DOM Element
2009-12-06 22:11:51 +00:00
ok ( ! jQuery . isPlainObject ( document . createElement ( "div" ) ) , "DOM Element" ) ;
2011-01-05 21:41:23 +00:00
2009-12-18 16:34:20 +00:00
// Window
ok ( ! jQuery . isPlainObject ( window ) , "window" ) ;
2009-12-02 19:57:13 +00:00
2011-07-25 21:06:38 +00:00
try {
jQuery . isPlainObject ( window . location ) ;
ok ( true , "Does not throw exceptions on host objects" ) ;
} catch ( e ) {
ok ( false , "Does not throw exceptions on host objects -- FAIL" ) ;
}
2010-08-23 19:38:55 +00:00
try {
var iframe = document . createElement ( "iframe" ) ;
document . body . appendChild ( iframe ) ;
window . iframeDone = function ( otherObject ) {
// Objects from other windows should be matched
ok ( jQuery . isPlainObject ( new otherObject ) , "new otherObject" ) ;
document . body . removeChild ( iframe ) ;
start ( ) ;
} ;
2011-01-05 21:41:23 +00:00
2010-08-23 19:38:55 +00:00
var doc = iframe . contentDocument || iframe . contentWindow . document ;
doc . open ( ) ;
doc . write ( "<body onload='window.parent.iframeDone(Object);'>" ) ;
doc . close ( ) ;
} catch ( e ) {
2009-12-02 19:57:13 +00:00
document . body . removeChild ( iframe ) ;
2010-08-23 19:38:55 +00:00
ok ( true , "new otherObject - iframes not supported" ) ;
2009-12-02 19:57:13 +00:00
start ( ) ;
2010-08-23 19:38:55 +00:00
}
2009-12-02 19:57:13 +00:00
} ) ;
2008-12-19 05:43:37 +00:00
test ( "isFunction" , function ( ) {
expect ( 19 ) ;
// 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(" + String + ")" ) ;
ok ( jQuery . isFunction ( Array ) , "Array Function(" + Array + ")" ) ;
ok ( jQuery . isFunction ( Object ) , "Object Function(" + Object + ")" ) ;
ok ( jQuery . isFunction ( Function ) , "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
// Since 1.3, this isn't supported (#2968)
//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
// Since 1.3, this isn't supported (#2968)
//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 ( ) { } ) ;
} ) ;
} ) ;
2009-07-27 13:02:41 +00:00
test ( "isXMLDoc - HTML" , function ( ) {
expect ( 4 ) ;
ok ( ! jQuery . isXMLDoc ( document ) , "HTML document" ) ;
ok ( ! jQuery . isXMLDoc ( document . documentElement ) , "HTML documentElement" ) ;
ok ( ! jQuery . isXMLDoc ( document . body ) , "HTML Body Element" ) ;
var iframe = document . createElement ( "iframe" ) ;
document . body . appendChild ( iframe ) ;
try {
2009-08-27 19:22:48 +00:00
var body = jQuery ( iframe ) . contents ( ) [ 0 ] ;
2010-08-23 19:38:55 +00:00
try {
ok ( ! jQuery . isXMLDoc ( body ) , "Iframe body element" ) ;
} catch ( e ) {
ok ( false , "Iframe body element exception" ) ;
}
} catch ( e ) {
ok ( true , "Iframe body element - iframe not working correctly" ) ;
2009-07-27 13:02:41 +00:00
}
document . body . removeChild ( iframe ) ;
} ) ;
2011-08-23 12:25:11 +00:00
test ( "XSS via location.hash" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
jQuery . _check9521 = function ( x ) {
ok ( x , "script called from #id-like selector with inline handler" ) ;
jQuery ( "#check9521" ) . remove ( ) ;
delete jQuery . _check9521 ;
start ( ) ;
} ;
try {
// This throws an error because it's processed like an id
jQuery ( '#<img id="check9521" src="no-such-.gif" onerror="jQuery._check9521(false)">' ) . appendTo ( "#qunit-fixture" ) ;
} catch ( err ) {
jQuery . _check9521 ( true ) ;
} ;
} ) ;
2009-07-27 13:02:41 +00:00
if ( ! isLocal ) {
test ( "isXMLDoc - XML" , function ( ) {
expect ( 3 ) ;
stop ( ) ;
2011-04-11 20:33:29 +00:00
jQuery . get ( "data/dashboard.xml" , function ( xml ) {
2009-07-27 13:02:41 +00:00
ok ( jQuery . isXMLDoc ( xml ) , "XML document" ) ;
ok ( jQuery . isXMLDoc ( xml . documentElement ) , "XML documentElement" ) ;
ok ( jQuery . isXMLDoc ( jQuery ( "tab" , xml ) [ 0 ] ) , "XML Tab Element" ) ;
start ( ) ;
} ) ;
} ) ;
}
2010-09-22 20:50:38 +00:00
test ( "isWindow" , function ( ) {
expect ( 12 ) ;
ok ( jQuery . isWindow ( window ) , "window" ) ;
ok ( ! jQuery . isWindow ( ) , "empty" ) ;
ok ( ! jQuery . isWindow ( null ) , "null" ) ;
ok ( ! jQuery . isWindow ( undefined ) , "undefined" ) ;
ok ( ! jQuery . isWindow ( document ) , "document" ) ;
ok ( ! jQuery . isWindow ( document . documentElement ) , "documentElement" ) ;
ok ( ! jQuery . isWindow ( "" ) , "string" ) ;
ok ( ! jQuery . isWindow ( 1 ) , "number" ) ;
ok ( ! jQuery . isWindow ( true ) , "boolean" ) ;
ok ( ! jQuery . isWindow ( { } ) , "object" ) ;
// HMMM
// ok( !jQuery.isWindow({ setInterval: function(){} }), "fake window" );
ok ( ! jQuery . isWindow ( /window/ ) , "regexp" ) ;
ok ( ! jQuery . isWindow ( function ( ) { } ) , "function" ) ;
} ) ;
2008-12-19 05:43:37 +00:00
test ( "jQuery('html')" , function ( ) {
2011-01-19 23:37:31 +00:00
expect ( 18 ) ;
2008-12-19 05:43:37 +00:00
2010-07-28 15:19:01 +00:00
QUnit . reset ( ) ;
2009-01-09 23:49:18 +00:00
jQuery . foo = false ;
var s = jQuery ( "<script>jQuery.foo='test';</script>" ) [ 0 ] ;
2008-12-19 05:43:37 +00:00
ok ( s , "Creating a script" ) ;
2009-01-09 23:49:18 +00:00
ok ( ! jQuery . foo , "Make sure the script wasn't executed prematurely" ) ;
jQuery ( "body" ) . append ( "<script>jQuery.foo='test';</script>" ) ;
ok ( jQuery . foo , "Executing a scripts contents in the right context" ) ;
2008-12-19 05:43:37 +00:00
2009-07-27 20:47:32 +00:00
// Test multi-line HTML
var div = jQuery ( "<div>\r\nsome text\n<p>some p</p>\nmore text\r\n</div>" ) [ 0 ] ;
equals ( div . nodeName . toUpperCase ( ) , "DIV" , "Make sure we're getting a div." ) ;
equals ( div . firstChild . nodeType , 3 , "Text node." ) ;
equals ( div . lastChild . nodeType , 3 , "Text node." ) ;
equals ( div . childNodes [ 1 ] . nodeType , 1 , "Paragraph." ) ;
equals ( div . childNodes [ 1 ] . firstChild . nodeType , 3 , "Paragraph text." ) ;
2010-07-28 15:19:01 +00:00
QUnit . reset ( ) ;
2008-12-19 05:43:37 +00:00
ok ( jQuery ( "<link rel='stylesheet'/>" ) [ 0 ] , "Creating a link" ) ;
2009-01-03 00:51:07 +00:00
ok ( ! jQuery ( "<script/>" ) [ 0 ] . parentNode , "Create a script" ) ;
ok ( jQuery ( "<input/>" ) . attr ( "type" , "hidden" ) , "Create an input and set the type." ) ;
2008-12-19 05:43:37 +00:00
var j = jQuery ( "<span>hi</span> there <!-- mon ami -->" ) ;
ok ( j . length >= 2 , "Check node,textnode,comment creation (some browsers delete comments)" ) ;
ok ( ! jQuery ( "<option>test</option>" ) [ 0 ] . selected , "Make sure that options are auto-selected #2050" ) ;
2009-11-11 18:49:29 +00:00
ok ( jQuery ( "<div></div>" ) [ 0 ] , "Create a div with closing tag." ) ;
ok ( jQuery ( "<table></table>" ) [ 0 ] , "Create a table with closing tag." ) ;
2011-01-19 23:37:31 +00:00
// Test very large html string #7990
var i ;
2011-04-11 20:33:29 +00:00
var li = "<li>very large html string</li>" ;
var html = [ "<ul>" ] ;
2011-01-19 23:37:31 +00:00
for ( i = 0 ; i < 50000 ; i += 1 ) {
html . push ( li ) ;
}
2011-04-11 20:33:29 +00:00
html . push ( "</ul>" ) ;
html = jQuery ( html . join ( "" ) ) [ 0 ] ;
equals ( html . nodeName . toUpperCase ( ) , "UL" ) ;
equals ( html . firstChild . nodeName . toUpperCase ( ) , "LI" ) ;
2011-01-19 23:37:31 +00:00
equals ( html . childNodes . length , 50000 ) ;
2008-12-19 05:43:37 +00:00
} ) ;
test ( "jQuery('html', context)" , function ( ) {
expect ( 1 ) ;
2009-09-07 18:58:01 +00:00
var $div = jQuery ( "<div/>" ) [ 0 ] ;
2008-12-19 05:43:37 +00:00
var $span = jQuery ( "<span/>" , $div ) ;
equals ( $span . length , 1 , "Verify a span created with a div context works, #1763" ) ;
} ) ;
if ( ! isLocal ) {
test ( "jQuery(selector, xml).text(str) - Loaded via XML document" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
2011-04-11 20:33:29 +00:00
jQuery . get ( "data/dashboard.xml" , function ( xml ) {
2008-12-19 05:43:37 +00:00
// tests for #1419 where IE was a problem
2009-01-05 21:04:15 +00:00
var tab = jQuery ( "tab" , xml ) . eq ( 0 ) ;
equals ( tab . text ( ) , "blabla" , "Verify initial text correct" ) ;
tab . text ( "newtext" ) ;
equals ( tab . text ( ) , "newtext" , "Verify new text correct" ) ;
2008-12-19 05:43:37 +00:00
start ( ) ;
} ) ;
} ) ;
}
2009-12-10 17:25:25 +00:00
test ( "end()" , function ( ) {
expect ( 3 ) ;
2011-04-11 20:33:29 +00:00
equals ( "Yahoo" , jQuery ( "#yahoo" ) . parent ( ) . end ( ) . text ( ) , "Check for end" ) ;
ok ( jQuery ( "#yahoo" ) . end ( ) , "Check for end with nothing to end" ) ;
2009-12-10 17:25:25 +00:00
2011-04-11 20:33:29 +00:00
var x = jQuery ( "#yahoo" ) ;
2009-12-10 17:25:25 +00:00
x . parent ( ) ;
2011-04-11 20:33:29 +00:00
equals ( "Yahoo" , jQuery ( "#yahoo" ) . text ( ) , "Check for non-destructive behaviour" ) ;
2009-12-10 17:25:25 +00:00
} ) ;
2008-12-19 05:43:37 +00:00
test ( "length" , function ( ) {
expect ( 1 ) ;
2011-04-17 06:43:57 +00:00
equals ( jQuery ( "#qunit-fixture p" ) . length , 6 , "Get Number of Elements Found" ) ;
2008-12-19 05:43:37 +00:00
} ) ;
test ( "size()" , function ( ) {
expect ( 1 ) ;
2011-04-17 06:43:57 +00:00
equals ( jQuery ( "#qunit-fixture p" ) . size ( ) , 6 , "Get Number of Elements Found" ) ;
2008-12-19 05:43:37 +00:00
} ) ;
test ( "get()" , function ( ) {
expect ( 1 ) ;
2011-04-17 06:43:57 +00:00
same ( jQuery ( "#qunit-fixture p" ) . get ( ) , q ( "firstp" , "ap" , "sndp" , "en" , "sap" , "first" ) , "Get All Elements" ) ;
2008-12-19 05:43:37 +00:00
} ) ;
2009-07-16 07:31:32 +00:00
test ( "toArray()" , function ( ) {
expect ( 1 ) ;
2011-04-17 06:43:57 +00:00
same ( jQuery ( "#qunit-fixture p" ) . toArray ( ) ,
2009-07-16 07:31:32 +00:00
q ( "firstp" , "ap" , "sndp" , "en" , "sap" , "first" ) ,
2011-02-18 17:06:26 +00:00
"Convert jQuery object to an Array" )
} )
2009-07-16 07:31:32 +00:00
2011-05-28 16:00:28 +00:00
test ( "inArray()" , function ( ) {
expect ( 19 ) ;
var selections = {
p : q ( "firstp" , "sap" , "ap" , "first" ) ,
em : q ( "siblingnext" , "siblingfirst" ) ,
div : q ( "qunit-testrunner-toolbar" , "nothiddendiv" , "nothiddendivchild" , "foo" ) ,
a : q ( "mark" , "groups" , "google" , "simon1" ) ,
empty : [ ]
} ,
tests = {
p : { elem : jQuery ( "#ap" ) [ 0 ] , index : 2 } ,
em : { elem : jQuery ( "#siblingfirst" ) [ 0 ] , index : 1 } ,
div : { elem : jQuery ( "#nothiddendiv" ) [ 0 ] , index : 1 } ,
a : { elem : jQuery ( "#simon1" ) [ 0 ] , index : 3 }
} ,
falseTests = {
p : jQuery ( "#liveSpan1" ) [ 0 ] ,
em : jQuery ( "#nothiddendiv" ) [ 0 ] ,
empty : ""
} ;
jQuery . each ( tests , function ( key , obj ) {
equal ( jQuery . inArray ( obj . elem , selections [ key ] ) , obj . index , "elem is in the array of selections of its tag" ) ;
// Third argument (fromIndex)
equal ( ! ! ~ jQuery . inArray ( obj . elem , selections [ key ] , 5 ) , false , "elem is NOT in the array of selections given a starting index greater than its position" ) ;
equal ( ! ! ~ jQuery . inArray ( obj . elem , selections [ key ] , 1 ) , true , "elem is in the array of selections given a starting index less than or equal to its position" ) ;
equal ( ! ! ~ jQuery . inArray ( obj . elem , selections [ key ] , - 3 ) , true , "elem is in the array of selections given a negative index" ) ;
} ) ;
jQuery . each ( falseTests , function ( key , elem ) {
equal ( ! ! ~ jQuery . inArray ( elem , selections [ key ] ) , false , "elem is NOT in the array of selections" ) ;
} ) ;
} ) ;
2008-12-19 05:43:37 +00:00
test ( "get(Number)" , function ( ) {
2010-11-19 11:28:13 +00:00
expect ( 2 ) ;
2011-04-17 06:43:57 +00:00
equals ( jQuery ( "#qunit-fixture p" ) . get ( 0 ) , document . getElementById ( "firstp" ) , "Get A Single Element" ) ;
2010-11-19 11:28:13 +00:00
strictEqual ( jQuery ( "#firstp" ) . get ( 1 ) , undefined , "Try get with index larger elements count" ) ;
2008-12-19 05:43:37 +00:00
} ) ;
2009-07-16 07:31:41 +00:00
test ( "get(-Number)" , function ( ) {
2010-11-19 11:28:13 +00:00
expect ( 2 ) ;
equals ( jQuery ( "p" ) . get ( - 1 ) , document . getElementById ( "first" ) , "Get a single element with negative index" ) ;
strictEqual ( jQuery ( "#firstp" ) . get ( - 2 ) , undefined , "Try get with index negative index larger then elements count" ) ;
2011-02-18 17:06:26 +00:00
} )
2009-07-16 07:31:41 +00:00
2008-12-19 05:43:37 +00:00
test ( "each(Function)" , function ( ) {
expect ( 1 ) ;
var div = jQuery ( "div" ) ;
2011-04-11 20:33:29 +00:00
div . each ( function ( ) { this . foo = "zoo" ; } ) ;
2008-12-19 05:43:37 +00:00
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" ) ;
} ) ;
2009-12-10 17:25:25 +00:00
test ( "slice()" , function ( ) {
expect ( 7 ) ;
var $links = jQuery ( "#ap a" ) ;
2009-07-16 07:32:17 +00:00
2009-12-10 17:25:25 +00:00
same ( $links . slice ( 1 , 2 ) . get ( ) , q ( "groups" ) , "slice(1,2)" ) ;
same ( $links . slice ( 1 ) . get ( ) , q ( "groups" , "anchor1" , "mark" ) , "slice(1)" ) ;
same ( $links . slice ( 0 , 3 ) . get ( ) , q ( "google" , "groups" , "anchor1" ) , "slice(0,3)" ) ;
same ( $links . slice ( - 1 ) . get ( ) , q ( "mark" ) , "slice(-1)" ) ;
same ( $links . eq ( 1 ) . get ( ) , q ( "groups" ) , "eq(1)" ) ;
2011-04-11 20:33:29 +00:00
same ( $links . eq ( "2" ) . get ( ) , q ( "anchor1" ) , "eq('2')" ) ;
2009-12-10 17:25:25 +00:00
same ( $links . eq ( - 1 ) . get ( ) , q ( "mark" ) , "eq(-1)" ) ;
2009-07-16 07:32:17 +00:00
} ) ;
2009-12-10 17:25:25 +00:00
test ( "first()/last()" , function ( ) {
expect ( 4 ) ;
var $links = jQuery ( "#ap a" ) , $none = jQuery ( "asdf" ) ;
same ( $links . first ( ) . get ( ) , q ( "google" ) , "first()" ) ;
same ( $links . last ( ) . get ( ) , q ( "mark" ) , "last()" ) ;
same ( $none . first ( ) . get ( ) , [ ] , "first() none" ) ;
same ( $none . last ( ) . get ( ) , [ ] , "last() none" ) ;
} ) ;
test ( "map()" , function ( ) {
2011-05-02 17:25:53 +00:00
expect ( 8 ) ;
2009-12-10 17:25:25 +00:00
same (
jQuery ( "#ap" ) . map ( function ( ) {
return jQuery ( this ) . find ( "a" ) . get ( ) ;
} ) . get ( ) ,
q ( "google" , "groups" , "anchor1" , "mark" ) ,
"Array Map"
) ;
same (
jQuery ( "#ap > a" ) . map ( function ( ) {
return this . parentNode ;
} ) . get ( ) ,
q ( "ap" , "ap" , "ap" ) ,
"Single Map"
) ;
//for #2616
var keys = jQuery . map ( { a : 1 , b : 2 } , function ( v , k ) {
return k ;
2011-02-27 18:47:35 +00:00
} ) ;
2009-12-10 17:25:25 +00:00
equals ( keys . join ( "" ) , "ab" , "Map the keys from a hash to an array" ) ;
var values = jQuery . map ( { a : 1 , b : 2 } , function ( v , k ) {
return v ;
2011-02-27 18:47:35 +00:00
} ) ;
2009-12-10 17:25:25 +00:00
equals ( values . join ( "" ) , "12" , "Map the values from a hash to an array" ) ;
2011-03-21 19:12:31 +00:00
// object with length prop
var values = jQuery . map ( { a : 1 , b : 2 , length : 3 } , function ( v , k ) {
return v ;
} ) ;
equals ( values . join ( "" ) , "123" , "Map the values from a hash with a length property to an array" ) ;
2009-12-10 17:25:25 +00:00
var scripts = document . getElementsByTagName ( "script" ) ;
var mapped = jQuery . map ( scripts , function ( v , k ) {
return v ;
2011-02-27 18:47:35 +00:00
} ) ;
2009-12-10 17:25:25 +00:00
equals ( mapped . length , scripts . length , "Map an array(-like) to a hash" ) ;
2011-05-02 17:25:53 +00:00
var nonsense = document . getElementsByTagName ( "asdf" ) ;
var mapped = jQuery . map ( nonsense , function ( v , k ) {
return v ;
} ) ;
equals ( mapped . length , nonsense . length , "Map an empty array(-like) to a hash" ) ;
2009-12-10 17:25:25 +00:00
var flat = jQuery . map ( Array ( 4 ) , function ( v , k ) {
return k % 2 ? k : [ k , k , k ] ; //try mixing array and regular returns
} ) ;
equals ( flat . join ( "" ) , "00012223" , "try the new flatten technique(#2616)" ) ;
2008-12-19 05:43:37 +00:00
} ) ;
2008-12-25 19:25:30 +00:00
test ( "jQuery.merge()" , function ( ) {
2009-11-18 02:26:42 +00:00
expect ( 8 ) ;
2009-05-02 19:22:55 +00:00
2008-12-25 19:25:30 +00:00
var parse = jQuery . merge ;
2009-05-02 19:22:55 +00:00
2008-12-25 19:25:30 +00:00
same ( parse ( [ ] , [ ] ) , [ ] , "Empty arrays" ) ;
2009-05-02 19:22:55 +00:00
2008-12-25 19:25:30 +00:00
same ( parse ( [ 1 ] , [ 2 ] ) , [ 1 , 2 ] , "Basic" ) ;
same ( parse ( [ 1 , 2 ] , [ 3 , 4 ] ) , [ 1 , 2 , 3 , 4 ] , "Basic" ) ;
2009-05-02 19:22:55 +00:00
2008-12-25 19:25:30 +00:00
same ( parse ( [ 1 , 2 ] , [ ] ) , [ 1 , 2 ] , "Second empty" ) ;
2009-05-02 19:22:55 +00:00
same ( parse ( [ ] , [ 1 , 2 ] ) , [ 1 , 2 ] , "First empty" ) ;
2008-12-25 19:25:30 +00:00
// Fixed at [5998], #3641
same ( parse ( [ - 2 , - 1 ] , [ 0 , 1 , 2 ] ) , [ - 2 , - 1 , 0 , 1 , 2 ] , "Second array including a zero (falsy)" ) ;
2011-01-05 21:41:23 +00:00
2009-11-18 02:26:42 +00:00
// After fixing #5527
same ( parse ( [ ] , [ null , undefined ] ) , [ null , undefined ] , "Second array including null and undefined values" ) ;
same ( parse ( { length : 0 } , [ 1 , 2 ] ) , { length : 2 , 0 : 1 , 1 : 2 } , "First array like" ) ;
2008-12-25 19:25:30 +00:00
} ) ;
2008-12-19 05:43:37 +00:00
test ( "jQuery.extend(Object, Object)" , function ( ) {
2010-02-04 21:54:53 +00:00
expect ( 28 ) ;
2008-12-19 05:43:37 +00: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" } ,
merged = { xnumber1 : 5 , xnumber2 : 1 , xstring1 : "peter" , xstring2 : "x" , xxx : "newstring" } ,
deep1 = { foo : { bar : true } } ,
deep1copy = { foo : { bar : true } } ,
deep2 = { foo : { baz : true } , foo2 : document } ,
deep2copy = { foo : { baz : true } , foo2 : document } ,
2010-01-04 21:25:14 +00:00
deepmerged = { foo : { bar : true , baz : true } , foo2 : document } ,
arr = [ 1 , 2 , 3 ] ,
nestedarray = { arr : arr } ;
2008-12-19 05:43:37 +00:00
jQuery . extend ( settings , options ) ;
2009-09-29 19:49:43 +00:00
same ( settings , merged , "Check if extended: settings must be extended" ) ;
same ( options , optionsCopy , "Check if not modified: options must not be modified" ) ;
2008-12-19 05:43:37 +00:00
jQuery . extend ( settings , null , options ) ;
2009-09-29 19:49:43 +00:00
same ( settings , merged , "Check if extended: settings must be extended" ) ;
same ( options , optionsCopy , "Check if not modified: options must not be modified" ) ;
2008-12-19 05:43:37 +00:00
jQuery . extend ( true , deep1 , deep2 ) ;
2009-09-29 19:49:43 +00:00
same ( deep1 . foo , deepmerged . foo , "Check if foo: settings must be extended" ) ;
same ( deep2 . foo , deep2copy . foo , "Check if not deep2: options must not be modified" ) ;
2008-12-19 05:43:37 +00:00
equals ( deep1 . foo2 , document , "Make sure that a deep clone was not attempted on the document" ) ;
2010-01-04 21:25:14 +00:00
ok ( jQuery . extend ( true , { } , nestedarray ) . arr !== arr , "Deep extend of object must clone child array" ) ;
2011-01-05 21:41:23 +00:00
2010-02-04 21:54:53 +00:00
// #5991
ok ( jQuery . isArray ( jQuery . extend ( true , { arr : { } } , nestedarray ) . arr ) , "Cloned array heve to be an Array" ) ;
ok ( jQuery . isPlainObject ( jQuery . extend ( true , { arr : arr } , { arr : { } } ) . arr ) , "Cloned object heve to be an plain object" ) ;
2010-01-04 21:25:14 +00:00
2009-07-16 07:31:55 +00:00
var empty = { } ;
var optionsWithLength = { foo : { length : - 1 } } ;
jQuery . extend ( true , empty , optionsWithLength ) ;
2009-09-29 19:49:43 +00:00
same ( empty . foo , optionsWithLength . foo , "The length property must copy correctly" ) ;
2009-07-16 07:31:55 +00:00
2009-07-16 07:32:03 +00:00
empty = { } ;
var optionsWithDate = { foo : { date : new Date } } ;
jQuery . extend ( true , empty , optionsWithDate ) ;
2009-09-29 19:49:43 +00:00
same ( empty . foo , optionsWithDate . foo , "Dates copy correctly" ) ;
2009-07-16 07:32:03 +00:00
var myKlass = function ( ) { } ;
2009-11-12 05:48:45 +00:00
var customObject = new myKlass ( ) ;
2009-11-18 02:26:42 +00:00
var optionsWithCustomObject = { foo : { date : customObject } } ;
2009-11-12 04:50:40 +00:00
empty = { } ;
jQuery . extend ( true , empty , optionsWithCustomObject ) ;
2009-11-12 15:24:19 +00:00
ok ( empty . foo && empty . foo . date === customObject , "Custom objects copy correctly (no methods)" ) ;
2011-01-05 21:41:23 +00:00
2009-11-09 10:55:25 +00:00
// Makes the class a little more realistic
myKlass . prototype = { someMethod : function ( ) { } } ;
2009-07-16 07:32:03 +00:00
empty = { } ;
jQuery . extend ( true , empty , optionsWithCustomObject ) ;
2009-11-12 15:24:19 +00:00
ok ( empty . foo && empty . foo . date === customObject , "Custom objects copy correctly" ) ;
2011-01-05 21:41:23 +00:00
2009-11-12 05:48:45 +00:00
var ret = jQuery . extend ( true , { foo : 4 } , { foo : new Number ( 5 ) } ) ;
ok ( ret . foo == 5 , "Wrapped numbers copy correctly" ) ;
2009-07-16 07:32:03 +00:00
2008-12-19 05:43:37 +00:00
var nullUndef ;
nullUndef = jQuery . extend ( { } , options , { xnumber2 : null } ) ;
ok ( nullUndef . xnumber2 === null , "Check to make sure null values are copied" ) ;
nullUndef = jQuery . extend ( { } , options , { xnumber2 : undefined } ) ;
ok ( nullUndef . xnumber2 === options . xnumber2 , "Check to make sure undefined values are not copied" ) ;
nullUndef = jQuery . extend ( { } , options , { xnumber0 : null } ) ;
ok ( nullUndef . xnumber0 === null , "Check to make sure null values are inserted" ) ;
var target = { } ;
var recursive = { foo : target , bar : 5 } ;
jQuery . extend ( true , target , recursive ) ;
2009-09-29 19:49:43 +00:00
same ( target , { bar : 5 } , "Check to make sure a recursive obj doesn't go never-ending loop by not copying it over" ) ;
2008-12-19 05:43:37 +00:00
var ret = jQuery . extend ( true , { foo : [ ] } , { foo : [ 0 ] } ) ; // 1907
equals ( ret . foo . length , 1 , "Check to make sure a value with coersion 'false' copies over when necessary to fix #1907" ) ;
var ret = jQuery . extend ( true , { foo : "1,2,3" } , { foo : [ 1 , 2 , 3 ] } ) ;
ok ( typeof ret . foo != "string" , "Check to make sure values equal with coersion (but not actually equal) overwrite correctly" ) ;
var ret = jQuery . extend ( true , { foo : "bar" } , { foo : null } ) ;
2011-04-11 20:33:29 +00:00
ok ( typeof ret . foo !== "undefined" , "Make sure a null value doesn't crash with deep extend, for #1908" ) ;
2008-12-19 05:43:37 +00:00
var obj = { foo : null } ;
jQuery . extend ( true , obj , { foo : "notnull" } ) ;
equals ( obj . foo , "notnull" , "Make sure a null value can be overwritten" ) ;
function func ( ) { }
jQuery . extend ( func , { key : "value" } ) ;
equals ( func . key , "value" , "Verify a function can be extended" ) ;
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" } ,
merged2 = { xnumber1 : 5 , xnumber2 : 1 , xstring1 : "peter" , xstring2 : "xx" , xxx : "newstringx" } ;
var settings = jQuery . extend ( { } , defaults , options1 , options2 ) ;
2009-09-29 19:49:43 +00:00
same ( settings , merged2 , "Check if extended: settings must be extended" ) ;
same ( defaults , defaultsCopy , "Check if not modified: options1 must not be modified" ) ;
same ( options1 , options1Copy , "Check if not modified: options1 must not be modified" ) ;
same ( options2 , options2Copy , "Check if not modified: options2 must not be modified" ) ;
2008-12-19 05:43:37 +00:00
} ) ;
test ( "jQuery.each(Object,Function)" , function ( ) {
2011-03-30 17:17:48 +00:00
expect ( 14 ) ;
2008-12-19 05:43:37 +00:00
jQuery . each ( [ 0 , 1 , 2 ] , function ( i , n ) {
equals ( i , n , "Check array iteration" ) ;
} ) ;
jQuery . each ( [ 5 , 6 , 7 ] , function ( i , n ) {
equals ( i , n - 5 , "Check array iteration" ) ;
} ) ;
jQuery . each ( { name : "name" , lang : "lang" } , function ( i , n ) {
equals ( i , n , "Check object iteration" ) ;
} ) ;
2009-03-18 21:15:38 +00:00
var total = 0 ;
jQuery . each ( [ 1 , 2 , 3 ] , function ( i , v ) { total += v ; } ) ;
equals ( total , 6 , "Looping over an array" ) ;
total = 0 ;
jQuery . each ( [ 1 , 2 , 3 ] , function ( i , v ) { total += v ; if ( i == 1 ) return false ; } ) ;
equals ( total , 3 , "Looping over an array, with break" ) ;
total = 0 ;
jQuery . each ( { "a" : 1 , "b" : 2 , "c" : 3 } , function ( i , v ) { total += v ; } ) ;
equals ( total , 6 , "Looping over an object" ) ;
total = 0 ;
jQuery . each ( { "a" : 3 , "b" : 3 , "c" : 3 } , function ( i , v ) { total += v ; return false ; } ) ;
equals ( total , 3 , "Looping over an object, with break" ) ;
2009-07-16 07:31:47 +00:00
2009-06-20 15:51:19 +00:00
var f = function ( ) { } ;
2011-04-11 20:33:29 +00:00
f . foo = "bar" ;
2009-06-20 15:51:19 +00:00
jQuery . each ( f , function ( i ) {
2011-04-11 20:33:29 +00:00
f [ i ] = "baz" ;
2009-06-20 15:51:19 +00:00
} ) ;
equals ( "baz" , f . foo , "Loop over a function" ) ;
2011-07-23 01:26:36 +00:00
2011-03-30 17:17:48 +00:00
var stylesheet _count = 0 ;
jQuery . each ( document . styleSheets , function ( i ) {
stylesheet _count ++ ;
} ) ;
equals ( stylesheet _count , 2 , "should not throw an error in IE while looping over document.styleSheets and return proper amount" ) ;
2008-12-19 05:43:37 +00:00
} ) ;
test ( "jQuery.makeArray" , function ( ) {
2009-12-10 05:43:20 +00:00
expect ( 17 ) ;
2008-12-19 05:43:37 +00:00
2011-04-11 20:33:29 +00:00
equals ( jQuery . makeArray ( jQuery ( "html>*" ) ) [ 0 ] . nodeName . toUpperCase ( ) , "HEAD" , "Pass makeArray a jQuery object" ) ;
2008-12-19 05:43:37 +00:00
equals ( jQuery . makeArray ( document . getElementsByName ( "PWD" ) ) . slice ( 0 , 1 ) [ 0 ] . name , "PWD" , "Pass makeArray a nodelist" ) ;
equals ( ( function ( ) { return jQuery . makeArray ( arguments ) ; } ) ( 1 , 2 ) . join ( "" ) , "12" , "Pass makeArray an arguments array" ) ;
equals ( jQuery . makeArray ( [ 1 , 2 , 3 ] ) . join ( "" ) , "123" , "Pass makeArray a real array" ) ;
equals ( jQuery . makeArray ( ) . length , 0 , "Pass nothing to makeArray and expect an empty array" ) ;
equals ( jQuery . makeArray ( 0 ) [ 0 ] , 0 , "Pass makeArray a number" ) ;
equals ( jQuery . makeArray ( "foo" ) [ 0 ] , "foo" , "Pass makeArray a string" ) ;
equals ( jQuery . makeArray ( true ) [ 0 ] . constructor , Boolean , "Pass makeArray a boolean" ) ;
2009-01-19 23:22:25 +00:00
equals ( jQuery . makeArray ( document . createElement ( "div" ) ) [ 0 ] . nodeName . toUpperCase ( ) , "DIV" , "Pass makeArray a single node" ) ;
2008-12-19 05:43:37 +00:00
equals ( jQuery . makeArray ( { length : 2 , 0 : "a" , 1 : "b" } ) . join ( "" ) , "ab" , "Pass makeArray an array like map (with length)" ) ;
ok ( ! ! jQuery . makeArray ( document . documentElement . childNodes ) . slice ( 0 , 1 ) [ 0 ] . nodeName , "Pass makeArray a childNodes array" ) ;
// function, is tricky as it has length
equals ( jQuery . makeArray ( function ( ) { return 1 ; } ) [ 0 ] ( ) , 1 , "Pass makeArray a function" ) ;
2009-05-02 19:22:55 +00:00
2008-12-19 05:43:37 +00:00
//window, also has length
equals ( jQuery . makeArray ( window ) [ 0 ] , window , "Pass makeArray the window" ) ;
equals ( jQuery . makeArray ( /a/ ) [ 0 ] . constructor , RegExp , "Pass makeArray a regex" ) ;
2011-04-11 20:33:29 +00:00
ok ( jQuery . makeArray ( document . getElementById ( "form" ) ) . length >= 13 , "Pass makeArray a form (treat as elements)" ) ;
2009-12-10 05:43:20 +00:00
// For #5610
2011-04-11 20:33:29 +00:00
same ( jQuery . makeArray ( { length : "0" } ) , [ ] , "Make sure object is coerced properly." ) ;
same ( jQuery . makeArray ( { length : "5" } ) , [ ] , "Make sure object is coerced properly." ) ;
2008-12-19 05:43:37 +00:00
} ) ;
2009-07-16 15:16:44 +00:00
2011-08-17 14:56:21 +00:00
test ( "jQuery.inArray" , function ( ) {
expect ( 3 ) ;
equals ( jQuery . inArray ( 0 , false ) , - 1 , "Search in 'false' as array returns -1 and doesn't throw exception" ) ;
equals ( jQuery . inArray ( 0 , null ) , - 1 , "Search in 'null' as array returns -1 and doesn't throw exception" ) ;
equals ( jQuery . inArray ( 0 , undefined ) , - 1 , "Search in 'undefined' as array returns -1 and doesn't throw exception" ) ;
} ) ;
2009-07-16 15:16:44 +00:00
test ( "jQuery.isEmptyObject" , function ( ) {
2010-12-09 18:07:44 +00:00
expect ( 2 ) ;
2011-01-05 21:41:23 +00:00
2009-07-16 15:16:44 +00:00
equals ( true , jQuery . isEmptyObject ( { } ) , "isEmptyObject on empty object literal" ) ;
equals ( false , jQuery . isEmptyObject ( { a : 1 } ) , "isEmptyObject on non-empty object literal" ) ;
2011-01-05 21:41:23 +00:00
2010-12-09 18:07:44 +00:00
// What about this ?
// equals(true, jQuery.isEmptyObject(null), "isEmptyObject on null" );
2009-07-27 13:02:41 +00:00
} ) ;
2009-12-31 20:17:52 +00:00
test ( "jQuery.proxy" , function ( ) {
2011-04-17 21:11:40 +00:00
expect ( 7 ) ;
2009-12-31 20:17:52 +00:00
var test = function ( ) { equals ( this , thisObject , "Make sure that scope is set properly." ) ; } ;
var thisObject = { foo : "bar" , method : test } ;
// Make sure normal works
test . call ( thisObject ) ;
// Basic scoping
jQuery . proxy ( test , thisObject ) ( ) ;
2011-04-17 21:11:40 +00:00
// Another take on it
jQuery . proxy ( thisObject , "method" ) ( ) ;
2009-12-31 20:17:52 +00:00
// Make sure it doesn't freak out
equals ( jQuery . proxy ( null , thisObject ) , undefined , "Make sure no function was returned." ) ;
2010-12-15 02:53:04 +00:00
// Partial application
var test2 = function ( a ) { equals ( a , "pre-applied" , "Ensure arguments can be pre-applied." ) ; } ;
jQuery . proxy ( test2 , null , "pre-applied" ) ( ) ;
// Partial application w/ normal arguments
var test3 = function ( a , b ) { equals ( b , "normal" , "Ensure arguments can be pre-applied and passed as usual." ) ; } ;
jQuery . proxy ( test3 , null , "pre-applied" ) ( "normal" ) ;
2011-01-21 15:33:50 +00:00
// Test old syntax
var test4 = { meth : function ( a ) { equals ( a , "boom" , "Ensure old syntax works." ) ; } } ;
jQuery . proxy ( test4 , "meth" ) ( "boom" ) ;
2009-12-31 20:17:52 +00:00
} ) ;
2010-01-23 22:08:26 +00:00
test ( "jQuery.parseJSON" , function ( ) {
2010-02-13 07:14:23 +00:00
expect ( 8 ) ;
2011-01-05 21:41:23 +00:00
2010-01-23 22:08:26 +00:00
equals ( jQuery . parseJSON ( ) , null , "Nothing in, null out." ) ;
equals ( jQuery . parseJSON ( null ) , null , "Nothing in, null out." ) ;
equals ( jQuery . parseJSON ( "" ) , null , "Nothing in, null out." ) ;
2011-01-05 21:41:23 +00:00
2010-01-23 22:08:26 +00:00
same ( jQuery . parseJSON ( "{}" ) , { } , "Plain object parsing." ) ;
2011-04-11 20:33:29 +00:00
same ( jQuery . parseJSON ( "{\"test\":1}" ) , { "test" : 1 } , "Plain object parsing." ) ;
2010-02-13 07:14:23 +00:00
2011-04-11 20:33:29 +00:00
same ( jQuery . parseJSON ( "\n{\"test\":1}" ) , { "test" : 1 } , "Make sure leading whitespaces are handled." ) ;
2011-01-05 21:41:23 +00:00
2010-01-23 22:08:26 +00:00
try {
jQuery . parseJSON ( "{a:1}" ) ;
ok ( false , "Test malformed JSON string." ) ;
} catch ( e ) {
ok ( true , "Test malformed JSON string." ) ;
}
2011-01-05 21:41:23 +00:00
2010-01-23 22:08:26 +00:00
try {
jQuery . parseJSON ( "{'a':1}" ) ;
ok ( false , "Test malformed JSON string." ) ;
} catch ( e ) {
ok ( true , "Test malformed JSON string." ) ;
}
2010-02-13 07:14:23 +00:00
} ) ;
2010-12-20 18:09:15 +00:00
2011-07-23 01:26:36 +00:00
test ( "jQuery.parseXML" , 4 , function ( ) {
var xml , tmp ;
try {
xml = jQuery . parseXML ( "<p>A <b>well-formed</b> xml string</p>" ) ;
tmp = xml . getElementsByTagName ( "p" ) [ 0 ] ;
ok ( ! ! tmp , "<p> present in document" ) ;
tmp = tmp . getElementsByTagName ( "b" ) [ 0 ] ;
ok ( ! ! tmp , "<b> present in document" ) ;
strictEqual ( tmp . childNodes [ 0 ] . nodeValue , "well-formed" , "<b> text is as expected" ) ;
} catch ( e ) {
strictEqual ( e , undefined , "unexpected error" ) ;
}
try {
xml = jQuery . parseXML ( "<p>Not a <<b>well-formed</b> xml string</p>" ) ;
ok ( false , "invalid xml not detected" ) ;
} catch ( e ) {
strictEqual ( e , "Invalid XML: <p>Not a <<b>well-formed</b> xml string</p>" , "invalid xml detected" ) ;
}
} ) ;
2011-01-31 13:21:42 +00:00
test ( "jQuery.sub() - Static Methods" , function ( ) {
2011-01-27 18:35:06 +00:00
expect ( 18 ) ;
2011-01-31 13:21:42 +00:00
var Subclass = jQuery . sub ( ) ;
2011-01-27 18:35:06 +00:00
Subclass . extend ( {
topLevelMethod : function ( ) { return this . debug ; } ,
debug : false ,
config : {
2011-04-11 20:33:29 +00:00
locale : "en_US"
2011-01-27 18:35:06 +00:00
} ,
setup : function ( config ) {
this . extend ( true , this . config , config ) ;
}
} ) ;
Subclass . fn . extend ( { subClassMethod : function ( ) { return this ; } } ) ;
2011-03-03 14:16:47 +00:00
2011-01-27 18:35:06 +00:00
//Test Simple Subclass
2011-04-11 20:33:29 +00:00
ok ( Subclass . topLevelMethod ( ) === false , "Subclass.topLevelMethod thought debug was true" ) ;
ok ( Subclass . config . locale == "en_US" , Subclass . config . locale + " is wrong!" ) ;
same ( Subclass . config . test , undefined , "Subclass.config.test is set incorrectly" ) ;
equal ( jQuery . ajax , Subclass . ajax , "The subclass failed to get all top level methods" ) ;
2011-03-03 14:16:47 +00:00
2011-01-27 18:35:06 +00:00
//Create a SubSubclass
2011-01-31 13:21:42 +00:00
var SubSubclass = Subclass . sub ( ) ;
2011-03-03 14:16:47 +00:00
2011-01-27 18:35:06 +00:00
//Make Sure the SubSubclass inherited properly
2011-04-11 20:33:29 +00:00
ok ( SubSubclass . topLevelMethod ( ) === false , "SubSubclass.topLevelMethod thought debug was true" ) ;
ok ( SubSubclass . config . locale == "en_US" , SubSubclass . config . locale + " is wrong!" ) ;
same ( SubSubclass . config . test , undefined , "SubSubclass.config.test is set incorrectly" ) ;
equal ( jQuery . ajax , SubSubclass . ajax , "The subsubclass failed to get all top level methods" ) ;
2011-01-27 18:35:06 +00:00
//Modify The Subclass and test the Modifications
SubSubclass . fn . extend ( { subSubClassMethod : function ( ) { return this ; } } ) ;
2011-04-11 20:33:29 +00:00
SubSubclass . setup ( { locale : "es_MX" , test : "worked" } ) ;
2011-01-27 18:35:06 +00:00
SubSubclass . debug = true ;
SubSubclass . ajax = function ( ) { return false ; } ;
2011-04-11 20:33:29 +00:00
ok ( SubSubclass . topLevelMethod ( ) , "SubSubclass.topLevelMethod thought debug was false" ) ;
same ( SubSubclass ( document ) . subClassMethod , Subclass . fn . subClassMethod , "Methods Differ!" ) ;
ok ( SubSubclass . config . locale == "es_MX" , SubSubclass . config . locale + " is wrong!" ) ;
ok ( SubSubclass . config . test == "worked" , "SubSubclass.config.test is set incorrectly" ) ;
notEqual ( jQuery . ajax , SubSubclass . ajax , "The subsubclass failed to get all top level methods" ) ;
2011-03-03 14:16:47 +00:00
2011-01-27 18:35:06 +00:00
//This shows that the modifications to the SubSubClass did not bubble back up to it's superclass
2011-04-11 20:33:29 +00:00
ok ( Subclass . topLevelMethod ( ) === false , "Subclass.topLevelMethod thought debug was true" ) ;
ok ( Subclass . config . locale == "en_US" , Subclass . config . locale + " is wrong!" ) ;
same ( Subclass . config . test , undefined , "Subclass.config.test is set incorrectly" ) ;
same ( Subclass ( document ) . subSubClassMethod , undefined , "subSubClassMethod set incorrectly" ) ;
equal ( jQuery . ajax , Subclass . ajax , "The subclass failed to get all top level methods" ) ;
2011-01-27 18:35:06 +00:00
} ) ;
2011-01-31 13:21:42 +00:00
test ( "jQuery.sub() - .fn Methods" , function ( ) {
2010-10-10 00:32:54 +00:00
expect ( 378 ) ;
2011-01-31 13:21:42 +00:00
var Subclass = jQuery . sub ( ) ,
SubclassSubclass = Subclass . sub ( ) ,
2010-10-10 00:32:54 +00:00
jQueryDocument = jQuery ( document ) ,
selectors , contexts , methods , method , arg , description ;
2011-04-11 20:33:29 +00:00
jQueryDocument . toString = function ( ) { return "jQueryDocument" ; } ;
2010-10-10 00:32:54 +00:00
Subclass . fn . subclassMethod = function ( ) { } ;
SubclassSubclass . fn . subclassSubclassMethod = function ( ) { } ;
selectors = [
2011-04-11 20:33:29 +00:00
"body" ,
"html, body" ,
"<div></div>"
2011-01-14 16:17:32 +00:00
] ;
2010-10-10 00:32:54 +00:00
methods = [ // all methods that return a new jQuery instance
2011-04-11 20:33:29 +00:00
[ "eq" , 1 ] ,
[ "add" , document ] ,
[ "end" ] ,
[ "has" ] ,
[ "closest" , "div" ] ,
[ "filter" , document ] ,
[ "find" , "div" ]
2011-01-14 16:17:32 +00:00
] ;
2010-10-10 00:32:54 +00:00
contexts = [ undefined , document , jQueryDocument ] ;
jQuery . each ( selectors , function ( i , selector ) {
jQuery . each ( methods , function ( ) {
2011-01-14 16:17:32 +00:00
method = this [ 0 ] ;
arg = this [ 1 ] ;
2010-10-10 00:32:54 +00:00
jQuery . each ( contexts , function ( i , context ) {
2011-04-11 20:33:29 +00:00
description = "(\"" + selector + "\", " + context + ")." + method + "(" + ( arg || "" ) + ")" ;
2010-10-10 00:32:54 +00:00
same (
jQuery ( selector , context ) [ method ] ( arg ) . subclassMethod , undefined ,
2011-04-11 20:33:29 +00:00
"jQuery" + description + " doesn't have Subclass methods"
2010-10-10 00:32:54 +00:00
) ;
same (
jQuery ( selector , context ) [ method ] ( arg ) . subclassSubclassMethod , undefined ,
2011-04-11 20:33:29 +00:00
"jQuery" + description + " doesn't have SubclassSubclass methods"
2010-10-10 00:32:54 +00:00
) ;
same (
Subclass ( selector , context ) [ method ] ( arg ) . subclassMethod , Subclass . fn . subclassMethod ,
2011-04-11 20:33:29 +00:00
"Subclass" + description + " has Subclass methods"
2010-10-10 00:32:54 +00:00
) ;
same (
Subclass ( selector , context ) [ method ] ( arg ) . subclassSubclassMethod , undefined ,
2011-04-11 20:33:29 +00:00
"Subclass" + description + " doesn't have SubclassSubclass methods"
2010-10-10 00:32:54 +00:00
) ;
same (
SubclassSubclass ( selector , context ) [ method ] ( arg ) . subclassMethod , Subclass . fn . subclassMethod ,
2011-04-11 20:33:29 +00:00
"SubclassSubclass" + description + " has Subclass methods"
2010-10-10 00:32:54 +00:00
) ;
same (
SubclassSubclass ( selector , context ) [ method ] ( arg ) . subclassSubclassMethod , SubclassSubclass . fn . subclassSubclassMethod ,
2011-04-11 20:33:29 +00:00
"SubclassSubclass" + description + " has SubclassSubclass methods"
2010-10-10 00:32:54 +00:00
) ;
} ) ;
} ) ;
} ) ;
} ) ;
2011-05-25 19:10:49 +00:00
test ( "jQuery.camelCase()" , function ( ) {
var tests = {
2011-07-23 01:26:36 +00:00
"foo-bar" : "fooBar" ,
2011-08-17 21:30:31 +00:00
"foo-bar-baz" : "fooBarBaz" ,
"girl-u-want" : "girlUWant" ,
"the-4th-dimension" : "the4thDimension" ,
"-o-tannenbaum" : "OTannenbaum" ,
"-moz-illa" : "MozIlla" ,
"-ms-take" : "msTake"
2011-05-25 19:10:49 +00:00
} ;
2011-08-17 21:30:31 +00:00
expect ( 7 ) ;
2011-05-25 19:10:49 +00:00
jQuery . each ( tests , function ( key , val ) {
equal ( jQuery . camelCase ( key ) , val , "Converts: " + key + " => " + val ) ;
} ) ;
} ) ;