1 QUnit.module( "deprecated", { teardown: moduleTeardown } );
4 QUnit.test( "bind/unbind", function( assert ) {
8 "<div><p><span><b>b</b></span></p></div>"
13 .bind( "click", { bindData: 19 }, function( e, trig ) {
14 assert.equal( e.type, "click", "correct event type" );
15 assert.equal( e.data.bindData, 19, "correct trigger data" );
16 assert.equal( trig, 42, "correct bind data" );
17 assert.equal( e.target.nodeName.toLowerCase(), "b", "correct element" );
19 .trigger( "click", [ 42 ] )
25 QUnit.test( "delegate/undelegate", function( assert ) {
29 "<div><p><span><b>b</b></span></p></div>"
33 .delegate( "b", "click", function( e ) {
34 assert.equal( e.type, "click", "correct event type" );
35 assert.equal( e.target.nodeName.toLowerCase(), "b", "correct element" );
40 .undelegate( "b", "click" )
44 QUnit.test( "jQuery.parseJSON", function( assert ) {
47 assert.strictEqual( jQuery.parseJSON( null ), null, "primitive null" );
48 assert.strictEqual( jQuery.parseJSON( "0.88" ), 0.88, "Number" );
50 jQuery.parseJSON( "\" \\\" \\\\ \\/ \\b \\f \\n \\r \\t \\u007E \\u263a \"" ),
51 " \" \\ / \b \f \n \r \t ~ \u263A ",
54 assert.deepEqual( jQuery.parseJSON( "{}" ), {}, "Empty object" );
55 assert.deepEqual( jQuery.parseJSON( "{\"test\":1}" ), { "test": 1 }, "Plain object" );
56 assert.deepEqual( jQuery.parseJSON( "[0]" ), [ 0 ], "Simple array" );
59 jQuery.parseJSON( "[ \"string\", -4.2, 2.7180e0, 3.14E-1, {}, [], true, false, null ]" ),
60 [ "string", -4.2, 2.718, 0.314, {}, [], true, false, null ],
61 "Array of all data types"
64 jQuery.parseJSON( "{ \"string\": \"\", \"number\": 4.2e+1, \"object\": {}," +
65 "\"array\": [[]], \"boolean\": [ true, false ], \"null\": null }" ),
66 { string: "", number: 42, object: {}, array: [ [] ], "boolean": [ true, false ], "null": null },
67 "Dictionary of all data types"
70 assert.deepEqual( jQuery.parseJSON( "\n{\"test\":1}\t" ), { "test": 1 },
71 "Leading and trailing whitespace are ignored" );
73 assert.throws( function() {
75 }, null, "Undefined raises an error" );
76 assert.throws( function() {
77 jQuery.parseJSON( "" );
78 }, null, "Empty string raises an error" );
79 assert.throws( function() {
80 jQuery.parseJSON( "''" );
81 }, null, "Single-quoted string raises an error" );
83 assert.throws( function() {
84 var result = jQuery.parseJSON( "0101" );
86 // Support: IE <=9 only
87 // Ensure base-10 interpretation on browsers that erroneously accept leading-zero numbers
88 if ( result === 101 ) {
89 throw new Error( "close enough" );
91 }, null, "Leading-zero number raises an error or is parsed as decimal" );
92 assert.throws( function() {
93 jQuery.parseJSON( "{a:1}" );
94 }, null, "Unquoted property raises an error" );
95 assert.throws( function() {
96 jQuery.parseJSON( "{'a':1}" );
97 }, null, "Single-quoted property raises an error" );
98 assert.throws( function() {
99 jQuery.parseJSON( "[,]" );
100 }, null, "Array element elision raises an error" );
101 assert.throws( function() {
102 jQuery.parseJSON( "{},[]" );
103 }, null, "Comma expression raises an error" );
104 assert.throws( function() {
105 jQuery.parseJSON( "[]\n,{}" );
106 }, null, "Newline-containing comma expression raises an error" );
107 assert.throws( function() {
108 jQuery.parseJSON( "\"\"\n\"\"" );
109 }, null, "Automatic semicolon insertion raises an error" );
111 assert.strictEqual( jQuery.parseJSON( [ 0 ] ), 0, "Input cast to string" );
114 QUnit.test( "jQuery.isArray", function( assert ) {
117 assert.strictEqual( jQuery.isArray, Array.isArray, "Array.isArray equals jQuery.isArray" );
120 QUnit.test( "jQuery.nodeName", function( assert ) {
123 assert.strictEqual( typeof jQuery.nodeName, "function", "jQuery.nodeName is a function" );
126 jQuery.nodeName( document.createElement( "div" ), "div" ),
132 jQuery.nodeName( document.createElement( "div" ), "span" ),
134 "Basic usage (false)"
138 jQuery.nodeName( document.createElement( "div" ), "DIV" ),
140 "Ignores case in the name parameter"
144 jQuery.nodeName( document.createElement( "section" ), "section" ),
146 "Works on HTML5 tags (true)"
150 jQuery.nodeName( document.createElement( "section" ), "article" ),
152 "Works on HTML5 tags (false)"
156 jQuery.nodeName( document.createElement( "custom-element" ), "custom-element" ),
158 "Works on custom elements (true)"
162 jQuery.nodeName( document.createElement( "custom-element" ), "my-element" ),
164 "Works on custom elements (true)"
168 QUnit.test( "jQuery.isWindow", function( assert ) {
171 assert.ok( jQuery.isWindow( window ), "window" );
172 assert.ok( jQuery.isWindow( document.getElementsByTagName( "iframe" )[ 0 ].contentWindow ), "iframe.contentWindow" );
173 assert.ok( !jQuery.isWindow(), "empty" );
174 assert.ok( !jQuery.isWindow( null ), "null" );
175 assert.ok( !jQuery.isWindow( undefined ), "undefined" );
176 assert.ok( !jQuery.isWindow( document ), "document" );
177 assert.ok( !jQuery.isWindow( document.documentElement ), "documentElement" );
178 assert.ok( !jQuery.isWindow( "" ), "string" );
179 assert.ok( !jQuery.isWindow( 1 ), "number" );
180 assert.ok( !jQuery.isWindow( true ), "boolean" );
181 assert.ok( !jQuery.isWindow( {} ), "object" );
182 assert.ok( !jQuery.isWindow( { setInterval: function() {} } ), "fake window" );
183 assert.ok( !jQuery.isWindow( /window/ ), "regexp" );
184 assert.ok( !jQuery.isWindow( function() {} ), "function" );
187 QUnit.test( "jQuery.camelCase()", function( assert ) {
191 "foo-bar-baz": "fooBarBaz",
192 "girl-u-want": "girlUWant",
193 "the-4th-dimension": "the-4thDimension",
194 "-o-tannenbaum": "OTannenbaum",
195 "-moz-illa": "MozIlla",
201 jQuery.each( tests, function( key, val ) {
202 assert.equal( jQuery.camelCase( key ), val, "Converts: " + key + " => " + val );
206 QUnit.test( "jQuery.now", function( assert ) {
209 assert.ok( typeof jQuery.now() === "number", "jQuery.now is a function" );