QUnit.test( 'background', function( assert ) { 'use strict'; // from Modernizr var supportsMultiBGs = ( function() { var style = document.createElement('a').style; style.cssText = 'background:url(https://),url(https://),red url(https://)'; return (/(url\s*\(.*?){3}/).test(style.background); })(); var multiBGCount = supportsMultiBGs ? 3 : 0; var done = assert.async( 14 + multiBGCount ); var imgLoad0 = imagesLoaded( '#background .tulip', { background: true }, function() { assert.ok( true, 'callback triggered on .orange-tree'); done(); }); assert.equal( imgLoad0.images.length, 1, '1 image on .images' ); imgLoad0.on( 'progress', function( instance, image, element ) { assert.ok( element.nodeName == 'DIV', 'progress; element is div'); assert.ok( image.isLoaded, 'progress; image.isLoaded'); done(); }); var imgLoad1 = imagesLoaded( '#background .thunder-cloud', { background: true }, function() { assert.ok( true, 'callback triggered on .thunder-cloud'); done(); }); assert.equal( imgLoad1.images.length, 1, '1 image on .images' ); // multiple backgrounds var imgLoad2 = imagesLoaded( '#background .multi', { background: true }, function() { assert.ok( true, 'callback triggered on .multi'); done(); }); assert.equal( imgLoad2.images.length, multiBGCount, 'correct multiple BG count on .images' ); // multiple elements var imgLoad3 = imagesLoaded( '#background .bg-box', { background: true }, function() { assert.ok( true, 'callback triggered on .bg-box'); var count = 5 + multiBGCount; assert.equal( imgLoad3.images.length, count, count + ' images on .bg-box' ); done(); }); imgLoad3.on('progress', function( instance, image/*, element */) { assert.ok( true, 'progress on .bg-box; ' + image.img.src ); assert.equal( image.isLoaded, true, 'image.isLoaded == true' ); done(); }); // background and children var imgLoad4 = imagesLoaded( '#background .gulls', { background: true } ); assert.equal( imgLoad4.images.length, 3, '3 images: 1 background and 2 ' ); imgLoad4.on( 'progress', function( instance, image ) { assert.equal( image.isLoaded, true, 'image is loaded' ); done(); }); // child background selector var imgLoad5 = imagesLoaded( '#background', { background: '.bg-box' }, function() { var count = 5 + multiBGCount; assert.equal( imgLoad5.images.length, count, count + ' images on .bg-box, with {background: .bg-box}' ); done(); }); });