@@ -4,7 +4,7 @@
<meta charset="utf-8">
<title>jQuery UI Widget - Default functionality</title>
<link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">
<script src="../../jquery-1.7.1.js"></script>
<script src="../../jquery-1.7.2.js"></script>
<script src="../../ui/jquery.ui.core.js"></script>
<script src="../../ui/jquery.ui.position.js"></script>
<script src="../../ui/jquery.ui.widget.js"></script>
@@ -139,11 +139,14 @@
});

// click to toggle enabled/disabled
$( "#disable" ).toggle(function() {
$( "#disable" ).click(function() {
// use the custom selector created for each widget to find all instances
$( ":custom-colorize" ).colorize( "disable" );
}, function() {
$( ":custom-colorize" ).colorize( "enable" );
// all instances are toggled together, so we can check the state from the first
if ( $( ":custom-colorize" ).colorize( "option", "disabled" ) ) {
$( ":custom-colorize" ).colorize( "enable" );
} else {
$( ":custom-colorize" ).colorize( "disable" );
}
});

// click to set options after initalization

Large diffs are not rendered by default.

@@ -1,5 +1,5 @@
/**
* QUnit v1.4.0 - A JavaScript Unit Testing Framework
* QUnit v1.6.0 - A JavaScript Unit Testing Framework
*
* http://docs.jquery.com/QUnit
*
@@ -56,6 +56,7 @@

#qunit-header label {
display: inline-block;
padding-left: 0.5em;
}

#qunit-banner {
@@ -220,6 +221,9 @@

border-bottom: 1px solid white;
}
#qunit-testresult .module-name {
font-weight: bold;
}

/** Fixture */

Large diffs are not rendered by default.

607 grunt.js

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,38 @@
{
"name": "jquery-ui",
"title": "jQuery UI",
"description": "Abstractions for low-level interaction and animation, advanced effects and high-level, themeable widgets, built on top of the jQuery JavaScript Library, that you can use to build highly interactive web applications.",
"version": "1.9.0pre",
"homepage": "https://github.com/jquery/jquery-ui",
"author": {
"name": "AUTHORS.txt"
},
"repository": {
"type": "git",
"url": "git://github.com/jquery/jquery-ui.git"
},
"bugs": {
"url": "http://bugs.jqueryui.com/"
},
"licenses": [
{
"type": "MIT",
"url": "http://www.opensource.org/licenses/MIT"
},
{
"type": "GPL",
"url": "http://www.opensource.org/licenses/GPL-2.0"
}
],
"dependencies": {},
"devDependencies": {
"grunt": "0.3.9",
"grunt-css": "0.2.0",
"grunt-compare-size": "0.1.4",
"grunt-html": "0.1.1",
"request": "2.9.153",
"rimraf": "2.0.1",
"testswarm": "0.2.2"
},
"keywords": []
}
@@ -0,0 +1,59 @@
{
"browser": true,
"curly": true,
"eqnull": true,
"eqeqeq": true,
"expr": true,
"evil": true,
"jquery": true,
"latedef": true,
"noarg": true,
"onevar": true,
"smarttabs": true,
"trailing": true,
"undef": true,
"predef": [
"addMonths",
"asyncTest",
"container",
"deepEqual",
"d1",
"d2",
"dlg",
"domEqual",
"drag",
"dragged",
"el",
"equal",
"equalsDate",
"expect",
"Globalize",
"heightAfter",
"init",
"isNotOpen",
"isOpen",
"modal",
"module",
"moved",
"notEqual",
"offsetAfter",
"offsetBefore",
"ok",
"PROP_NAME",
"QUnit",
"restoreScroll",
"shouldBeDroppable",
"shouldmove",
"shouldNotBeDroppable",
"shouldnotmove",
"shouldnotresize",
"shouldresize",
"start",
"strictEqual",
"stop",
"test",
"TestHelpers",
"widthAfter",
"JSHINT"
]
}
@@ -0,0 +1,21 @@
body {
font-size: 62.5%;
}
.ui-widget-header {
padding: 0.2em 0.5em;
margin: 0;
}
.ui-widget-content {
padding: 1em;
margin-bottom: 1em;
}
p {
margin: 0;
}
ul {
margin: 0;
list-style: none;
}
li {
line-height: 2em;
}
@@ -1,22 +1,33 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta charset="utf-8">
<title>jQuery UI Tests</title>
<link rel="stylesheet" href="../themes/base/jquery.ui.all.css" type="text/css" />
<script type="text/javascript" src="../jquery-1.7.1.js"></script>
<link rel="stylesheet" href="tests.css" type="text/css" />
<script type="text/javascript" src="tests.js"></script>
<link rel="stylesheet" href="../../themes/base/jquery.ui.core.css">
<link rel="stylesheet" href="../../themes/base/jquery.ui.theme.css">
<link rel="stylesheet" href="index.css">
<script src="jquery-1.7.2.js"></script>
<script src="index.js"></script>
</head>
<body>

<h1>jQuery UI Tests</h1>
<div id="main">
<h1>jQuery UI Tests</h1>
<div>
<h2>Unit Tests</h2>
<p><a href="unit/index.html">Unit tests</a> exist for all functionality in jQuery UI.
The unit tests can be run locally (some tests require a web server with PHP)
to ensure proper functionality before committing changes.
The unit tests are also run on <a href="http://swarm.jquery.com/user/jqueryui">TestSwarm</a>
for every commit.</p>

<h2><a href="static/index.html">Static Tests</a></h2>

<h2><a href="unit/index.html">Unit Tests</a></h2>

<h2><a href="visual/index.html">Visual Tests</a></h2>
<h2>Visual Tests</h2>
<p><a href="visual/index.html">Visual tests</a> only exist in cases where we can't verify proper functionality
with unit tests. These may be either purely visual or just hard to automate.
Most visual tests will provide a description of what is happening on the page
and what to look for.</p>
</div>
</div>

</body>
</html>
@@ -0,0 +1,10 @@
$(function() {

$( "#main" )
.addClass( "ui-widget" )
.find( "h1, h2" )
.addClass( "ui-widget-header ui-corner-top" )
.next()
.addClass( "ui-widget-content ui-corner-bottom" );

});

Large diffs are not rendered by default.

@@ -18,7 +18,7 @@ for ( ; i < length; i++ ) {
if ( version === "git" ) {
url = "http://code.jquery.com/jquery-git.js";
} else {
url = "../../jquery-" + ( version || "1.7.1" ) + ".js";
url = "../../jquery-" + ( version || "1.7.2" ) + ".js";
}

document.write( "<script src='" + url + "'></script>" );
@@ -243,7 +243,6 @@ $.extend( $.simulate.prototype, {
y = Math.floor( center.y ),
dx = options.dx || 0,
dy = options.dy || 0,
target = this.target,
coord = { clientX: x, clientY: y };
this.simulateEvent( target, "mousedown", coord );
coord = { clientX: x + 1, clientY: y + 1 };

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

@@ -8,9 +8,12 @@
<script>
$.uiBackCompat = false;
</script>
<script src="../../resource_loader.js"></script>
<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>
<script>
loadResources({
TestHelpers.loadResources({
css: [ "ui.core", "ui.accordion" ],
js: [
"ui/jquery.ui.core.js",
@@ -20,13 +23,8 @@
});
</script>

<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>

<script src="accordion_test_helpers.js"></script>
<script src="accordion_defaults.js"></script>
<script src="accordion_common.js"></script>
<script src="accordion_core.js"></script>
<script src="accordion_events.js"></script>
<script src="accordion_methods.js"></script>
@@ -66,7 +64,7 @@ <h3 class="bar">Now that you've got...</h3>
<p>
your bear, you have to admit it!
<br>
No, we aren't selling bears.
No, we aren't <a href="#">selling bears</a>.
</p>
<p>
We could talk about renting one.
@@ -93,7 +91,7 @@ <h2><a href="?p=1.1.1">Guitar</a></h2>
<li><a href="?p=1.1.1.3">Amps</a></li>
<li><a href="?p=1.1.1.4">Effects</a></li>
<li><a href="?p=1.1.1.5">Accessories</a></li>
</ul>
</ul>
</li>
<li>
<h2><a href="?p=1.1.2"><span>Bass</span></a></h2>
@@ -105,15 +103,15 @@ <h2><a href="?p=1.1.2"><span>Bass</span></a></h2>
<li><a href="?p=1.1.2.5">Accessories</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
</ul>
</ul>
</li>
<li>
<h2><a href="?p=1.1.3">Drums</a></h2>
<ul>
<li><a href="?p=1.1.3.2">Acoustic</a></li>
<li><a href="?p=1.1.3.3">Electronic</a></li>
<li><a href="?p=1.1.3.6">Accessories</a></li>
</ul>
</ul>
</li>
</ul>
</div>
@@ -1,4 +1,4 @@
commonWidgetTests( "accordion", {
TestHelpers.commonWidgetTests( "accordion", {
defaults: {
active: 0,
animate: {},
@@ -1,4 +1,4 @@
commonWidgetTests( "accordion", {
TestHelpers.commonWidgetTests( "accordion", {
defaults: {
active: 0,
animate: null,
@@ -1,6 +1,9 @@
(function( $ ) {

module( "accordion: core", accordion_setupTeardown() );
var setupTeardown = TestHelpers.accordion.setupTeardown,
state = TestHelpers.accordion.state;

module( "accordion: core", setupTeardown() );

$.each( { div: "#list1", ul: "#navigation", dl: "#accordion-dl" }, function( type, selector ) {
test( "markup structure: " + type, function() {
@@ -21,28 +24,94 @@ test( "handle click on header-descendant", function() {
expect( 1 );
var element = $( "#navigation" ).accordion();
$( "#navigation h2:eq(1) a" ).click();
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );
});

test( "accessibility", function () {
expect( 13 );
var element = $( "#list1" ).accordion().accordion( "option", "active", 1 );
var headers = element.find( ".ui-accordion-header" );

equal( headers.eq( 1 ).attr( "tabindex" ), 0, "active header should have tabindex=0" );
equal( headers.eq( 0 ).attr( "tabindex" ), -1, "inactive header should have tabindex=-1" );
equal( element.attr( "role" ), "tablist", "main role" );
equal( headers.attr( "role" ), "tab", "tab roles" );
equal( headers.next().attr( "role" ), "tabpanel", "tabpanel roles" );
equal( headers.eq( 1 ).attr( "aria-expanded" ), "true", "active tab has aria-expanded" );
equal( headers.eq( 0 ).attr( "aria-expanded" ), "false", "inactive tab has aria-expanded" );
equal( headers.eq( 1 ).attr( "aria-selected" ), "true", "active tab has aria-selected" );
equal( headers.eq( 0 ).attr( "aria-selected" ), "false", "inactive tab has aria-selected" );
expect( 37 );
var element = $( "#list1" ).accordion({
active: 1
}),
headers = element.find( ".ui-accordion-header" );

equal( element.attr( "role" ), "tablist", "element role" );
headers.each(function( i ) {
var header = headers.eq( i ),
panel = header.next();
equal( header.attr( "role" ), "tab", "header " + i + " role" );
equal( header.attr( "aria-controls" ), panel.attr( "id" ), "header " + i + " aria-controls" );
equal( panel.attr( "role" ), "tabpanel", "panel " + i + " role" );
equal( panel.attr( "aria-labelledby" ), header.attr( "id" ), "panel " + i + " aria-labelledby" );
});

equal( headers.eq( 1 ).attr( "tabindex" ), 0, "active header has tabindex=0" );
equal( headers.eq( 1 ).attr( "aria-selected" ), "true", "active tab has aria-selected=true" );
equal( headers.eq( 1 ).next().attr( "aria-expanded" ), "true", "active tabpanel has aria-expanded=true" );
equal( headers.eq( 1 ).next().attr( "aria-hidden" ), "false", "active tabpanel has aria-hidden=false" );
equal( headers.eq( 0 ).attr( "tabindex" ), -1, "active header has tabindex=-1" );
equal( headers.eq( 0 ).attr( "aria-selected" ), "false", "active tab has aria-selected=false" );
equal( headers.eq( 0 ).next().attr( "aria-expanded" ), "false", "active tabpanel has aria-expanded=false" );
equal( headers.eq( 0 ).next().attr( "aria-hidden" ), "true", "active tabpanel has aria-hidden=true" );
equal( headers.eq( 2 ).attr( "tabindex" ), -1, "active header has tabindex=-1" );
equal( headers.eq( 2 ).attr( "aria-selected" ), "false", "active tab has aria-selected=false" );
equal( headers.eq( 2 ).next().attr( "aria-expanded" ), "false", "active tabpanel has aria-expanded=false" );
equal( headers.eq( 2 ).next().attr( "aria-hidden" ), "true", "active tabpanel has aria-hidden=true" );

element.accordion( "option", "active", 0 );
equal( headers.eq( 0 ).attr( "aria-expanded" ), "true", "newly active tab has aria-expanded" );
equal( headers.eq( 1 ).attr( "aria-expanded" ), "false", "newly inactive tab has aria-expanded" );
equal( headers.eq( 0 ).attr( "aria-selected" ), "true", "active tab has aria-selected" );
equal( headers.eq( 1 ).attr( "aria-selected" ), "false", "inactive tab has aria-selected" );
equal( headers.eq( 0 ).attr( "tabindex" ), 0, "active header has tabindex=0" );
equal( headers.eq( 0 ).attr( "aria-selected" ), "true", "active tab has aria-selected=true" );
equal( headers.eq( 0 ).next().attr( "aria-expanded" ), "true", "active tabpanel has aria-expanded=true" );
equal( headers.eq( 0 ).next().attr( "aria-hidden" ), "false", "active tabpanel has aria-hidden=false" );
equal( headers.eq( 1 ).attr( "tabindex" ), -1, "active header has tabindex=-1" );
equal( headers.eq( 1 ).attr( "aria-selected" ), "false", "active tab has aria-selected=false" );
equal( headers.eq( 1 ).next().attr( "aria-expanded" ), "false", "active tabpanel has aria-expanded=false" );
equal( headers.eq( 1 ).next().attr( "aria-hidden" ), "true", "active tabpanel has aria-hidden=true" );
equal( headers.eq( 2 ).attr( "tabindex" ), -1, "active header has tabindex=-1" );
equal( headers.eq( 2 ).attr( "aria-selected" ), "false", "active tab has aria-selected=false" );
equal( headers.eq( 2 ).next().attr( "aria-expanded" ), "false", "active tabpanel has aria-expanded=false" );
equal( headers.eq( 2 ).next().attr( "aria-hidden" ), "true", "active tabpanel has aria-hidden=true" );
});

asyncTest( "keybaord support", function() {
expect( 13 );
var element = $( "#list1" ).accordion(),
headers = element.find( ".ui-accordion-header" ),
anchor = headers.eq( 1 ).next().find( "a" ).eq( 0 ),
keyCode = $.ui.keyCode;
equal( headers.filter( ".ui-state-focus" ).length, 0, "no headers focused on init" );
headers.eq( 0 ).simulate( "focus" );
setTimeout(function() {
ok( headers.eq( 0 ).is( ".ui-state-focus" ), "first header has focus" );
headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.DOWN } );
ok( headers.eq( 1 ).is( ".ui-state-focus" ), "DOWN moves focus to next header" );
headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.RIGHT } );
ok( headers.eq( 2 ).is( ".ui-state-focus" ), "RIGHT moves focus to next header" );
headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.DOWN } );
ok( headers.eq( 0 ).is( ".ui-state-focus" ), "DOWN wraps focus to first header" );

headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.UP } );
ok( headers.eq( 2 ).is( ".ui-state-focus" ), "UP wraps focus to last header" );
headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.LEFT } );
ok( headers.eq( 1 ).is( ".ui-state-focus" ), "LEFT moves focus to previous header" );

headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.HOME } );
ok( headers.eq( 0 ).is( ".ui-state-focus" ), "HOME moves focus to first header" );
headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.END } );
ok( headers.eq( 2 ).is( ".ui-state-focus" ), "END moves focus to last header" );

headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.ENTER } );
equal( element.accordion( "option", "active" ) , 2, "ENTER activates panel" );
headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.SPACE } );
equal( element.accordion( "option", "active" ), 1, "SPACE activates panel" );

anchor.simulate( "focus" );
setTimeout(function() {
ok( !headers.eq( 1 ).is( ".ui-state-focus" ), "header loses focus when focusing inside the panel" );
anchor.simulate( "keydown", { keyCode: keyCode.UP, ctrlKey: true } );
ok( headers.eq( 1 ).is( ".ui-state-focus" ), "CTRL+UP moves focus to header" );
start();
}, 1 );
}, 1 );
});

}( jQuery ) );
@@ -5,9 +5,12 @@
<title>jQuery UI Accordion Test Suite</title>

<script src="../../jquery.js"></script>
<script src="../../resource_loader.js"></script>
<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>
<script>
loadResources({
TestHelpers.loadResources({
css: [ "ui.core", "ui.accordion" ],
js: [
"ui/jquery.ui.core.js",
@@ -17,13 +20,8 @@
});
</script>

<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>

<script src="accordion_test_helpers.js"></script>
<script src="accordion_defaults_deprecated.js"></script>
<script src="accordion_common_deprecated.js"></script>
<script src="accordion_core.js"></script>
<script src="accordion_events.js"></script>
<script src="accordion_methods.js"></script>
@@ -64,7 +62,7 @@ <h3 class="bar">Now that you've got...</h3>
<p>
your bear, you have to admit it!
<br>
No, we aren't selling bears.
No, we aren't <a href="#">selling bears</a>.
</p>
<p>
We could talk about renting one.
@@ -91,7 +89,7 @@ <h2><a href="?p=1.1.1">Guitar</a></h2>
<li><a href="?p=1.1.1.3">Amps</a></li>
<li><a href="?p=1.1.1.4">Effects</a></li>
<li><a href="?p=1.1.1.5">Accessories</a></li>
</ul>
</ul>
</li>
<li>
<h2><a href="?p=1.1.2"><span>Bass</span></a></h2>
@@ -103,15 +101,15 @@ <h2><a href="?p=1.1.2"><span>Bass</span></a></h2>
<li><a href="?p=1.1.2.5">Accessories</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
</ul>
</ul>
</li>
<li>
<h2><a href="?p=1.1.3">Drums</a></h2>
<ul>
<li><a href="?p=1.1.3.2">Acoustic</a></li>
<li><a href="?p=1.1.3.3">Electronic</a></li>
<li><a href="?p=1.1.3.6">Accessories</a></li>
</ul>
</ul>
</li>
</ul>
</div>
@@ -1,117 +1,121 @@
(function( $ ) {

module( "accordion (deprecated): expanded active option, activate method", accordion_setupTeardown() );
var equalHeights = TestHelpers.accordion.equalHeights,
setupTeardown = TestHelpers.accordion.setupTeardown,
state = TestHelpers.accordion.state;

module( "accordion (deprecated): expanded active option, activate method", setupTeardown() );

test( "activate, numeric", function() {
expect( 5 );
var element = $( "#list1" ).accordion({ active: 1 });
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );
element.accordion( "activate", 2 );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
element.accordion( "activate", 0 );
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );
element.accordion( "activate", 1 );
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );
element.accordion( "activate", 2 );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
});

test( "activate, numeric, collapsible:true", function() {
expect( 3 );
var element = $( "#list1" ).accordion({ collapsible: true });
element.accordion( "activate", 2 );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
element.accordion( "activate", 0 );
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );
element.accordion( "activate", -1 );
accordion_state( element, 0, 0, 0 );
state( element, 0, 0, 0 );
});

test( "activate, boolean, collapsible: true", function() {
expect( 2 );
var element = $( "#list1" ).accordion({ collapsible: true });
element.accordion( "activate", 2 );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
element.accordion( "activate", false );
accordion_state( element, 0, 0, 0 );
state( element, 0, 0, 0 );
});

test( "activate, boolean, collapsible: false", function() {
expect( 2 );
var element = $( "#list1" ).accordion();
element.accordion( "activate", 2 );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
element.accordion( "activate", false );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
});

test( "activate, string expression", function() {
expect( 4 );
var element = $( "#list1" ).accordion({ active: "h3:last" });
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
element.accordion( "activate", ":first" );
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );
element.accordion( "activate", ":eq(1)" );
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );
element.accordion( "activate", ":last" );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
});

test( "activate, jQuery or DOM element", function() {
expect( 3 );
var element = $( "#list1" ).accordion({ active: $( "#list1 h3:last" ) });
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
element.accordion( "activate", $( "#list1 h3:first" ) );
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );
element.accordion( "activate", $( "#list1 h3" )[ 1 ] );
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );
});

test( "{ active: Selector }", function() {
expect( 2 );
var element = $("#list1").accordion({
active: "h3:last"
});
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
element.accordion( "option", "active", "h3:eq(1)" );
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );
});

test( "{ active: Element }", function() {
expect( 2 );
var element = $( "#list1" ).accordion({
active: $( "#list1 h3:last" )[ 0 ]
});
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
element.accordion( "option", "active", $( "#list1 h3:eq(1)" )[ 0 ] );
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );
});

test( "{ active: jQuery Object }", function() {
expect( 2 );
var element = $( "#list1" ).accordion({
active: $( "#list1 h3:last" )
});
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
element.accordion( "option", "active", $( "#list1 h3:eq(1)" ) );
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );
});





module( "accordion (deprecated) - height options", accordion_setupTeardown() );
module( "accordion (deprecated) - height options", setupTeardown() );

test( "{ autoHeight: true }, default", function() {
expect( 3 );
accordion_equalHeights( $( "#navigation" ).accordion({ autoHeight: true }), 95, 130 );
equalHeights( $( "#navigation" ).accordion({ autoHeight: true }), 95, 130 );
});

test( "{ autoHeight: false }", function() {
expect( 3 );
var element = $( "#navigation" ).accordion({ autoHeight: false });
var sizes = [];
var element = $( "#navigation" ).accordion({ autoHeight: false }),
sizes = [];
element.find( ".ui-accordion-content" ).each(function() {
sizes.push( $(this).height() );
});
@@ -124,7 +128,7 @@ test( "{ fillSpace: true }", function() {
expect( 3 );
$( "#navigationWrapper" ).height( 500 );
var element = $( "#navigation" ).accordion({ fillSpace: true });
accordion_equalHeights( element, 446, 458 );
equalHeights( element, 446, 458 );
});

test( "{ fillSapce: true } with sibling", function() {
@@ -138,7 +142,7 @@ test( "{ fillSapce: true } with sibling", function() {
})
.prependTo( "#navigationWrapper" );
var element = $( "#navigation" ).accordion({ fillSpace: true });
accordion_equalHeights( element , 346, 358);
equalHeights( element , 346, 358);
});

test( "{ fillSpace: true } with multiple siblings", function() {
@@ -167,14 +171,14 @@ test( "{ fillSpace: true } with multiple siblings", function() {
})
.prependTo( "#navigationWrapper" );
var element = $( "#navigation" ).accordion({ fillSpace: true });
accordion_equalHeights( element, 296, 308 );
equalHeights( element, 296, 308 );
});





module( "accordion (deprecated) - icons", accordion_setupTeardown() );
module( "accordion (deprecated) - icons", setupTeardown() );

test( "icons, headerSelected", function() {
expect( 3 );
@@ -191,7 +195,7 @@ test( "icons, headerSelected", function() {



module( "accordion (deprecated) - resize", accordion_setupTeardown() );
module( "accordion (deprecated) - resize", setupTeardown() );

test( "resize", function() {
expect( 6 );
@@ -202,135 +206,135 @@ test( "resize", function() {
.accordion({
heightStyle: "fill"
});
accordion_equalHeights( element, 246, 258 );
equalHeights( element, 246, 258 );

element.parent().height( 500 );
element.accordion( "resize" );
accordion_equalHeights( element, 446, 458 );
equalHeights( element, 446, 458 );
});





module( "accordion (deprecated) - navigation", accordion_setupTeardown() );
module( "accordion (deprecated) - navigation", setupTeardown() );

test( "{ navigation: true, navigationFilter: header }", function() {
expect( 2 );
var element = $( "#navigation" ).accordion({
navigation: true,
navigationFilter: function() {
return /\?p=1\.1\.3$/.test( this.href );
return (/\?p=1\.1\.3$/).test( this.href );
}
});
equal( element.accordion( "option", "active" ), 2 );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
});

test( "{ navigation: true, navigationFilter: content }", function() {
expect( 2 );
var element = $( "#navigation" ).accordion({
navigation: true,
navigationFilter: function() {
return /\?p=1\.1\.3\.2$/.test( this.href );
return (/\?p=1\.1\.3\.2$/).test( this.href );
}
});
equal( element.accordion( "option", "active" ), 2 );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
});





module( "accordion (deprecated) - changestart/change events", accordion_setupTeardown() );
module( "accordion (deprecated) - changestart/change events", setupTeardown() );

test( "changestart", function() {
expect( 26 );
var element = $( "#list1" ).accordion({
active: false,
collapsible: true
});
var headers = element.find( ".ui-accordion-header" );
var content = element.find( ".ui-accordion-content" );
active: false,
collapsible: true
}),
headers = element.find( ".ui-accordion-header" ),
content = element.find( ".ui-accordion-content" );

element.one( "accordionchangestart", function( event, ui ) {
equal( ui.oldHeader.size(), 0 );
equal( ui.oldContent.size(), 0 );
equal( ui.newHeader.size(), 1 );
equal( ui.oldHeader.length, 0 );
equal( ui.oldContent.length, 0 );
equal( ui.newHeader.length, 1 );
strictEqual( ui.newHeader[ 0 ], headers[ 0 ] );
equal( ui.newContent.size(), 1 );
equal( ui.newContent.length, 1 );
strictEqual( ui.newContent[ 0 ], content[ 0 ] );
accordion_state( element, 0, 0, 0 );
state( element, 0, 0, 0 );
});
element.accordion( "option", "active", 0 );
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );

element.one( "accordionchangestart", function( event, ui ) {
equal( ui.oldHeader.size(), 1 );
equal( ui.oldHeader.length, 1 );
strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] );
equal( ui.oldContent.size(), 1 );
equal( ui.oldContent.length, 1 );
strictEqual( ui.oldContent[ 0 ], content[ 0 ] );
equal( ui.newHeader.size(), 1 );
equal( ui.newHeader.length, 1 );
strictEqual( ui.newHeader[ 0 ], headers[ 1 ] );
equal( ui.newContent.size(), 1 );
equal( ui.newContent.length, 1 );
strictEqual( ui.newContent[ 0 ], content[ 1 ] );
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );
});
headers.eq( 1 ).click();
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );

element.one( "accordionchangestart", function( event, ui ) {
equal( ui.oldHeader.size(), 1 );
equal( ui.oldHeader.length, 1 );
strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] );
equal( ui.oldContent.size(), 1 );
equal( ui.oldContent.length, 1 );
strictEqual( ui.oldContent[ 0 ], content[ 1 ] );
equal( ui.newHeader.size(), 0 );
equal( ui.newContent.size(), 0 );
accordion_state( element, 0, 1, 0 );
equal( ui.newHeader.length, 0 );
equal( ui.newContent.length, 0 );
state( element, 0, 1, 0 );
});
element.accordion( "option", "active", false );
accordion_state( element, 0, 0, 0 );
state( element, 0, 0, 0 );
});

test( "change", function() {
expect( 20 );
var element = $( "#list1" ).accordion({
active: false,
collapsible: true
});
var headers = element.find( ".ui-accordion-header" );
var content = element.find( ".ui-accordion-content" );
active: false,
collapsible: true
}),
headers = element.find( ".ui-accordion-header" ),
content = element.find( ".ui-accordion-content" );

element.one( "accordionchange", function( event, ui ) {
equal( ui.oldHeader.size(), 0 );
equal( ui.oldContent.size(), 0 );
equal( ui.newHeader.size(), 1 );
equal( ui.oldHeader.length, 0 );
equal( ui.oldContent.length, 0 );
equal( ui.newHeader.length, 1 );
strictEqual( ui.newHeader[ 0 ], headers[ 0 ] );
equal( ui.newContent.size(), 1 );
equal( ui.newContent.length, 1 );
strictEqual( ui.newContent[ 0 ], content[ 0 ] );
});
element.accordion( "option", "active", 0 );

element.one( "accordionchange", function( event, ui ) {
equal( ui.oldHeader.size(), 1 );
equal( ui.oldHeader.length, 1 );
strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] );
equal( ui.oldContent.size(), 1 );
equal( ui.oldContent.length, 1 );
strictEqual( ui.oldContent[ 0 ], content[ 0 ] );
equal( ui.newHeader.size(), 1 );
equal( ui.newHeader.length, 1 );
strictEqual( ui.newHeader[ 0 ], headers[ 1 ] );
equal( ui.newContent.size(), 1 );
equal( ui.newContent.length, 1 );
strictEqual( ui.newContent[ 0 ], content[ 1 ] );
});
headers.eq( 1 ).click();

element.one( "accordionchange", function( event, ui ) {
equal( ui.oldHeader.size(), 1 );
equal( ui.oldHeader.length, 1 );
strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] );
equal( ui.oldContent.size(), 1 );
equal( ui.oldContent.length, 1 );
strictEqual( ui.oldContent[ 0 ], content[ 1 ] );
equal( ui.newHeader.size(), 0 );
equal( ui.newContent.size(), 0 );
equal( ui.newHeader.length, 0 );
equal( ui.newContent.length, 0 );
});
element.accordion( "option", "active", false );
});
@@ -1,6 +1,9 @@
(function( $ ) {

module( "accordion: events", accordion_setupTeardown() );
var setupTeardown = TestHelpers.accordion.setupTeardown,
state = TestHelpers.accordion.state;

module( "accordion: events", setupTeardown() );

test( "create", function() {
expect( 10 );
@@ -11,9 +14,9 @@ test( "create", function() {

element.accordion({
create: function( event, ui ) {
equal( ui.header.size(), 1, "header size" );
equal( ui.header.length, 1, "header length" );
strictEqual( ui.header[ 0 ], headers[ 0 ], "header" );
equal( ui.content.size(), 1, "content size" );
equal( ui.content.length, 1, "content length" );
strictEqual( ui.content[ 0 ], contents[ 0 ], "content" );
}
});
@@ -22,9 +25,9 @@ test( "create", function() {
element.accordion({
active: 2,
create: function( event, ui ) {
equal( ui.header.size(), 1, "header size" );
equal( ui.header.length, 1, "header length" );
strictEqual( ui.header[ 0 ], headers[ 2 ], "header" );
equal( ui.content.size(), 1, "content size" );
equal( ui.content.length, 1, "content length" );
strictEqual( ui.content[ 0 ], contents[ 2 ], "content" );
}
});
@@ -34,8 +37,8 @@ test( "create", function() {
active: false,
collapsible: true,
create: function( event, ui ) {
equal( ui.header.size(), 0, "header size" );
equal( ui.content.size(), 0, "content size" );
equal( ui.header.length, 0, "header length" );
equal( ui.content.length, 0, "content length" );
}
});
element.accordion( "destroy" );
@@ -44,106 +47,106 @@ test( "create", function() {
test( "beforeActivate", function() {
expect( 38 );
var element = $( "#list1" ).accordion({
active: false,
collapsible: true
});
var headers = element.find( ".ui-accordion-header" );
var content = element.find( ".ui-accordion-content" );
active: false,
collapsible: true
}),
headers = element.find( ".ui-accordion-header" ),
content = element.find( ".ui-accordion-content" );

element.one( "accordionbeforeactivate", function( event, ui ) {
ok( !( "originalEvent" in event ) );
equal( ui.oldHeader.size(), 0 );
equal( ui.oldContent.size(), 0 );
equal( ui.newHeader.size(), 1 );
equal( ui.oldHeader.length, 0 );
equal( ui.oldContent.length, 0 );
equal( ui.newHeader.length, 1 );
strictEqual( ui.newHeader[ 0 ], headers[ 0 ] );
equal( ui.newContent.size(), 1 );
equal( ui.newContent.length, 1 );
strictEqual( ui.newContent[ 0 ], content[ 0 ] );
accordion_state( element, 0, 0, 0 );
state( element, 0, 0, 0 );
});
element.accordion( "option", "active", 0 );
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );

element.one( "accordionbeforeactivate", function( event, ui ) {
equal( event.originalEvent.type, "click" );
equal( ui.oldHeader.size(), 1 );
equal( ui.oldHeader.length, 1 );
strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] );
equal( ui.oldContent.size(), 1 );
equal( ui.oldContent.length, 1 );
strictEqual( ui.oldContent[ 0 ], content[ 0 ] );
equal( ui.newHeader.size(), 1 );
equal( ui.newHeader.length, 1 );
strictEqual( ui.newHeader[ 0 ], headers[ 1 ] );
equal( ui.newContent.size(), 1 );
equal( ui.newContent.length, 1 );
strictEqual( ui.newContent[ 0 ], content[ 1 ] );
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );
});
headers.eq( 1 ).click();
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );

element.one( "accordionbeforeactivate", function( event, ui ) {
ok( !( "originalEvent" in event ) );
equal( ui.oldHeader.size(), 1 );
equal( ui.oldHeader.length, 1 );
strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] );
equal( ui.oldContent.size(), 1 );
equal( ui.oldContent.length, 1 );
strictEqual( ui.oldContent[ 0 ], content[ 1 ] );
equal( ui.newHeader.size(), 0 );
equal( ui.newContent.size(), 0 );
accordion_state( element, 0, 1, 0 );
equal( ui.newHeader.length, 0 );
equal( ui.newContent.length, 0 );
state( element, 0, 1, 0 );
});
element.accordion( "option", "active", false );
accordion_state( element, 0, 0, 0 );
state( element, 0, 0, 0 );

element.one( "accordionbeforeactivate", function( event, ui ) {
ok( !( "originalEvent" in event ) );
equal( ui.oldHeader.size(), 0 );
equal( ui.oldContent.size(), 0 );
equal( ui.newHeader.size(), 1 );
equal( ui.oldHeader.length, 0 );
equal( ui.oldContent.length, 0 );
equal( ui.newHeader.length, 1 );
strictEqual( ui.newHeader[ 0 ], headers[ 2 ] );
equal( ui.newContent.size(), 1 );
equal( ui.newContent.length, 1 );
strictEqual( ui.newContent[ 0 ], content[ 2 ] );
event.preventDefault();
accordion_state( element, 0, 0, 0 );
state( element, 0, 0, 0 );
});
element.accordion( "option", "active", 2 );
accordion_state( element, 0, 0, 0 );
state( element, 0, 0, 0 );
});

test( "activate", function() {
expect( 21 );
var element = $( "#list1" ).accordion({
active: false,
collapsible: true
});
var headers = element.find( ".ui-accordion-header" );
var content = element.find( ".ui-accordion-content" );
active: false,
collapsible: true
}),
headers = element.find( ".ui-accordion-header" ),
content = element.find( ".ui-accordion-content" );

element.one( "accordionactivate", function( event, ui ) {
equal( ui.oldHeader.size(), 0 );
equal( ui.oldContent.size(), 0 );
equal( ui.newHeader.size(), 1 );
equal( ui.oldHeader.length, 0 );
equal( ui.oldContent.length, 0 );
equal( ui.newHeader.length, 1 );
strictEqual( ui.newHeader[ 0 ], headers[ 0 ] );
equal( ui.newContent.size(), 1 );
equal( ui.newContent.length, 1 );
strictEqual( ui.newContent[ 0 ], content[ 0 ] );
});
element.accordion( "option", "active", 0 );

element.one( "accordionactivate", function( event, ui ) {
equal( ui.oldHeader.size(), 1 );
equal( ui.oldHeader.length, 1 );
strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] );
equal( ui.oldContent.size(), 1 );
equal( ui.oldContent.length, 1 );
strictEqual( ui.oldContent[ 0 ], content[ 0 ] );
equal( ui.newHeader.size(), 1 );
equal( ui.newHeader.length, 1 );
strictEqual( ui.newHeader[ 0 ], headers[ 1 ] );
equal( ui.newContent.size(), 1 );
equal( ui.newContent.length, 1 );
strictEqual( ui.newContent[ 0 ], content[ 1 ] );
});
headers.eq( 1 ).click();

element.one( "accordionactivate", function( event, ui ) {
equal( ui.oldHeader.size(), 1 );
equal( ui.oldHeader.length, 1 );
strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] );
equal( ui.oldContent.size(), 1 );
equal( ui.oldContent.length, 1 );
strictEqual( ui.oldContent[ 0 ], content[ 1 ] );
equal( ui.newHeader.size(), 0 );
equal( ui.newContent.size(), 0 );
equal( ui.newHeader.length, 0 );
equal( ui.newContent.length, 0 );
});
element.accordion( "option", "active", false );

@@ -1,6 +1,10 @@
(function( $ ) {

module( "accordion: methods", accordion_setupTeardown() );
var equalHeights = TestHelpers.accordion.equalHeights,
setupTeardown = TestHelpers.accordion.setupTeardown,
state = TestHelpers.accordion.state;

module( "accordion: methods", setupTeardown() );

test( "destroy", function() {
expect( 1 );
@@ -12,17 +16,17 @@ test( "destroy", function() {
test( "enable/disable", function() {
expect( 4 );
var element = $( "#list1" ).accordion();
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );
element.accordion( "disable" );
// event does nothing
element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" );
accordion_state( element, 1, 0, 0 );
state( element, 1, 0, 0 );
// option still works
element.accordion( "option", "active", 1 );
accordion_state( element, 0, 1, 0 );
state( element, 0, 1, 0 );
element.accordion( "enable" );
element.accordion( "option", "active", 2 );
accordion_state( element, 0, 0, 1 );
state( element, 0, 0, 1 );
});

test( "refresh", function() {
@@ -34,11 +38,11 @@ test( "refresh", function() {
.accordion({
heightStyle: "fill"
});
accordion_equalHeights( element, 246, 258 );
equalHeights( element, 246, 258 );

element.parent().height( 500 );
element.accordion( "refresh" );
accordion_equalHeights( element, 446, 458 );
equalHeights( element, 446, 458 );
});

}( jQuery ) );

Large diffs are not rendered by default.

@@ -1,30 +1,32 @@
function accordion_state( accordion ) {
var expected = $.makeArray( arguments ).slice( 1 );
var actual = accordion.find( ".ui-accordion-content" ).map(function() {
return $( this ).css( "display" ) === "none" ? 0 : 1;
}).get();
QUnit.push( QUnit.equiv(actual, expected), actual, expected );
}
TestHelpers.accordion = {
equalHeights: function( accordion, min, max ) {
var sizes = [];
accordion.find( ".ui-accordion-content" ).each(function() {
sizes.push( $( this ).outerHeight() );
});
ok( sizes[ 0 ] >= min && sizes[ 0 ] <= max,
"must be within " + min + " and " + max + ", was " + sizes[ 0 ] );
deepEqual( sizes[ 0 ], sizes[ 1 ] );
deepEqual( sizes[ 0 ], sizes[ 2 ] );
},

function accordion_equalHeights( accordion, min, max ) {
var sizes = [];
accordion.find( ".ui-accordion-content" ).each(function() {
sizes.push( $( this ).outerHeight() );
});
ok( sizes[ 0 ] >= min && sizes[ 0 ] <= max,
"must be within " + min + " and " + max + ", was " + sizes[ 0 ] );
deepEqual( sizes[ 0 ], sizes[ 1 ] );
deepEqual( sizes[ 0 ], sizes[ 2 ] );
}
setupTeardown: function() {
var animate = $.ui.accordion.prototype.options.animate;
return {
setup: function() {
$.ui.accordion.prototype.options.animate = false;
},
teardown: function() {
$.ui.accordion.prototype.options.animate = animate;
}
};
},

function accordion_setupTeardown() {
var animate = $.ui.accordion.prototype.options.animate;
return {
setup: function() {
$.ui.accordion.prototype.options.animate = false;
},
teardown: function() {
$.ui.accordion.prototype.options.animate = animate;
}
};
}
state: function( accordion ) {
var expected = $.makeArray( arguments ).slice( 1 ),
actual = accordion.find( ".ui-accordion-content" ).map(function() {
return $( this ).css( "display" ) === "none" ? 0 : 1;
}).get();
QUnit.push( QUnit.equiv(actual, expected), actual, expected );
}
};
@@ -4,12 +4,12 @@
<meta charset="utf-8">
<title>jQuery UI Accordion Test Suite</title>

<script src="../../../jquery-1.7.1.js"></script>
<script src="../../../jquery-1.7.2.js"></script>

<link rel="stylesheet" href="../../../external/qunit.css">
<link rel="stylesheet" href="../subsuiteRunner.css">
<link rel="stylesheet" href="../qunit-composite.css">
<script src="../../../external/qunit.js"></script>
<script src="../subsuiteRunner.js"></script>
<script src="../qunit-composite.js"></script>
<script src="../subsuite.js"></script>

<script>
@@ -4,12 +4,12 @@
<meta charset="utf-8">
<title>jQuery UI Test Suite</title>

<script src="../../jquery-1.7.1.js"></script>
<script src="../../jquery-1.7.2.js"></script>

<link rel="stylesheet" href="../../external/qunit.css">
<link rel="stylesheet" href="subsuiteRunner.css">
<link rel="stylesheet" href="qunit-composite.css">
<script src="../../external/qunit.js"></script>
<script src="subsuiteRunner.js"></script>
<script src="qunit-composite.js"></script>

<script>
(function() {
@@ -4,12 +4,12 @@
<meta charset="utf-8">
<title>jQuery UI Test Suite</title>

<script src="../../jquery-1.7.1.js"></script>
<script src="../../jquery-1.7.2.js"></script>

<link rel="stylesheet" href="../../external/qunit.css">
<link rel="stylesheet" href="subsuiteRunner.css">
<link rel="stylesheet" href="qunit-composite.css">
<script src="../../external/qunit.js"></script>
<script src="subsuiteRunner.js"></script>
<script src="qunit-composite.js"></script>

<script>
(function() {
@@ -4,12 +4,12 @@
<meta charset="utf-8">
<title>jQuery UI Autocomplete Test Suite</title>

<script src="../../../jquery-1.7.1.js"></script>
<script src="../../../jquery-1.7.2.js"></script>

<link rel="stylesheet" href="../../../external/qunit.css">
<link rel="stylesheet" href="../subsuiteRunner.css">
<link rel="stylesheet" href="../qunit-composite.css">
<script src="../../../external/qunit.js"></script>
<script src="../subsuiteRunner.js"></script>
<script src="../qunit-composite.js"></script>
<script src="../subsuite.js"></script>

<script>
@@ -5,9 +5,12 @@
<title>jQuery UI Autocomplete Test Suite</title>

<script src="../../jquery.js"></script>
<script src="../../resource_loader.js"></script>
<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>
<script>
loadResources({
TestHelpers.loadResources({
css: [ "ui.core", "ui.menu", "ui.autocomplete" ],
js: [
"ui/jquery.ui.core.js",
@@ -19,12 +22,7 @@
});
</script>

<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>

<script src="autocomplete_defaults.js"></script>
<script src="autocomplete_common.js"></script>
<script src="autocomplete_core.js"></script>
<script src="autocomplete_events.js"></script>
<script src="autocomplete_methods.js"></script>
@@ -1,9 +1,13 @@
commonWidgetTests( "autocomplete", {
TestHelpers.commonWidgetTests( "autocomplete", {
defaults: {
appendTo: "body",
autoFocus: false,
delay: 300,
disabled: false,
messages: {
noResults: "No search results.",
results: $.ui.autocomplete.prototype.options.messages.results
},
minLength: 1,
position: {
my: "left top",
@@ -123,4 +123,70 @@ test( "allow form submit on enter when menu is not active", function() {
}
})();

asyncTest( "handle race condition", function() {
expect( 3 );
var count = 0,
element = $( "#autocomplete" ).autocomplete({
source: function( request, response ) {
count++;
if ( request.term.length === 1 ) {
equal( count, 1, "request with 1 character is first" );
setTimeout(function() {
response([ "one" ]);
setTimeout( checkResults, 1 );
}, 1 );
return;
}
equal( count, 2, "request with 2 characters is second" );
response([ "two" ]);
}
});

element.autocomplete( "search", "a" );
element.autocomplete( "search", "ab" );

function checkResults() {
equal( element.autocomplete( "widget" ).find( ".ui-menu-item" ).text(), "two",
"correct results displayed" );
start();
}
});

test( "ARIA", function() {
expect( 7 );
var element = $( "#autocomplete" ).autocomplete({
source: [ "java", "javascript" ]
}),
liveRegion = element.data( "ui-autocomplete" ).liveRegion;

equal( liveRegion.text(), "", "Empty live region on create" );

element.autocomplete( "search", "j" );
equal( liveRegion.text(), "2 results are available, use up and down arrow keys to navigate.",
"Live region for multiple values" );

element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
equal( liveRegion.text(), "2 results are available, use up and down arrow keys to navigate.",
"Live region not changed on focus" );

element.one( "autocompletefocus", function( event ) {
event.preventDefault();
});
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
equal( liveRegion.text(), "javascript",
"Live region updated when default focus is prevented" );

element.autocomplete( "search", "javas" );
equal( liveRegion.text(), "1 result is available, use up and down arrow keys to navigate.",
"Live region for one value" );

element.autocomplete( "search", "z" );
equal( liveRegion.text(), "No search results.",
"Live region for no values" );

element.autocomplete( "search", "j" );
equal( liveRegion.text(), "2 results are available, use up and down arrow keys to navigate.",
"Live region for multiple values" );
});

}( jQuery ) );
@@ -123,7 +123,7 @@ asyncTest( "cancel search", function() {

asyncTest( "cancel focus", function() {
expect( 1 );
var customVal = "custom value";
var customVal = "custom value",
element = $( "#autocomplete" ).autocomplete({
delay: 0,
source: data,
@@ -4,12 +4,12 @@
<meta charset="utf-8">
<title>jQuery UI Button Test Suite</title>

<script src="../../../jquery-1.7.1.js"></script>
<script src="../../../jquery-1.7.2.js"></script>

<link rel="stylesheet" href="../../../external/qunit.css">
<link rel="stylesheet" href="../subsuiteRunner.css">
<link rel="stylesheet" href="../qunit-composite.css">
<script src="../../../external/qunit.js"></script>
<script src="../subsuiteRunner.js"></script>
<script src="../qunit-composite.js"></script>
<script src="../subsuite.js"></script>

<script>
@@ -5,9 +5,12 @@
<title>jQuery UI Button Test Suite</title>

<script src="../../jquery.js"></script>
<script src="../../resource_loader.js"></script>
<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>
<script>
loadResources({
TestHelpers.loadResources({
css: [ "ui.core", "ui.button" ],
js: [
"ui/jquery.ui.core.js",
@@ -17,13 +20,8 @@
});
</script>

<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>

<script src="button_common.js"></script>
<script src="button_core.js"></script>
<script src="button_defaults.js"></script>
<script src="button_events.js"></script>
<script src="button_methods.js"></script>
<script src="button_options.js"></script>
@@ -1,4 +1,4 @@
commonWidgetTests( "button", {
TestHelpers.commonWidgetTests( "button", {
defaults: {
disabled: null,
icons: {
@@ -8,7 +8,7 @@
module("button: core");

test("checkbox", function() {
var input = $("#check");
var input = $("#check"),
label = $("label[for=check]");
ok( input.is(":visible") );
ok( label.is(":not(.ui-button)") );
@@ -18,7 +18,7 @@ test("checkbox", function() {
});

test("radios", function() {
var inputs = $("#radio0 input");
var inputs = $("#radio0 input"),
labels = $("#radio0 label");
ok( inputs.is(":visible") );
ok( labels.is(":not(.ui-button)") );
@@ -34,7 +34,7 @@ function assert(noForm, form1, form2) {
}

test("radio groups", function() {
$(":radio").button();
$("input[type=radio]").button();
assert(":eq(0)", ":eq(1)", ":eq(2)");

// click outside of forms
@@ -51,7 +51,7 @@ test("radio groups", function() {
});

test("input type submit, don't create child elements", function() {
var input = $("#submit")
var input = $("#submit");
deepEqual( input.children().length, 0 );
input.button();
deepEqual( input.children().length, 0 );
@@ -61,21 +61,22 @@ test("buttonset", function() {
var set = $("#radio1").buttonset();
ok( set.is(".ui-buttonset") );
deepEqual( set.children(".ui-button").length, 3 );
deepEqual( set.children("input:radio.ui-helper-hidden-accessible").length, 3 );
deepEqual( set.children("input[type=radio].ui-helper-hidden-accessible").length, 3 );
ok( set.children("label:eq(0)").is(".ui-button.ui-corner-left:not(.ui-corner-all)") );
ok( set.children("label:eq(1)").is(".ui-button:not(.ui-corner-all)") );
ok( set.children("label:eq(2)").is(".ui-button.ui-corner-right:not(.ui-corner-all)") );
});

test("buttonset (rtl)", function() {
var parent = $("#radio1").parent();
var set,
parent = $("#radio1").parent();
// Set to rtl
parent.attr("dir", "rtl");

var set = $("#radio1").buttonset();
set = $("#radio1").buttonset();
ok( set.is(".ui-buttonset") );
deepEqual( set.children(".ui-button").length, 3 );
deepEqual( set.children("input:radio.ui-helper-hidden-accessible").length, 3 );
deepEqual( set.children("input[type=radio].ui-helper-hidden-accessible").length, 3 );
ok( set.children("label:eq(0)").is(".ui-button.ui-corner-right:not(.ui-corner-all)") );
ok( set.children("label:eq(1)").is(".ui-button:not(.ui-corner-all)") );
ok( set.children("label:eq(2)").is(".ui-button.ui-corner-left:not(.ui-corner-all)") );
@@ -7,8 +7,8 @@
module("button: methods");

test("destroy", function() {
var beforeHtml = $("#button").parent().html();
var afterHtml = $("#button").button().button("destroy").parent().html();
var beforeHtml = $("#button").parent().html(),
afterHtml = $("#button").button().button("destroy").parent().html();
// Opera 9 outputs role="" instead of removing the attribute like everyone else
if ($.browser.opera) {
afterHtml = afterHtml.replace(/ role=""/g, "");
@@ -53,6 +53,7 @@ test("text false with icon", function() {
test("label, default", function() {
$("#button").button();
deepEqual( $("#button").text(), "Label" );
deepEqual( $( "#button").button( "option", "label" ), "Label" );

$("#button").button("destroy");
});
@@ -62,19 +63,22 @@ test("label", function() {
label: "xxx"
});
deepEqual( $("#button").text(), "xxx" );
deepEqual( $("#button").button( "option", "label" ), "xxx" );

$("#button").button("destroy");
});

test("label default with input type submit", function() {
deepEqual( $("#submit").button().val(), "Label" );
deepEqual( $("#submit").button( "option", "label" ), "Label" );
});

test("label with input type submit", function() {
var label = $("#submit").button({
label: "xxx"
}).val();
deepEqual( label, "xxx" );
deepEqual( $("#submit").button( "option", "label" ), "xxx" );
});

test("icons", function() {
@@ -7,7 +7,7 @@ module( "button: tickets" );

test( "#5946 - buttonset should ignore buttons that are not :visible", function() {
$( "#radio01" ).next().andSelf().hide();
var set = $( "#radio0" ).buttonset({ items: ":radio:visible" });
var set = $( "#radio0" ).buttonset({ items: "input[type=radio]:visible" });
ok( set.find( "label:eq(0)" ).is( ":not(.ui-button):not(.ui-corner-left)" ) );
ok( set.find( "label:eq(1)" ).is( ".ui-button.ui-corner-left" ) );
});
@@ -30,23 +30,23 @@ test( "#6711 Checkbox/Radiobutton do not Show Focused State when using Keyboard

test( "#7092 - button creation that requires a matching label does not find label in all cases", function() {
var group = $( "<span><label for='t7092a'></label><input type='checkbox' id='t7092a'></span>" );
group.find( "input:checkbox" ).button();
group.find( "input[type=checkbox]" ).button();
ok( group.find( "label" ).is( ".ui-button" ) );

group = $( "<input type='checkbox' id='t7092b'><label for='t7092b'></label>" );
group.filter( "input:checkbox" ).button();
group.filter( "input[type=checkbox]" ).button();
ok( group.filter( "label" ).is( ".ui-button" ) );

group = $( "<span><input type='checkbox' id='t7092c'></span><label for='t7092c'></label>" );
group.find( "input:checkbox" ).button();
group.find( "input[type=checkbox]" ).button();
ok( group.filter( "label" ).is( ".ui-button" ) );

group = $( "<span><input type='checkbox' id='t7092d'></span><span><label for='t7092d'></label></span>" );
group.find( "input:checkbox" ).button();
group.find( "input[type=checkbox]" ).button();
ok( group.find( "label" ).is( ".ui-button" ) );

group = $( "<input type='checkbox' id='t7092e'><span><label for='t7092e'></label></span>" );
group.filter( "input:checkbox" ).button();
group.filter( "input[type=checkbox]" ).button();
ok( group.find( "label" ).is( ".ui-button" ) );
});

@@ -4,12 +4,12 @@
<meta charset="utf-8">
<title>jQuery UI Core Test Suite</title>

<script src="../../../jquery-1.7.1.js"></script>
<script src="../../../jquery-1.7.2.js"></script>

<link rel="stylesheet" href="../../../external/qunit.css">
<link rel="stylesheet" href="../subsuiteRunner.css">
<link rel="stylesheet" href="../qunit-composite.css">
<script src="../../../external/qunit.js"></script>
<script src="../subsuiteRunner.js"></script>
<script src="../qunit-composite.js"></script>
<script src="../subsuite.js"></script>

<script>
@@ -5,17 +5,15 @@
<title>jQuery UI Core Test Suite</title>

<script src="../../jquery.js"></script>
<script src="../../resource_loader.js"></script>
<script>
loadResources({
js: [ "ui/jquery.ui.core.js" ]
});
</script>

<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>
<script>
TestHelpers.loadResources({
js: [ "ui/jquery.ui.core.js" ]
});
</script>

<script src="core.js"></script>
<script src="selector.js"></script>
@@ -39,15 +37,13 @@ <h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">

<img src="../images/jqueryui_32x32.png" usemap="#mymap" width="10", height="10">
<img src="../images/jqueryui_32x32.png" usemap="#mymap" width="10" height="10" alt="">
<map name="mymap">
<area shape="rect" coords="0,0,1,1" id="areaCoordsNoHref">
<area shape="rect" coords="1,1,2,2" href="foo.html" id="areaCoordsHref">
<area shape="rect" coords="0,0,0,0" href="foo.html" id="areaCoordsNoSizeHref">
<area href="foo.html" id="areaNoCoordsHref">
<area shape="rect" coords="1,1,2,2" href="foo.html" id="areaCoordsHref" alt="">
<area href="foo.html" id="areaNoCoordsHref" alt="">
</map>
<map name="mymap2">
<area shape="rect" coords="1,1,2,2" href="foo.html" id="areaNoImg">
<area shape="rect" coords="1,1,2,2" href="foo.html" id="areaNoImg" alt="">
</map>

<form id="formNoTabindex"></form>
@@ -58,7 +54,7 @@ <h2 id="qunit-userAgent"></h2>
<input type="text" id="visibleAncestor-inputTypeText">
<input type="checkbox" id="visibleAncestor-inputTypeCheckbox">
<input type="radio" id="visibleAncestor-inputTypeRadio">
<input type="button" id="visibleAncestor-inputTypeButton">
<input type="button" id="visibleAncestor-inputTypeButton" value="visibleAncestor-inputTypeButton">
<input type="hidden" id="visibleAncestor-inputTypeHidden">
<button id="visibleAncestor-button">x</button>
<select id="visibleAncestor-select">
@@ -79,7 +75,7 @@ <h2 id="qunit-userAgent"></h2>
<input type="text" id="disabledElement-inputTypeText" disabled="disabled">
<input type="checkbox" id="disabledElement-inputTypeCheckbox" disabled="disabled">
<input type="radio" id="disabledElement-inputTypeRadio" disabled="disabled">
<input type="button" id="disabledElement-inputTypeButton" disabled="disabled">
<input type="button" id="disabledElement-inputTypeButton" disabled="disabled" value="disabledElement-inputTypeButton">
<input type="hidden" id="disabledElement-inputTypeHidden" disabled="disabled">
<button id="disabledElement-button" disabled="disabled"></button>
<select id="disabledElement-select" disabled="disabled"></select>
@@ -1,49 +1,48 @@
/*
* core unit tests
*/
(function($) {
(function( $ ) {

module('core - jQuery extensions');
module( "core - jQuery extensions" );

test('focus - original functionality', function() {
expect(1);
TestHelpers.testJshint( "ui.core" );

$('#inputTabindex0')
test( "focus - original functionality", function() {
expect( 1 );
$( "#inputTabindex0" )
.focus(function() {
ok(true, 'event triggered');
ok( true, "event triggered" );
})
.focus();
});

asyncTest('focus', function() {
expect(2);
$('#inputTabindex0')
asyncTest( "focus", function() {
expect( 2 );
$( "#inputTabindex0" )
.focus(function() {
ok(true, 'event triggered');
ok( true, "event triggered" );
})
.focus(500, function() {
ok(true, 'callback triggered');
$(this).unbind('focus');
.focus( 500, function() {
// prevent double focus event in IE
$( this ).unbind( "focus" );
ok( true, "callback triggered" );
start();
});
});

test('zIndex', function() {
var el = $('#zIndexAutoWithParent'),
test( "zIndex", function() {
var el = $( "#zIndexAutoWithParent" ),
parent = el.parent();
equal(el.zIndex(), 100, 'zIndex traverses up to find value');
equal(parent.zIndex(200), parent, 'zIndex setter is chainable');
equal(el.zIndex(), 200, 'zIndex setter changed zIndex');
equal( el.zIndex(), 100, "zIndex traverses up to find value" );
equal( parent.zIndex(200 ), parent, "zIndex setter is chainable" );
equal( el.zIndex(), 200, "zIndex setter changed zIndex" );

el = $('#zIndexAutoWithParentViaCSS');
equal(el.zIndex(), 0, 'zIndex traverses up to find CSS value, not found because not positioned');
el = $( "#zIndexAutoWithParentViaCSS" );
equal( el.zIndex(), 0, "zIndex traverses up to find CSS value, not found because not positioned" );

el = $('#zIndexAutoWithParentViaCSSPositioned');
equal(el.zIndex(), 100, 'zIndex traverses up to find CSS value');
el.parent().zIndex(200);
equal(el.zIndex(), 200, 'zIndex setter changed zIndex, overriding CSS');
el = $( "#zIndexAutoWithParentViaCSSPositioned" );
equal( el.zIndex(), 100, "zIndex traverses up to find CSS value" );
el.parent().zIndex( 200 );
equal( el.zIndex(), 200, "zIndex setter changed zIndex, overriding CSS" );

equal($('#zIndexAutoNoParent').zIndex(), 0, 'zIndex never explicitly set in hierarchy');
equal( $( "#zIndexAutoNoParent" ).zIndex(), 0, "zIndex never explicitly set in hierarchy" );
});

test( "innerWidth - getter", function() {
@@ -154,4 +153,4 @@ test( "outerHeight(true) - setter", function() {
equal( el.height(), 32, "height set properly when hidden" );
});

})(jQuery);
})( jQuery );
@@ -6,81 +6,81 @@
module("core - selectors");

function isFocusable(selector, msg) {
ok($(selector).is(':focusable'), msg + " - selector " + selector + " is focusable");
QUnit.push($(selector).is(':focusable'), null, null, msg + " - selector " + selector + " is focusable");
}

function isNotFocusable(selector, msg) {
ok($(selector).length && !$(selector).is(':focusable'), msg + " - selector " + selector + " is not focusable");
QUnit.push($(selector).length && !$(selector).is(':focusable'), null, null, msg + " - selector " + selector + " is not focusable");
}

function isTabbable(selector, msg) {
ok($(selector).is(':tabbable'), msg + " - selector " + selector + " is tabbable");
QUnit.push($(selector).is(':tabbable'), null, null, msg + " - selector " + selector + " is tabbable");
}

function isNotTabbable(selector, msg) {
ok($(selector).length && !$(selector).is(':tabbable'), msg + " - selector " + selector + " is not tabbable");
QUnit.push($(selector).length && !$(selector).is(':tabbable'), null, null, msg + " - selector " + selector + " is not tabbable");
}

test("data", function() {
expect(15);

var el;
function shouldHaveData(msg) {
ok(el.is(':data(test)'), msg);
}
function shouldNotHaveData(msg) {
ok(!el.is(':data(test)'), msg);
}

el = $('<div>');
shouldNotHaveData('data never set');

el = $('<div>').data('test', null);
shouldNotHaveData('data is null');

el = $('<div>').data('test', true);
shouldHaveData('data set to true');

el = $('<div>').data('test', false);
shouldNotHaveData('data set to false');

el = $('<div>').data('test', 0);
shouldNotHaveData('data set to 0');

el = $('<div>').data('test', 1);
shouldHaveData('data set to 1');

el = $('<div>').data('test', '');
shouldNotHaveData('data set to empty string');

el = $('<div>').data('test', 'foo');
shouldHaveData('data set to string');

el = $('<div>').data('test', []);
shouldHaveData('data set to empty array');

el = $('<div>').data('test', [1]);
shouldHaveData('data set to array');

el = $('<div>').data('test', {});
shouldHaveData('data set to empty object');

el = $('<div>').data('test', {foo: 'bar'});
shouldHaveData('data set to object');

el = $('<div>').data('test', new Date());
shouldHaveData('data set to date');

el = $('<div>').data('test', /test/);
shouldHaveData('data set to regexp');

el = $('<div>').data('test', function() {});
shouldHaveData('data set to function');
});

test("focusable - visible, enabled elements", function() {
expect(18);

isNotFocusable('#formNoTabindex', 'form');
isFocusable('#formTabindex', 'form with tabindex');
isFocusable('#visibleAncestor-inputTypeNone', 'input, no type');
@@ -103,7 +103,7 @@ test("focusable - visible, enabled elements", function() {

test("focusable - disabled elements", function() {
expect(9);

isNotFocusable('#disabledElement-inputTypeNone', 'input, no type');
isNotFocusable('#disabledElement-inputTypeText', 'input, type text');
isNotFocusable('#disabledElement-inputTypeCheckbox', 'input, type checkbox');
@@ -117,23 +117,23 @@ test("focusable - disabled elements", function() {

test("focusable - hidden styles", function() {
expect(8);

isNotFocusable('#displayNoneAncestor-input', 'input, display: none parent');
isNotFocusable('#displayNoneAncestor-span', 'span with tabindex, display: none parent');

isNotFocusable('#visibilityHiddenAncestor-input', 'input, visibility: hidden parent');
isNotFocusable('#visibilityHiddenAncestor-span', 'span with tabindex, visibility: hidden parent');

isNotFocusable('#displayNone-input', 'input, display: none');
isNotFocusable('#visibilityHidden-input', 'input, visibility: hidden');

isNotFocusable('#displayNone-span', 'span with tabindex, display: none');
isNotFocusable('#visibilityHidden-span', 'span with tabindex, visibility: hidden');
});

test("focusable - natively focusable with various tabindex", function() {
expect(4);

isFocusable('#inputTabindex0', 'input, tabindex 0');
isFocusable('#inputTabindex10', 'input, tabindex 10');
isFocusable('#inputTabindex-1', 'input, tabindex -1');
@@ -142,24 +142,22 @@ test("focusable - natively focusable with various tabindex", function() {

test("focusable - not natively focusable with various tabindex", function() {
expect(4);

isFocusable('#spanTabindex0', 'span, tabindex 0');
isFocusable('#spanTabindex10', 'span, tabindex 10');
isFocusable('#spanTabindex-1', 'span, tabindex -1');
isFocusable('#spanTabindex-50', 'span, tabindex -50');
});

test("focusable - area elements", function() {
isNotFocusable('#areaCoordsNoHref', 'coords but no href');
isFocusable('#areaCoordsHref', 'coords and href');
isFocusable('#areaCoordsNoSizeHref', 'coords of zero px and href');
isFocusable('#areaNoCoordsHref', 'href but no coords');
isNotFocusable('#areaNoImg', 'not associated with an image');
});

test("tabbable - visible, enabled elements", function() {
expect(18);

isNotTabbable('#formNoTabindex', 'form');
isTabbable('#formTabindex', 'form with tabindex');
isTabbable('#visibleAncestor-inputTypeNone', 'input, no type');
@@ -182,7 +180,7 @@ test("tabbable - visible, enabled elements", function() {

test("tabbable - disabled elements", function() {
expect(9);

isNotTabbable('#disabledElement-inputTypeNone', 'input, no type');
isNotTabbable('#disabledElement-inputTypeText', 'input, type text');
isNotTabbable('#disabledElement-inputTypeCheckbox', 'input, type checkbox');
@@ -196,23 +194,23 @@ test("tabbable - disabled elements", function() {

test("tabbable - hidden styles", function() {
expect(8);

isNotTabbable('#displayNoneAncestor-input', 'input, display: none parent');
isNotTabbable('#displayNoneAncestor-span', 'span with tabindex, display: none parent');

isNotTabbable('#visibilityHiddenAncestor-input', 'input, visibility: hidden parent');
isNotTabbable('#visibilityHiddenAncestor-span', 'span with tabindex, visibility: hidden parent');

isNotTabbable('#displayNone-input', 'input, display: none');
isNotTabbable('#visibilityHidden-input', 'input, visibility: hidden');

isNotTabbable('#displayNone-span', 'span with tabindex, display: none');
isNotTabbable('#visibilityHidden-span', 'span with tabindex, visibility: hidden');
});

test("tabbable - natively tabbable with various tabindex", function() {
expect(4);

isTabbable('#inputTabindex0', 'input, tabindex 0');
isTabbable('#inputTabindex10', 'input, tabindex 10');
isNotTabbable('#inputTabindex-1', 'input, tabindex -1');
@@ -221,17 +219,15 @@ test("tabbable - natively tabbable with various tabindex", function() {

test("tabbable - not natively tabbable with various tabindex", function() {
expect(4);

isTabbable('#spanTabindex0', 'span, tabindex 0');
isTabbable('#spanTabindex10', 'span, tabindex 10');
isNotTabbable('#spanTabindex-1', 'span, tabindex -1');
isNotTabbable('#spanTabindex-50', 'span, tabindex -50');
});

test("tabbable - area elements", function() {
isNotTabbable('#areaCoordsNoHref', 'coords but no href');
isTabbable('#areaCoordsHref', 'coords and href');
isTabbable('#areaCoordsNoSizeHref', 'coords of zero px and href');
isTabbable('#areaNoCoordsHref', 'href but no coords');
isNotTabbable('#areaNoImg', 'not associated with an image');
});
@@ -4,12 +4,12 @@
<meta charset="utf-8">
<title>jQuery UI Datepicker Test Suite</title>

<script src="../../../jquery-1.7.1.js"></script>
<script src="../../../jquery-1.7.2.js"></script>

<link rel="stylesheet" href="../../../external/qunit.css">
<link rel="stylesheet" href="../subsuiteRunner.css">
<link rel="stylesheet" href="../qunit-composite.css">
<script src="../../../external/qunit.js"></script>
<script src="../subsuiteRunner.js"></script>
<script src="../qunit-composite.js"></script>
<script src="../subsuite.js"></script>

<script>
@@ -5,9 +5,12 @@
<title>jQuery UI Datepicker Test Suite</title>

<script src="../../jquery.js"></script>
<script src="../../resource_loader.js"></script>
<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>
<script>
loadResources({
TestHelpers.loadResources({
css: [ "ui.core", "ui.datepicker" ],
js: [
"ui/jquery.ui.core.js",
@@ -19,11 +22,6 @@
});
</script>

<link rel="stylesheet" href="../../../external/qunit.css">
<script src="../../../external/qunit.js"></script>
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>

<script src="datepicker_core.js"></script>
<script src="datepicker_defaults.js"></script>
<script src="datepicker_events.js"></script>

Large diffs are not rendered by default.

@@ -6,4 +6,4 @@ var datepicker_defaults = {
disabled: false
};

//commonWidgetTests('datepicker', { defaults: datepicker_defaults });
//TestHelpers.commonWidgetTests('datepicker', { defaults: datepicker_defaults });
@@ -5,9 +5,9 @@

module("datepicker: events");

var selectedThis = null;
var selectedDate = null;
var selectedInst = null;
var selectedThis = null,
selectedDate = null,
selectedInst = null;

function callback(date, inst) {
selectedThis = this;
@@ -22,57 +22,58 @@ function callback2(year, month, inst) {
}

test('events', function() {
var inp = init('#inp', {onSelect: callback});
var date = new Date();
var dateStr, newMonthYear, inp2,
inp = init('#inp', {onSelect: callback}),
date = new Date();
// onSelect
inp.val('').datepicker('show').
simulate('keydown', {keyCode: $.simulate.VK_ENTER});
simulate('keydown', {keyCode: $.ui.keyCode.ENTER});
equal(selectedThis, inp[0], 'Callback selected this');
equal(selectedInst, $.data(inp[0], PROP_NAME), 'Callback selected inst');
equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),
'Callback selected date');
inp.val('').datepicker('show').
simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}).
simulate('keydown', {keyCode: $.simulate.VK_ENTER});
simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.DOWN}).
simulate('keydown', {keyCode: $.ui.keyCode.ENTER});
date.setDate(date.getDate() + 7);
equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),
'Callback selected date - ctrl+down');
inp.val('').datepicker('show').
simulate('keydown', {keyCode: $.simulate.VK_ESC});
simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE});
equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),
'Callback selected date - esc');
var dateStr = '02/04/2008';
dateStr = '02/04/2008';
inp.val(dateStr).datepicker('show').
simulate('keydown', {keyCode: $.simulate.VK_ENTER});
simulate('keydown', {keyCode: $.ui.keyCode.ENTER});
equal(dateStr, selectedDate,
'onSelect is called after enter keydown');
// onChangeMonthYear
inp.datepicker('option', {onChangeMonthYear: callback2, onSelect: null}).
val('').datepicker('show');
var newMonthYear = function(date) {
newMonthYear = function(date) {
return date.getFullYear() + '/' + (date.getMonth() + 1);
};
date = new Date();
date.setDate(1);
inp.simulate('keydown', {keyCode: $.simulate.VK_PGUP});
inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_UP});
date.setMonth(date.getMonth() - 1);
equal(selectedThis, inp[0], 'Callback change month/year this');
equal(selectedInst, $.data(inp[0], PROP_NAME), 'Callback change month/year inst');
equal(selectedDate, newMonthYear(date),
'Callback change month/year date - pgup');
inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN});
inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN});
date.setMonth(date.getMonth() + 1);
equal(selectedDate, newMonthYear(date),
'Callback change month/year date - pgdn');
inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP});
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP});
date.setFullYear(date.getFullYear() - 1);
equal(selectedDate, newMonthYear(date),
'Callback change month/year date - ctrl+pgup');
inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_HOME});
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.HOME});
date.setFullYear(date.getFullYear() + 1);
equal(selectedDate, newMonthYear(date),
'Callback change month/year date - ctrl+home');
inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN});
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN});
date.setFullYear(date.getFullYear() + 1);
equal(selectedDate, newMonthYear(date),
'Callback change month/year date - ctrl+pgdn');
@@ -84,41 +85,41 @@ test('events', function() {
// onChangeMonthYear step by 2
inp.datepicker('option', {stepMonths: 2}).
datepicker('hide').val('').datepicker('show').
simulate('keydown', {keyCode: $.simulate.VK_PGUP});
simulate('keydown', {keyCode: $.ui.keyCode.PAGE_UP});
date.setMonth(date.getMonth() - 14);
equal(selectedDate, newMonthYear(date),
'Callback change month/year by 2 date - pgup');
inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP});
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP});
date.setMonth(date.getMonth() - 12);
equal(selectedDate, newMonthYear(date),
'Callback change month/year by 2 date - ctrl+pgup');
inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN});
inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN});
date.setMonth(date.getMonth() + 2);
equal(selectedDate, newMonthYear(date),
'Callback change month/year by 2 date - pgdn');
inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN});
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN});
date.setMonth(date.getMonth() + 12);
equal(selectedDate, newMonthYear(date),
'Callback change month/year by 2 date - ctrl+pgdn');
// onClose
inp.datepicker('option', {onClose: callback, onChangeMonthYear: null, stepMonths: 1}).
val('').datepicker('show').
simulate('keydown', {keyCode: $.simulate.VK_ESC});
simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE});
equal(selectedThis, inp[0], 'Callback close this');
equal(selectedInst, $.data(inp[0], PROP_NAME), 'Callback close inst');
equal(selectedDate, '', 'Callback close date - esc');
inp.val('').datepicker('show').
simulate('keydown', {keyCode: $.simulate.VK_ENTER});
simulate('keydown', {keyCode: $.ui.keyCode.ENTER});
equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', new Date()),
'Callback close date - enter');
inp.val('02/04/2008').datepicker('show').
simulate('keydown', {keyCode: $.simulate.VK_ESC});
simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE});
equal(selectedDate, '02/04/2008', 'Callback close date - preset');
inp.val('02/04/2008').datepicker('show').
simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_END});
simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.END});
equal(selectedDate, '', 'Callback close date - ctrl+end');

var inp2 = init('#inp2');
inp2 = init('#inp2');
inp2.datepicker().datepicker('option', {onClose: callback}).datepicker('show');
inp.datepicker('show');
equal(selectedThis, inp2[0], 'Callback close this');
@@ -6,7 +6,8 @@
module("datepicker: methods");

test('destroy', function() {
var inp = init('#inp');
var inl,
inp = init('#inp');
ok(inp.is('.hasDatepicker'), 'Default - marker class set');
ok($.data(inp[0], PROP_NAME), 'Default - instance present');
ok(inp.next().is('#alt'), 'Default - button absent');
@@ -19,7 +20,7 @@ test('destroy', function() {
inp= init('#inp', {showOn: 'both'});
ok(inp.is('.hasDatepicker'), 'Button - marker class set');
ok($.data(inp[0], PROP_NAME), 'Button - instance present');
ok(inp.next().text() == '...', 'Button - button added');
ok(inp.next().text() === '...', 'Button - button added');
inp.datepicker('destroy');
inp = $('#inp');
ok(!inp.is('.hasDatepicker'), 'Button - marker class cleared');
@@ -29,7 +30,7 @@ test('destroy', function() {
inp = init('#inp', {appendText: 'Testing'});
ok(inp.is('.hasDatepicker'), 'Append - marker class set');
ok($.data(inp[0], PROP_NAME), 'Append - instance present');
ok(inp.next().text() == 'Testing', 'Append - append text added');
ok(inp.next().text() === 'Testing', 'Append - append text added');
inp.datepicker('destroy');
inp = $('#inp');
ok(!inp.is('.hasDatepicker'), 'Append - marker class cleared');
@@ -40,29 +41,30 @@ test('destroy', function() {
buttonImage: 'img/calendar.gif', appendText: 'Testing'});
ok(inp.is('.hasDatepicker'), 'Both - marker class set');
ok($.data(inp[0], PROP_NAME), 'Both - instance present');
ok(inp.next()[0].nodeName.toLowerCase() == 'img', 'Both - button added');
ok(inp.next().next().text() == 'Testing', 'Both - append text added');
ok(inp.next()[0].nodeName.toLowerCase() === 'img', 'Both - button added');
ok(inp.next().next().text() === 'Testing', 'Both - append text added');
inp.datepicker('destroy');
inp = $('#inp');
ok(!inp.is('.hasDatepicker'), 'Both - marker class cleared');
ok(!$.data(inp[0], PROP_NAME), 'Both - instance absent');
ok(inp.next().is('#alt'), 'Both - button and append text absent');
// Inline
var inl = init('#inl');
inl = init('#inl');
ok(inl.is('.hasDatepicker'), 'Inline - marker class set');
ok(inl.html() != '', 'Inline - datepicker present');
ok(inl.html() !== '', 'Inline - datepicker present');
ok($.data(inl[0], PROP_NAME), 'Inline - instance present');
ok(inl.next().length == 0 || inl.next().is('p'), 'Inline - button absent');
ok(inl.next().length === 0 || inl.next().is('p'), 'Inline - button absent');
inl.datepicker('destroy');
inl = $('#inl');
ok(!inl.is('.hasDatepicker'), 'Inline - marker class cleared');
ok(inl.html() == '', 'Inline - datepicker absent');
ok(inl.html() === '', 'Inline - datepicker absent');
ok(!$.data(inl[0], PROP_NAME), 'Inline - instance absent');
ok(inl.next().length == 0 || inl.next().is('p'), 'Inline - button absent');
ok(inl.next().length === 0 || inl.next().is('p'), 'Inline - button absent');
});

test('enableDisable', function() {
var inp = init('#inp');
var inl, dp,
inp = init('#inp');
ok(!inp.datepicker('isDisabled'), 'Enable/disable - initially marked as enabled');
ok(!inp[0].disabled, 'Enable/disable - field initially enabled');
inp.datepicker('disable');
@@ -91,19 +93,19 @@ test('enableDisable', function() {
buttonImage: 'img/calendar.gif'});
ok(!inp.datepicker('isDisabled'), 'Enable/disable image - initially marked as enabled');
ok(!inp[0].disabled, 'Enable/disable image - field initially enabled');
ok(inp.next('img').css('opacity') == 1, 'Enable/disable image - image initially enabled');
ok(parseFloat(inp.next('img').css('opacity')) === 1, 'Enable/disable image - image initially enabled');
inp.datepicker('disable');
ok(inp.datepicker('isDisabled'), 'Enable/disable image - now marked as disabled');
ok(inp[0].disabled, 'Enable/disable image - field now disabled');
ok(inp.next('img').css('opacity') != 1, 'Enable/disable image - image now disabled');
ok(parseFloat(inp.next('img').css('opacity')) !== 1, 'Enable/disable image - image now disabled');
inp.datepicker('enable');
ok(!inp.datepicker('isDisabled'), 'Enable/disable image - now marked as enabled');
ok(!inp[0].disabled, 'Enable/disable image - field now enabled');
ok(inp.next('img').css('opacity') == 1, 'Enable/disable image - image now enabled');
ok(parseFloat(inp.next('img').css('opacity')) === 1, 'Enable/disable image - image now enabled');
inp.datepicker('destroy');
// Inline
var inl = init('#inl', {changeYear: true});
var dp = $('.ui-datepicker-inline', inl);
inl = init('#inl', {changeYear: true});
dp = $('.ui-datepicker-inline', inl);
ok(!inl.datepicker('isDisabled'), 'Enable/disable inline - initially marked as enabled');
ok(!dp.children().is('.ui-state-disabled'), 'Enable/disable inline - not visually disabled initially');
ok(!dp.find('select').prop('disabled'), 'Enable/disable inline - form element enabled initially');