Home page Forum Wiki Mail Jabber Devel NIX-FILES

AltLUG Git

Git-repositories of Altai Linux User Group

Use classes to collapse assertion groups. Fixes #269
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 26 Jun 2012 21:16:25 +0000 (23:16 +0200)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Sun, 30 Sep 2012 12:13:31 +0000 (14:13 +0200)
* Also:
 - Added needed {has, add, remove}Class implementations.
   Should be solid, improvements welcome.
 - Removed '#qunit-tests ol' selector which was interfering with the
   lower-score selector '.qunit-assert-list'. This selector is
   redundant since it is always being overridden by '#qunit-tests ol' which sets margin and padding. Reset is redundant.

qunit/qunit.css
qunit/qunit.js

index 07ce16b..552c94c 100644 (file)
@@ -20,7 +20,7 @@
 
 /** Resets */
 
-#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
        margin: 0;
        padding: 0;
 }
        color: #000;
 }
 
-#qunit-tests ol {
+.qunit-assert-list {
        margin-top: 0.5em;
        padding: 0.5em;
 
        -webkit-border-radius: 5px;
 }
 
+.qunit-collapsed {
+       display: none;
+}
+
 #qunit-tests table {
        border-collapse: collapse;
        margin-top: .2em;
index 1b309fb..87cae26 100644 (file)
@@ -180,6 +180,7 @@ Test.prototype = {
 
                if ( tests ) {
                        ol = document.createElement( "ol" );
+                       ol.className = "qunit-assert-list";
 
                        for ( i = 0; i < this.assertions.length; i++ ) {
                                assertion = this.assertions[i];
@@ -208,7 +209,7 @@ Test.prototype = {
                        }
 
                        if ( bad === 0 ) {
-                               ol.style.display = "none";
+                               addClass( ol, "qunit-collapsed" );
                        }
 
                        // `b` initialized at top of scope
@@ -217,8 +218,8 @@ Test.prototype = {
 
                        addEvent(b, "click", function() {
                                var next = b.nextSibling.nextSibling,
-                                       display = next.style.display;
-                               next.style.display = display === "none" ? "block" : "none";
+                                       collapsed = hasClass( next, "qunit-collapsed" );
+                               ( collapsed ? removeClass : addClass )( next, "qunit-collapsed" );
                        });
 
                        addEvent(b, "dblclick", function( e ) {
@@ -1359,6 +1360,26 @@ function addEvent( elem, type, fn ) {
        }
 }
 
+function hasClass( elem, name ) {
+       return (" " + elem.className + " ").indexOf(" " + name + " ") > -1;
+}
+
+function addClass( elem, name ) {
+       if ( !hasClass( elem, name ) ) {
+               elem.className += (elem.className ? " " : "") + name;
+       }
+}
+
+function removeClass( elem, name ) {
+       var set = " " + elem.className + " ";
+       // Class name may appear multiple times
+       while ( set.indexOf(" " + name + " ") > -1 ) {
+               set = set.replace(" " + name + " " , " ");
+       }
+       // If possible, trim it for prettiness, but not neccecarily
+       elem.className = window.jQuery ? jQuery.trim( set ) : ( set.trim ? set.trim() : set );
+}
+
 function id( name ) {
        return !!( typeof document !== "undefined" && document && document.getElementById ) &&
                document.getElementById( name );

Hosting is provided AltSPAHow to use Git
Please direct any questions on jabber alex.wolf@jabber.ru

Valid HTML 4.0 Transitional Valid CSS!

Designer Alexander Wolf