diff options
Diffstat (limited to 'src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion')
11 files changed, 1232 insertions, 0 deletions
diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion.html b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion.html new file mode 100644 index 0000000..ed9b1aa --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion.html @@ -0,0 +1,144 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>jQuery UI Accordion Test Suite</title> + + <script src="../../jquery.js"></script> + <script> + $.uiBackCompat = false; + </script> + <script src="../../resource_loader.js"></script> + <script> + loadResources({ + css: [ "ui.core", "ui.accordion" ], + js: [ + "ui/jquery.ui.core.js", + "ui/jquery.ui.widget.js", + "ui/jquery.ui.accordion.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 src="accordion_test_helpers.js"></script> + <script src="accordion_defaults.js"></script> + <script src="accordion_core.js"></script> + <script src="accordion_events.js"></script> + <script src="accordion_methods.js"></script> + <script src="accordion_options.js"></script> + + <script src="../swarminject.js"></script> + <style> + #list, #list1 *, #navigation, #navigation * { + margin: 0; + padding: 0; + font-size: 12px; + line-height: 15px; + } + </style> +</head> +<body> +<h1 id="qunit-header">jQuery UI Accordion Test Suite</h1> +<h2 id="qunit-banner"></h2> +<div id="qunit-testrunner-toolbar"></div> +<h2 id="qunit-userAgent"></h2> +<ol id="qunit-tests"></ol> +<div id="qunit-fixture"> + +<div id="list1" class="foo"> + <h3 class="bar"><a class="anchor">There is one obvious advantage:</a></h3> + <div class="foo"> + <p> + You've seen it coming! + <br> + Buy now and get nothing for free! + <br> + Well, at least no free beer. Perhaps a bear, if you can afford it. + </p> + </div> + <h3 class="bar"><a class="anchor">Now that you've got...</a></h3> + <div class="foo"> + <p> + your bear, you have to admit it! + <br> + No, we aren't selling bears. + </p> + <p> + We could talk about renting one. + </p> + </div> + <h3 class="bar"><a class="anchor">Rent one bear, ...</a></h3> + <div class="foo"> + <p> + get two for three beer. + </p> + <p> + And now, for something completely different. + </p> + </div> +</div> + +<div id="navigationWrapper"> + <ul id="navigation"> + <li> + <h2><a href="?p=1.1.1">Guitar</a></h2> + <ul> + <li><a href="?p=1.1.1.1">Electric</a></li> + <li><a href="?p=1.1.1.2">Acoustic</a></li> + <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> + </li> + <li> + <h2><a href="?p=1.1.2"><span>Bass</span></a></h2> + <ul> + <li><a href="?p=1.1.2.1">Electric</a></li> + <li><a href="?p=1.1.2.2">Acoustic</a></li> + <li><a href="?p=1.1.2.3">Amps</a></li> + <li><a href="?p=1.1.2.4">Effects</a></li> + <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> + </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> + </li> + </ul> +</div> + +<dl id="accordion-dl"> + <dt> + <a href="#">Accordion Header 1</a> + </dt> + <dd> + Accordion Content 1 + </dd> + <dt> + <a href="#">Accordion Header 2</a> + </dt> + <dd> + Accordion Content 2 + </dd> + <dt> + <a href="#">Accordion Header 3</a> + </dt> + <dd> + Accordion Content 3 + </dd> +</dl> + +</div> +</body> +</html> diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_core.js b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_core.js new file mode 100644 index 0000000..3442cad --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_core.js @@ -0,0 +1,55 @@ +(function( $ ) { + +module( "accordion: core", accordion_setupTeardown() ); + +$.each( { div: "#list1", ul: "#navigation", dl: "#accordion-dl" }, function( type, selector ) { + test( "markup structure: " + type, function() { + expect( 4 ); + var element = $( selector ).accordion(); + ok( element.hasClass( "ui-accordion" ), "main element is .ui-accordion" ); + equal( element.find( ".ui-accordion-header" ).length, 3, + ".ui-accordion-header elements exist, correct number" ); + equal( element.find( ".ui-accordion-content" ).length, 3, + ".ui-accordion-content elements exist, correct number" ); + deepEqual( element.find( ".ui-accordion-header" ).next().get(), + element.find( ".ui-accordion-content" ).get(), + "content panels come immediately after headers" ); + }); +}); + +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 ); +}); + +test( "ui-accordion-heading class added to headers anchor", function() { + expect( 1 ); + var element = $( "#list1" ).accordion(); + var anchors = element.find( ".ui-accordion-heading" ); + equal( anchors.length, 3 ); +}); + +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" ); + 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" ); +}); + +}( jQuery ) ); diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_defaults.js b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_defaults.js new file mode 100644 index 0000000..9aa58e6 --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_defaults.js @@ -0,0 +1,20 @@ +commonWidgetTests( "accordion", { + defaults: { + active: 0, + animated: "slide", + collapsible: false, + disabled: false, + event: "click", + header: "> li > :first-child,> :not(li):even", + heightStyle: "auto", + icons: { + "activeHeader": "ui-icon-triangle-1-s", + "header": "ui-icon-triangle-1-e" + }, + + // callbacks + activate: null, + beforeActivate: null, + create: null + } +}); diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_defaults_deprecated.js b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_defaults_deprecated.js new file mode 100644 index 0000000..3f45a1f --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_defaults_deprecated.js @@ -0,0 +1,28 @@ +commonWidgetTests( "accordion", { + defaults: { + active: 0, + animated: "slide", + autoHeight: true, + clearStyle: false, + collapsible: false, + disabled: false, + event: "click", + fillSpace: false, + header: "> li > :first-child,> :not(li):even", + heightStyle: null, + icons: { + "activeHeader": null, + "header": "ui-icon-triangle-1-e", + "headerSelected": "ui-icon-triangle-1-s" + }, + navigation: false, + navigationFilter: function() {}, + + // callbacks + activate: null, + beforeActivate: null, + change: null, + changestart: null, + create: null + } +}); diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_deprecated.html b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_deprecated.html new file mode 100644 index 0000000..f730d80 --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_deprecated.html @@ -0,0 +1,142 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>jQuery UI Accordion Test Suite</title> + + <script src="../../jquery.js"></script> + <script src="../../resource_loader.js"></script> + <script> + loadResources({ + css: [ "ui.core", "ui.accordion" ], + js: [ + "ui/jquery.ui.core.js", + "ui/jquery.ui.widget.js", + "ui/jquery.ui.accordion.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 src="accordion_test_helpers.js"></script> + <script src="accordion_defaults_deprecated.js"></script> + <script src="accordion_core.js"></script> + <script src="accordion_events.js"></script> + <script src="accordion_methods.js"></script> + <script src="accordion_options.js"></script> + <script src="accordion_deprecated.js"></script> + + <script src="../swarminject.js"></script> + <style> + #list, #list1 *, #navigation, #navigation * { + margin: 0; + padding: 0; + font-size: 12px; + line-height: 15px; + } + </style> +</head> +<body> +<h1 id="qunit-header">jQuery UI Accordion Test Suite</h1> +<h2 id="qunit-banner"></h2> +<div id="qunit-testrunner-toolbar"></div> +<h2 id="qunit-userAgent"></h2> +<ol id="qunit-tests"></ol> +<div id="qunit-fixture"> + +<div id="list1" class="foo"> + <h3 class="bar"><a class="anchor">There is one obvious advantage:</a></h3> + <div class="foo"> + <p> + You've seen it coming! + <br> + Buy now and get nothing for free! + <br> + Well, at least no free beer. Perhaps a bear, if you can afford it. + </p> + </div> + <h3 class="bar"><a class="anchor">Now that you've got...</a></h3> + <div class="foo"> + <p> + your bear, you have to admit it! + <br> + No, we aren't selling bears. + </p> + <p> + We could talk about renting one. + </p> + </div> + <h3 class="bar"><a class="anchor">Rent one bear, ...</a></h3> + <div class="foo"> + <p> + get two for three beer. + </p> + <p> + And now, for something completely different. + </p> + </div> +</div> + +<div id="navigationWrapper"> + <ul id="navigation"> + <li> + <h2><a href="?p=1.1.1">Guitar</a></h2> + <ul> + <li><a href="?p=1.1.1.1">Electric</a></li> + <li><a href="?p=1.1.1.2">Acoustic</a></li> + <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> + </li> + <li> + <h2><a href="?p=1.1.2"><span>Bass</span></a></h2> + <ul> + <li><a href="?p=1.1.2.1">Electric</a></li> + <li><a href="?p=1.1.2.2">Acoustic</a></li> + <li><a href="?p=1.1.2.3">Amps</a></li> + <li><a href="?p=1.1.2.4">Effects</a></li> + <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> + </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> + </li> + </ul> +</div> + +<dl id="accordion-dl"> + <dt> + <a href="#">Accordion Header 1</a> + </dt> + <dd> + Accordion Content 1 + </dd> + <dt> + <a href="#">Accordion Header 2</a> + </dt> + <dd> + Accordion Content 2 + </dd> + <dt> + <a href="#">Accordion Header 3</a> + </dt> + <dd> + Accordion Content 3 + </dd> +</dl> + +</div> +</body> +</html> diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_deprecated.js b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_deprecated.js new file mode 100644 index 0000000..eec034e --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_deprecated.js @@ -0,0 +1,338 @@ +(function( $ ) { + +module( "accordion (deprecated): expanded active option, activate method", accordion_setupTeardown() ); + +test( "activate, numeric", function() { + expect( 5 ); + var element = $( "#list1" ).accordion({ active: 1 }); + accordion_state( element, 0, 1, 0 ); + element.accordion( "activate", 2 ); + accordion_state( element, 0, 0, 1 ); + element.accordion( "activate", 0 ); + accordion_state( element, 1, 0, 0 ); + element.accordion( "activate", 1 ); + accordion_state( element, 0, 1, 0 ); + element.accordion( "activate", 2 ); + accordion_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 ); + element.accordion( "activate", 0 ); + accordion_state( element, 1, 0, 0 ); + element.accordion( "activate", -1 ); + accordion_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 ); + element.accordion( "activate", false ); + accordion_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 ); + element.accordion( "activate", false ); + accordion_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 ); + element.accordion( "activate", ":first" ); + accordion_state( element, 1, 0, 0 ); + element.accordion( "activate", ":eq(1)" ); + accordion_state( element, 0, 1, 0 ); + element.accordion( "activate", ":last" ); + accordion_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 ); + element.accordion( "activate", $( "#list1 h3:first" ) ); + accordion_state( element, 1, 0, 0 ); + element.accordion( "activate", $( "#list1 h3" )[ 1 ] ); + accordion_state( element, 0, 1, 0 ); +}); + +test( "{ active: Selector }", function() { + expect( 2 ); + var element = $("#list1").accordion({ + active: "h3:last" + }); + accordion_state( element, 0, 0, 1 ); + element.accordion( "option", "active", "h3:eq(1)" ); + accordion_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 ); + element.accordion( "option", "active", $( "#list1 h3:eq(1)" )[ 0 ] ); + accordion_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 ); + element.accordion( "option", "active", $( "#list1 h3:eq(1)" ) ); + accordion_state( element, 0, 1, 0 ); +}); + + + + + +module( "accordion (deprecated) - height options", accordion_setupTeardown() ); + +test( "{ autoHeight: true }, default", function() { + expect( 3 ); + accordion_equalHeights( $( "#navigation" ).accordion({ autoHeight: true }), 95, 130 ); +}); + +test( "{ autoHeight: false }", function() { + expect( 3 ); + var element = $( "#navigation" ).accordion({ autoHeight: false }); + var sizes = []; + element.find( ".ui-accordion-content" ).each(function() { + sizes.push( $(this).height() ); + }); + ok( sizes[0] >= 70 && sizes[0] <= 105, "was " + sizes[0] ); + ok( sizes[1] >= 98 && sizes[1] <= 126, "was " + sizes[1] ); + ok( sizes[2] >= 42 && sizes[2] <= 54, "was " + sizes[2] ); +}); + +test( "{ fillSpace: true }", function() { + expect( 3 ); + $( "#navigationWrapper" ).height( 500 ); + var element = $( "#navigation" ).accordion({ fillSpace: true }); + accordion_equalHeights( element, 446, 458 ); +}); + +test( "{ fillSapce: true } with sibling", function() { + expect( 3 ); + $( "#navigationWrapper" ).height( 500 ); + $( "<p>Lorem Ipsum</p>" ) + .css({ + height: 50, + marginTop: 20, + marginBottom: 30 + }) + .prependTo( "#navigationWrapper" ); + var element = $( "#navigation" ).accordion({ fillSpace: true }); + accordion_equalHeights( element , 346, 358); +}); + +test( "{ fillSpace: true } with multiple siblings", function() { + expect( 3 ); + $( "#navigationWrapper" ).height( 500 ); + $( "<p>Lorem Ipsum</p>" ) + .css({ + height: 50, + marginTop: 20, + marginBottom: 30 + }) + .prependTo( "#navigationWrapper" ); + $( "<p>Lorem Ipsum</p>" ) + .css({ + height: 50, + marginTop: 20, + marginBottom: 30, + position: "absolute" + }) + .prependTo( "#navigationWrapper" ); + $( "<p>Lorem Ipsum</p>" ) + .css({ + height: 25, + marginTop: 10, + marginBottom: 15 + }) + .prependTo( "#navigationWrapper" ); + var element = $( "#navigation" ).accordion({ fillSpace: true }); + accordion_equalHeights( element, 296, 308 ); +}); + + + + + +module( "accordion (deprecated) - icons", accordion_setupTeardown() ); + +test( "icons, headerSelected", function() { + expect( 3 ); + var element = $( "#list1" ).accordion({ + icons: { headerSelected: "a1", header: "h1" } + }); + ok( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ).hasClass( "a1" ) ); + element.accordion( "option", "icons", { headerSelected: "a2", header: "h2" } ); + ok( !element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ).hasClass( "a1" ) ); + ok( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ).hasClass( "a2" ) ); +}); + + + + + +module( "accordion (deprecated) - resize", accordion_setupTeardown() ); + +test( "resize", function() { + expect( 6 ); + var element = $( "#navigation" ) + .parent() + .height( 300 ) + .end() + .accordion({ + heightStyle: "fill" + }); + accordion_equalHeights( element, 246, 258 ); + + element.parent().height( 500 ); + element.accordion( "resize" ); + accordion_equalHeights( element, 446, 458 ); +}); + + + + + +module( "accordion (deprecated) - navigation", accordion_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 ); + } + }); + equal( element.accordion( "option", "active" ), 2 ); + accordion_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 ); + } + }); + equal( element.accordion( "option", "active" ), 2 ); + accordion_state( element, 0, 0, 1 ); +}); + + + + + +module( "accordion (deprecated) - changestart/change events", accordion_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" ); + + element.one( "accordionchangestart", function( event, ui ) { + equal( ui.oldHeader.size(), 0 ); + equal( ui.oldContent.size(), 0 ); + equal( ui.newHeader.size(), 1 ); + strictEqual( ui.newHeader[ 0 ], headers[ 0 ] ); + equal( ui.newContent.size(), 1 ); + strictEqual( ui.newContent[ 0 ], content[ 0 ] ); + accordion_state( element, 0, 0, 0 ); + }); + element.accordion( "option", "active", 0 ); + accordion_state( element, 1, 0, 0 ); + + element.one( "accordionchangestart", function( event, ui ) { + equal( ui.oldHeader.size(), 1 ); + strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] ); + equal( ui.oldContent.size(), 1 ); + strictEqual( ui.oldContent[ 0 ], content[ 0 ] ); + equal( ui.newHeader.size(), 1 ); + strictEqual( ui.newHeader[ 0 ], headers[ 1 ] ); + equal( ui.newContent.size(), 1 ); + strictEqual( ui.newContent[ 0 ], content[ 1 ] ); + accordion_state( element, 1, 0, 0 ); + }); + headers.eq( 1 ).click(); + accordion_state( element, 0, 1, 0 ); + + element.one( "accordionchangestart", function( event, ui ) { + equal( ui.oldHeader.size(), 1 ); + strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] ); + equal( ui.oldContent.size(), 1 ); + strictEqual( ui.oldContent[ 0 ], content[ 1 ] ); + equal( ui.newHeader.size(), 0 ); + equal( ui.newContent.size(), 0 ); + accordion_state( element, 0, 1, 0 ); + }); + element.accordion( "option", "active", false ); + accordion_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" ); + + element.one( "accordionchange", function( event, ui ) { + equal( ui.oldHeader.size(), 0 ); + equal( ui.oldContent.size(), 0 ); + equal( ui.newHeader.size(), 1 ); + strictEqual( ui.newHeader[ 0 ], headers[ 0 ] ); + equal( ui.newContent.size(), 1 ); + strictEqual( ui.newContent[ 0 ], content[ 0 ] ); + }); + element.accordion( "option", "active", 0 ); + + element.one( "accordionchange", function( event, ui ) { + equal( ui.oldHeader.size(), 1 ); + strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] ); + equal( ui.oldContent.size(), 1 ); + strictEqual( ui.oldContent[ 0 ], content[ 0 ] ); + equal( ui.newHeader.size(), 1 ); + strictEqual( ui.newHeader[ 0 ], headers[ 1 ] ); + equal( ui.newContent.size(), 1 ); + strictEqual( ui.newContent[ 0 ], content[ 1 ] ); + }); + headers.eq( 1 ).click(); + + element.one( "accordionchange", function( event, ui ) { + equal( ui.oldHeader.size(), 1 ); + strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] ); + equal( ui.oldContent.size(), 1 ); + strictEqual( ui.oldContent[ 0 ], content[ 1 ] ); + equal( ui.newHeader.size(), 0 ); + equal( ui.newContent.size(), 0 ); + }); + element.accordion( "option", "active", false ); +}); + +})(jQuery); diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_events.js b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_events.js new file mode 100644 index 0000000..12acf2a --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_events.js @@ -0,0 +1,122 @@ +(function( $ ) { + +module( "accordion: events", accordion_setupTeardown() ); + +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" ); + + 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 ); + strictEqual( ui.newHeader[ 0 ], headers[ 0 ] ); + equal( ui.newContent.size(), 1 ); + strictEqual( ui.newContent[ 0 ], content[ 0 ] ); + accordion_state( element, 0, 0, 0 ); + }); + element.accordion( "option", "active", 0 ); + accordion_state( element, 1, 0, 0 ); + + element.one( "accordionbeforeactivate", function( event, ui ) { + equal( event.originalEvent.type, "click" ); + equal( ui.oldHeader.size(), 1 ); + strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] ); + equal( ui.oldContent.size(), 1 ); + strictEqual( ui.oldContent[ 0 ], content[ 0 ] ); + equal( ui.newHeader.size(), 1 ); + strictEqual( ui.newHeader[ 0 ], headers[ 1 ] ); + equal( ui.newContent.size(), 1 ); + strictEqual( ui.newContent[ 0 ], content[ 1 ] ); + accordion_state( element, 1, 0, 0 ); + }); + headers.eq( 1 ).click(); + accordion_state( element, 0, 1, 0 ); + + element.one( "accordionbeforeactivate", function( event, ui ) { + ok( !( "originalEvent" in event ) ); + equal( ui.oldHeader.size(), 1 ); + strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] ); + equal( ui.oldContent.size(), 1 ); + strictEqual( ui.oldContent[ 0 ], content[ 1 ] ); + equal( ui.newHeader.size(), 0 ); + equal( ui.newContent.size(), 0 ); + accordion_state( element, 0, 1, 0 ); + }); + element.accordion( "option", "active", false ); + accordion_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 ); + strictEqual( ui.newHeader[ 0 ], headers[ 2 ] ); + equal( ui.newContent.size(), 1 ); + strictEqual( ui.newContent[ 0 ], content[ 2 ] ); + event.preventDefault(); + accordion_state( element, 0, 0, 0 ); + }); + element.accordion( "option", "active", 2 ); + accordion_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" ); + + element.one( "accordionactivate", function( event, ui ) { + equal( ui.oldHeader.size(), 0 ); + equal( ui.oldContent.size(), 0 ); + equal( ui.newHeader.size(), 1 ); + strictEqual( ui.newHeader[ 0 ], headers[ 0 ] ); + equal( ui.newContent.size(), 1 ); + strictEqual( ui.newContent[ 0 ], content[ 0 ] ); + }); + element.accordion( "option", "active", 0 ); + + element.one( "accordionactivate", function( event, ui ) { + equal( ui.oldHeader.size(), 1 ); + strictEqual( ui.oldHeader[ 0 ], headers[ 0 ] ); + equal( ui.oldContent.size(), 1 ); + strictEqual( ui.oldContent[ 0 ], content[ 0 ] ); + equal( ui.newHeader.size(), 1 ); + strictEqual( ui.newHeader[ 0 ], headers[ 1 ] ); + equal( ui.newContent.size(), 1 ); + strictEqual( ui.newContent[ 0 ], content[ 1 ] ); + }); + headers.eq( 1 ).click(); + + element.one( "accordionactivate", function( event, ui ) { + equal( ui.oldHeader.size(), 1 ); + strictEqual( ui.oldHeader[ 0 ], headers[ 1 ] ); + equal( ui.oldContent.size(), 1 ); + strictEqual( ui.oldContent[ 0 ], content[ 1 ] ); + equal( ui.newHeader.size(), 0 ); + equal( ui.newContent.size(), 0 ); + }); + element.accordion( "option", "active", false ); + + // prevent activation + element.one( "accordionbeforeactivate", function( event ) { + ok( true ); + event.preventDefault(); + }); + element.one( "accordionactivate", function() { + ok( false ); + }); + element.accordion( "option", "active", 1 ); +}); + +}( jQuery ) ); diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_methods.js b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_methods.js new file mode 100644 index 0000000..9f61647 --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_methods.js @@ -0,0 +1,40 @@ +(function( $ ) { + +module( "accordion: methods", accordion_setupTeardown() ); + +test( "destroy", function() { + expect( 1 ); + domEqual( "#list1", function() { + $( "#list1" ).accordion().accordion( "destroy" ); + }); +}); + +test( "enable/disable", function() { + expect( 3 ); + var element = $( "#list1" ).accordion(); + accordion_state( element, 1, 0, 0 ); + element.accordion( "disable" ); + element.accordion( "option", "active", 1 ); + accordion_state( element, 1, 0, 0 ); + element.accordion( "enable" ); + element.accordion( "option", "active", 1 ); + accordion_state( element, 0, 1, 0 ); +}); + +test( "refresh", function() { + expect( 6 ); + var element = $( "#navigation" ) + .parent() + .height( 300 ) + .end() + .accordion({ + heightStyle: "fill" + }); + accordion_equalHeights( element, 246, 258 ); + + element.parent().height( 500 ); + element.accordion( "refresh" ); + accordion_equalHeights( element, 446, 458 ); +}); + +}( jQuery ) ); diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_options.js b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_options.js new file mode 100644 index 0000000..a60bb27 --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_options.js @@ -0,0 +1,283 @@ +(function( $ ) { + +module( "accordion: options", accordion_setupTeardown() ); + +test( "{ active: default }", function() { + expect( 2 ); + var element = $( "#list1" ).accordion(); + equal( element.accordion( "option", "active" ), 0 ); + accordion_state( element, 1, 0, 0 ); +}); + +test( "{ active: false }", function() { + expect( 7 ); + var element = $( "#list1" ).accordion({ + active: false, + collapsible: true + }); + accordion_state( element, 0, 0, 0 ); + equal( element.find( ".ui-accordion-header.ui-state-active" ).size(), 0, "no headers selected" ); + equal( element.accordion( "option", "active" ), false ); + + element.accordion( "option", "collapsible", false ); + accordion_state( element, 1, 0, 0 ); + equal( element.accordion( "option", "active" ), 0 ); + + element.accordion( "destroy" ); + element.accordion({ + active: false + }); + accordion_state( element, 1, 0, 0 ); + strictEqual( element.accordion( "option", "active" ), 0 ); +}); + +test( "{ active: Number }", function() { + expect( 8 ); + var element = $( "#list1" ).accordion({ + active: 2 + }); + equal( element.accordion( "option", "active" ), 2 ); + accordion_state( element, 0, 0, 1 ); + + element.accordion( "option", "active", 0 ); + equal( element.accordion( "option", "active" ), 0 ); + accordion_state( element, 1, 0, 0 ); + + element.find( ".ui-accordion-header" ).eq( 1 ).click(); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); + + element.accordion( "option", "active", 10 ); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); +}); + +if ( $.uiBackCompat === false ) { + test( "{ active: -Number }", function() { + expect( 8 ); + var element = $( "#list1" ).accordion({ + active: -1 + }); + equal( element.accordion( "option", "active" ), 2 ); + accordion_state( element, 0, 0, 1 ); + + element.accordion( "option", "active", -2 ); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); + + element.accordion( "option", "active", -10 ); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); + + element.accordion( "option", "active", -3 ); + equal( element.accordion( "option", "active" ), 0 ); + accordion_state( element, 1, 0, 0 ); + }); +} + +// TODO: add animation tests + +test( "{ collapsible: false }", function() { + expect( 4 ); + var element = $( "#list1" ).accordion({ + active: 1 + }); + element.accordion( "option", "active", false ); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); + + element.find( ".ui-accordion-header" ).eq( 1 ).click(); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); +}); + +test( "{ collapsible: true }", function() { + expect( 6 ); + var element = $( "#list1" ).accordion({ + active: 1, + collapsible: true + }); + + element.accordion( "option", "active", false ); + equal( element.accordion( "option", "active" ), false ); + accordion_state( element, 0, 0, 0 ); + + element.accordion( "option", "active", 1 ); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); + + element.find( ".ui-accordion-header" ).eq( 1 ).click(); + equal( element.accordion( "option", "active" ), false ); + accordion_state( element, 0, 0, 0 ); +}); + +test( "{ event: null }", function() { + expect( 5 ); + var element = $( "#list1" ).accordion({ + event: null + }); + accordion_state( element, 1, 0, 0 ); + + element.accordion( "option", "active", 1 ); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); + + // ensure default click handler isn't bound + element.find( ".ui-accordion-header" ).eq( 2 ).click(); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); +}); + +test( "{ event: custom }", function() { + expect( 11 ); + var element = $( "#list1" ).accordion({ + event: "custom1 custom2" + }); + accordion_state( element, 1, 0, 0 ); + + element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" ); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); + + // ensure default click handler isn't bound + element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "click" ); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); + + element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "custom2" ); + equal( element.accordion( "option", "active" ), 2 ); + accordion_state( element, 0, 0, 1 ); + + element.accordion( "option", "event", "custom3" ); + + // ensure old event handlers are unbound + element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" ); + equal( element.accordion( "option", "active" ), 2 ); + accordion_state( element, 0, 0, 1 ); + + element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom3" ); + equal( element.accordion( "option", "active" ), 1 ); + accordion_state( element, 0, 1, 0 ); +}); + +test( "{ header: default }", function() { + expect( 2 ); + // default: > li > :first-child,> :not(li):even + // > :not(li):even + accordion_state( $( "#list1" ).accordion(), 1, 0, 0); + // > li > :first-child + accordion_state( $( "#navigation" ).accordion(), 1, 0, 0); +}); + +test( "{ header: custom }", function() { + expect( 6 ); + var element = $( "#navigationWrapper" ).accordion({ + header: "h2" + }); + element.find( "h2" ).each(function() { + ok( $( this ).hasClass( "ui-accordion-header" ) ); + }); + equal( element.find( ".ui-accordion-header" ).length, 3 ); + accordion_state( element, 1, 0, 0 ); + element.accordion( "option", "active", 2 ); + accordion_state( element, 0, 0, 1 ); +}); + +test( "{ heightStyle: 'auto' }", function() { + expect( 3 ); + var element = $( "#navigation" ).accordion({ heightStyle: "auto" }); + accordion_equalHeights( element, 95, 130 ); +}); + +test( "{ heightStyle: 'content' }", function() { + expect( 3 ); + var element = $( "#navigation" ).accordion({ heightStyle: "content" }); + var sizes = element.find( ".ui-accordion-content" ).map(function() { + return $( this ).height(); + }).get(); + ok( sizes[ 0 ] >= 70 && sizes[ 0 ] <= 105, "was " + sizes[ 0 ] ); + ok( sizes[ 1 ] >= 98 && sizes[ 1 ] <= 126, "was " + sizes[ 1 ] ); + ok( sizes[ 2 ] >= 42 && sizes[ 2 ] <= 54, "was " + sizes[ 2 ] ); +}); + +test( "{ heightStyle: 'fill' }", function() { + expect( 3 ); + $( "#navigationWrapper" ).height( 500 ); + var element = $( "#navigation" ).accordion({ heightStyle: "fill" }); + accordion_equalHeights( element, 446, 458 ); +}); + +test( "{ heightStyle: 'fill' } with sibling", function() { + expect( 3 ); + $( "#navigationWrapper" ).height( 500 ); + $( "<p>Lorem Ipsum</p>" ) + .css({ + height: 50, + marginTop: 20, + marginBottom: 30 + }) + .prependTo( "#navigationWrapper" ); + var element = $( "#navigation" ).accordion({ heightStyle: "fill" }); + accordion_equalHeights( element , 346, 358); +}); + +test( "{ heightStyle: 'fill' } with multiple siblings", function() { + expect( 3 ); + $( "#navigationWrapper" ).height( 500 ); + $( "<p>Lorem Ipsum</p>" ) + .css({ + height: 50, + marginTop: 20, + marginBottom: 30 + }) + .prependTo( "#navigationWrapper" ); + $( "<p>Lorem Ipsum</p>" ) + .css({ + height: 50, + marginTop: 20, + marginBottom: 30, + position: "absolute" + }) + .prependTo( "#navigationWrapper" ); + $( "<p>Lorem Ipsum</p>" ) + .css({ + height: 25, + marginTop: 10, + marginBottom: 15 + }) + .prependTo( "#navigationWrapper" ); + var element = $( "#navigation" ).accordion({ heightStyle: "fill" }); + accordion_equalHeights( element, 296, 308 ); +}); + +test( "{ icons: false }", function() { + expect( 8 ); + var element = $( "#list1" ); + function icons( on ) { + deepEqual( element.find( "span.ui-icon").length, on ? 3 : 0 ); + deepEqual( element.hasClass( "ui-accordion-icons" ), on ); + } + element.accordion(); + icons( true ); + element.accordion( "destroy" ).accordion({ + icons: false + }); + icons( false ); + element.accordion( "option", "icons", { header: "foo", activeHeader: "bar" } ); + icons( true ); + element.accordion( "option", "icons", false ); + icons( false ); +}); + +test( "{ icons: hash }", function() { + expect( 3 ); + var element = $( "#list1" ).accordion({ + icons: { activeHeader: "a1", header: "h1" } + }); + ok( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ).hasClass( "a1" ) ); + element.accordion( "option", "icons", { activeHeader: "a2", header: "h2" } ); + ok( !element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ).hasClass( "a1" ) ); + ok( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ).hasClass( "a2" ) ); +}); + +}( jQuery ) ); diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_test_helpers.js b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_test_helpers.js new file mode 100644 index 0000000..66d60a4 --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/accordion_test_helpers.js @@ -0,0 +1,30 @@ +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(); + deepEqual( actual, expected ); +} + +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 ] ); +} + +function accordion_setupTeardown() { + var animated = $.ui.accordion.prototype.options.animated; + return { + setup: function() { + $.ui.accordion.prototype.options.animated = false; + }, + teardown: function() { + $.ui.accordion.prototype.options.animated = animated; + } + }; +} diff --git a/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/all.html b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/all.html new file mode 100644 index 0000000..0d600e1 --- /dev/null +++ b/src/main/webapp/jquery-ui-1.9pre/tests/unit/accordion/all.html @@ -0,0 +1,30 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>jQuery UI Accordion Test Suite</title> + + <script src="../../../jquery-1.7.1.js"></script> + + <link rel="stylesheet" href="../../../external/qunit.css"> + <link rel="stylesheet" href="../subsuiteRunner.css"> + <script src="../../../external/qunit.js"></script> + <script src="../subsuiteRunner.js"></script> + <script src="../subsuite.js"></script> + + <script> + testAllVersions( "accordion" ); + </script> +</head> +<body> + +<h1 id="qunit-header">jQuery UI Accordion Test Suite</h1> +<h2 id="qunit-banner"></h2> +<div id="qunit-testrunner-toolbar"></div> +<h2 id="qunit-userAgent"></h2> +<ol id="qunit-tests"></ol> +<div id="qunit-fixture"> + +</div> +</body> +</html> |