1+ ( function ( QUnit ) {
2+ function inArray ( haystack , needle ) {
3+ for ( var i = 0 ; i < haystack . length ; i ++ ) {
4+ if ( haystack [ i ] === needle ) {
5+ return true ;
6+ }
7+ }
8+ return false ;
9+ }
10+ function check ( element , classes , stateVal , message ) {
11+ var i , result , classAttribute , elementClassArray ,
12+ classArray = classes . split ( " " ) ,
13+ missing = [ ] ,
14+ found = [ ] ;
15+
16+ if ( element . jquery && element . length !== 1 ) {
17+ throw ( "Class checks can only be performed on a single element on a collection" ) ;
18+ }
19+ element = element . jquery ? element [ 0 ] : element ;
20+ classAttribute = element . getAttribute ( "class" ) ;
21+ message = message || "Element must " + ( stateVal ? "" : "not " ) + "have classes" ;
22+ if ( classAttribute ) {
23+ elementClassArray = classAttribute . split ( " " ) ;
24+ for ( i = 0 ; i < classArray . length ; i ++ ) {
25+ if ( ! inArray ( elementClassArray , classArray [ i ] ) ) {
26+ missing . push ( classArray [ i ] ) ;
27+ } else {
28+ found . push ( classArray [ i ] ) ;
29+ }
30+ }
31+ } else {
32+ missing = classArray ;
33+ }
34+
35+ result = stateVal ? ! missing . length : ! found . length ;
36+ QUnit . push ( result , classes , result ? classes : found . join ( " " ) , message ) ;
37+ }
38+
39+ QUnit . extend ( QUnit . assert , {
40+ hasClasses : function ( element , classes , message ) {
41+ check ( element , classes , true , message ) ;
42+ } ,
43+ lacksClasses : function ( element , classes , message ) {
44+ check ( element , classes , false , message ) ;
45+ }
46+ } ) ;
47+ } ) ( QUnit ) ;
0 commit comments