github.com/mweagle/Sparta@v1.15.0/docs_source/static/presentations/reveal.js-3.9.2/test/test.js (about) 1 // These tests expect the DOM to contain a presentation 2 // with the following slide structure: 3 // 4 // 1 5 // 2 - Three sub-slides 6 // 3 - Three fragment elements 7 // 3 - Two fragments with same data-fragment-index 8 // 4 9 10 Reveal.addEventListener( 'ready', function() { 11 12 // --------------------------------------------------------------- 13 // DOM TESTS 14 15 QUnit.module( 'DOM' ); 16 17 QUnit.test( 'Initial slides classes', function( assert ) { 18 var horizontalSlides = document.querySelectorAll( '.reveal .slides>section' ) 19 20 assert.strictEqual( document.querySelectorAll( '.reveal .slides section.past' ).length, 0, 'no .past slides' ); 21 assert.strictEqual( document.querySelectorAll( '.reveal .slides section.present' ).length, 1, 'one .present slide' ); 22 assert.strictEqual( document.querySelectorAll( '.reveal .slides>section.future' ).length, horizontalSlides.length - 1, 'remaining horizontal slides are .future' ); 23 24 assert.strictEqual( document.querySelectorAll( '.reveal .slides section.stack' ).length, 2, 'two .stacks' ); 25 26 assert.ok( document.querySelectorAll( '.reveal .slides section.stack' )[0].querySelectorAll( '.future' ).length > 0, 'vertical slides are given .future' ); 27 }); 28 29 // --------------------------------------------------------------- 30 // API TESTS 31 32 QUnit.module( 'API' ); 33 34 QUnit.test( 'Reveal.isReady', function( assert ) { 35 assert.strictEqual( Reveal.isReady(), true, 'returns true' ); 36 }); 37 38 QUnit.test( 'Reveal.isOverview', function( assert ) { 39 assert.strictEqual( Reveal.isOverview(), false, 'false by default' ); 40 41 Reveal.toggleOverview(); 42 assert.strictEqual( Reveal.isOverview(), true, 'true after toggling on' ); 43 44 Reveal.toggleOverview(); 45 assert.strictEqual( Reveal.isOverview(), false, 'false after toggling off' ); 46 }); 47 48 QUnit.test( 'Reveal.isPaused', function( assert ) { 49 assert.strictEqual( Reveal.isPaused(), false, 'false by default' ); 50 51 Reveal.togglePause(); 52 assert.strictEqual( Reveal.isPaused(), true, 'true after pausing' ); 53 54 Reveal.togglePause(); 55 assert.strictEqual( Reveal.isPaused(), false, 'false after resuming' ); 56 }); 57 58 QUnit.test( 'Reveal.isFirstSlide', function( assert ) { 59 Reveal.slide( 0, 0 ); 60 assert.strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 0, 0 )' ); 61 62 Reveal.slide( 1, 0 ); 63 assert.strictEqual( Reveal.isFirstSlide(), false, 'false after Reveal.slide( 1, 0 )' ); 64 65 Reveal.slide( 0, 0 ); 66 assert.strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 0, 0 )' ); 67 }); 68 69 QUnit.test( 'Reveal.isFirstSlide after vertical slide', function( assert ) { 70 Reveal.slide( 1, 1 ); 71 Reveal.slide( 0, 0 ); 72 assert.strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 1, 1 ) and then Reveal.slide( 0, 0 )' ); 73 }); 74 75 QUnit.test( 'Reveal.isLastSlide', function( assert ) { 76 Reveal.slide( 0, 0 ); 77 assert.strictEqual( Reveal.isLastSlide(), false, 'false after Reveal.slide( 0, 0 )' ); 78 79 var lastSlideIndex = document.querySelectorAll( '.reveal .slides>section' ).length - 1; 80 81 Reveal.slide( lastSlideIndex, 0 ); 82 assert.strictEqual( Reveal.isLastSlide(), true, 'true after Reveal.slide( '+ lastSlideIndex +', 0 )' ); 83 84 Reveal.slide( 0, 0 ); 85 assert.strictEqual( Reveal.isLastSlide(), false, 'false after Reveal.slide( 0, 0 )' ); 86 }); 87 88 QUnit.test( 'Reveal.isLastSlide after vertical slide', function( assert ) { 89 var lastSlideIndex = document.querySelectorAll( '.reveal .slides>section' ).length - 1; 90 91 Reveal.slide( 1, 1 ); 92 Reveal.slide( lastSlideIndex ); 93 assert.strictEqual( Reveal.isLastSlide(), true, 'true after Reveal.slide( 1, 1 ) and then Reveal.slide( '+ lastSlideIndex +', 0 )' ); 94 }); 95 96 QUnit.test( 'Reveal.getTotalSlides', function( assert ) { 97 assert.strictEqual( Reveal.getTotalSlides(), 8, 'eight slides in total' ); 98 }); 99 100 QUnit.test( 'Reveal.getIndices', function( assert ) { 101 var indices = Reveal.getIndices(); 102 103 assert.ok( indices.hasOwnProperty( 'h' ), 'h exists' ); 104 assert.ok( indices.hasOwnProperty( 'v' ), 'v exists' ); 105 assert.ok( indices.hasOwnProperty( 'f' ), 'f exists' ); 106 107 Reveal.slide( 1, 0 ); 108 assert.strictEqual( Reveal.getIndices().h, 1, 'h 1' ); 109 assert.strictEqual( Reveal.getIndices().v, 0, 'v 0' ); 110 111 Reveal.slide( 1, 2 ); 112 assert.strictEqual( Reveal.getIndices().h, 1, 'h 1' ); 113 assert.strictEqual( Reveal.getIndices().v, 2, 'v 2' ); 114 115 Reveal.slide( 0, 0 ); 116 assert.strictEqual( Reveal.getIndices().h, 0, 'h 0' ); 117 assert.strictEqual( Reveal.getIndices().v, 0, 'v 0' ); 118 }); 119 120 QUnit.test( 'Reveal.getSlide', function( assert ) { 121 assert.equal( Reveal.getSlide( 0 ), document.querySelector( '.reveal .slides>section:first-child' ), 'gets correct first slide' ); 122 assert.equal( Reveal.getSlide( 1 ), document.querySelector( '.reveal .slides>section:nth-child(2)' ), 'no v index returns stack' ); 123 assert.equal( Reveal.getSlide( 1, 0 ), document.querySelector( '.reveal .slides>section:nth-child(2)>section:nth-child(1)' ), 'v index 0 returns first vertical child' ); 124 assert.equal( Reveal.getSlide( 1, 1 ), document.querySelector( '.reveal .slides>section:nth-child(2)>section:nth-child(2)' ), 'v index 1 returns second vertical child' ); 125 126 assert.strictEqual( Reveal.getSlide( 100 ), undefined, 'undefined when out of horizontal bounds' ); 127 assert.strictEqual( Reveal.getSlide( 1, 100 ), undefined, 'undefined when out of vertical bounds' ); 128 }); 129 130 QUnit.test( 'Reveal.getSlideBackground', function( assert ) { 131 assert.equal( Reveal.getSlideBackground( 0 ), document.querySelector( '.reveal .backgrounds>.slide-background:first-child' ), 'gets correct first background' ); 132 assert.equal( Reveal.getSlideBackground( 1 ), document.querySelector( '.reveal .backgrounds>.slide-background:nth-child(2)' ), 'no v index returns stack' ); 133 assert.equal( Reveal.getSlideBackground( 1, 0 ), document.querySelector( '.reveal .backgrounds>.slide-background:nth-child(2) .slide-background:nth-child(2)' ), 'v index 0 returns first vertical child' ); 134 assert.equal( Reveal.getSlideBackground( 1, 1 ), document.querySelector( '.reveal .backgrounds>.slide-background:nth-child(2) .slide-background:nth-child(3)' ), 'v index 1 returns second vertical child' ); 135 136 assert.strictEqual( Reveal.getSlideBackground( 100 ), undefined, 'undefined when out of horizontal bounds' ); 137 assert.strictEqual( Reveal.getSlideBackground( 1, 100 ), undefined, 'undefined when out of vertical bounds' ); 138 }); 139 140 QUnit.test( 'Reveal.getSlideNotes', function( assert ) { 141 Reveal.slide( 0, 0 ); 142 assert.ok( Reveal.getSlideNotes() === 'speaker notes 1', 'works with <aside class="notes">' ); 143 144 Reveal.slide( 1, 0 ); 145 assert.ok( Reveal.getSlideNotes() === 'speaker notes 2', 'works with <section data-notes="">' ); 146 }); 147 148 QUnit.test( 'Reveal.getPreviousSlide/getCurrentSlide', function( assert ) { 149 Reveal.slide( 0, 0 ); 150 Reveal.slide( 1, 0 ); 151 152 var firstSlide = document.querySelector( '.reveal .slides>section:first-child' ); 153 var secondSlide = document.querySelector( '.reveal .slides>section:nth-child(2)>section' ); 154 155 assert.equal( Reveal.getPreviousSlide(), firstSlide, 'previous is slide #0' ); 156 assert.equal( Reveal.getCurrentSlide(), secondSlide, 'current is slide #1' ); 157 }); 158 159 QUnit.test( 'Reveal.getProgress', function( assert ) { 160 Reveal.slide( 0, 0 ); 161 assert.strictEqual( Reveal.getProgress(), 0, 'progress is 0 on first slide' ); 162 163 var lastSlideIndex = document.querySelectorAll( '.reveal .slides>section' ).length - 1; 164 165 Reveal.slide( lastSlideIndex, 0 ); 166 assert.strictEqual( Reveal.getProgress(), 1, 'progress is 1 on last slide' ); 167 }); 168 169 QUnit.test( 'Reveal.getScale', function( assert ) { 170 assert.ok( typeof Reveal.getScale() === 'number', 'has scale' ); 171 }); 172 173 QUnit.test( 'Reveal.getConfig', function( assert ) { 174 assert.ok( typeof Reveal.getConfig() === 'object', 'has config' ); 175 }); 176 177 QUnit.test( 'Reveal.configure', function( assert ) { 178 assert.strictEqual( Reveal.getConfig().loop, false, '"loop" is false to start with' ); 179 180 Reveal.configure({ loop: true }); 181 assert.strictEqual( Reveal.getConfig().loop, true, '"loop" has changed to true' ); 182 183 Reveal.configure({ loop: false, customTestValue: 1 }); 184 assert.strictEqual( Reveal.getConfig().customTestValue, 1, 'supports custom values' ); 185 }); 186 187 QUnit.test( 'Reveal.availableRoutes', function( assert ) { 188 Reveal.slide( 0, 0 ); 189 assert.deepEqual( Reveal.availableRoutes(), { left: false, up: false, down: false, right: true }, 'correct for first slide' ); 190 191 Reveal.slide( 1, 0 ); 192 assert.deepEqual( Reveal.availableRoutes(), { left: true, up: false, down: true, right: true }, 'correct for vertical slide' ); 193 }); 194 195 QUnit.test( 'Reveal.next', function( assert ) { 196 Reveal.slide( 0, 0 ); 197 198 // Step through vertical child slides 199 Reveal.next(); 200 assert.deepEqual( Reveal.getIndices(), { h: 1, v: 0, f: undefined } ); 201 202 Reveal.next(); 203 assert.deepEqual( Reveal.getIndices(), { h: 1, v: 1, f: undefined } ); 204 205 Reveal.next(); 206 assert.deepEqual( Reveal.getIndices(), { h: 1, v: 2, f: undefined } ); 207 208 // Step through fragments 209 Reveal.next(); 210 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: -1 } ); 211 212 Reveal.next(); 213 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 } ); 214 215 Reveal.next(); 216 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 } ); 217 218 Reveal.next(); 219 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 } ); 220 }); 221 222 QUnit.test( 'Reveal.next at end', function( assert ) { 223 Reveal.slide( 3 ); 224 225 // We're at the end, this should have no effect 226 Reveal.next(); 227 assert.deepEqual( Reveal.getIndices(), { h: 3, v: 0, f: undefined } ); 228 229 Reveal.next(); 230 assert.deepEqual( Reveal.getIndices(), { h: 3, v: 0, f: undefined } ); 231 }); 232 233 234 // --------------------------------------------------------------- 235 // FRAGMENT TESTS 236 237 QUnit.module( 'Fragments' ); 238 239 QUnit.test( 'Sliding to fragments', function( assert ) { 240 Reveal.slide( 2, 0, -1 ); 241 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: -1 }, 'Reveal.slide( 2, 0, -1 )' ); 242 243 Reveal.slide( 2, 0, 0 ); 244 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'Reveal.slide( 2, 0, 0 )' ); 245 246 Reveal.slide( 2, 0, 2 ); 247 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'Reveal.slide( 2, 0, 2 )' ); 248 249 Reveal.slide( 2, 0, 1 ); 250 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'Reveal.slide( 2, 0, 1 )' ); 251 }); 252 253 QUnit.test( 'data-fragment is set on slide <section>', function( assert ) { 254 Reveal.slide( 2, 0, -1 ); 255 assert.deepEqual( Reveal.getCurrentSlide().getAttribute( 'data-fragment' ), '-1' ); 256 257 Reveal.slide( 2, 0, 2 ); 258 assert.deepEqual( Reveal.getCurrentSlide().getAttribute( 'data-fragment' ), '2' ); 259 260 Reveal.slide( 2, 0, 0 ); 261 assert.deepEqual( Reveal.getCurrentSlide().getAttribute( 'data-fragment' ), '0' ); 262 263 var fragmentSlide = Reveal.getCurrentSlide(); 264 265 Reveal.slide( 3, 0 ); 266 assert.deepEqual( fragmentSlide.getAttribute( 'data-fragment' ), '0', 'data-fragment persists when jumping to another slide' ); 267 }); 268 269 QUnit.test( 'Hiding all fragments', function( assert ) { 270 var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(1)' ); 271 272 Reveal.slide( 2, 0, 0 ); 273 assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 1, 'one fragment visible when index is 0' ); 274 275 Reveal.slide( 2, 0, -1 ); 276 assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 0, 'no fragments visible when index is -1' ); 277 }); 278 279 QUnit.test( 'Current fragment', function( assert ) { 280 var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(1)' ); 281 var lastFragmentIndex = [].slice.call( fragmentSlide.querySelectorAll( '.fragment' ) ).pop().getAttribute( 'data-fragment-index' ); 282 283 Reveal.slide( 2, 0 ); 284 assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 0, 'no current fragment at index -1' ); 285 286 Reveal.slide( 2, 0, 0 ); 287 assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 1, 'one current fragment at index 0' ); 288 289 Reveal.slide( 1, 0, 0 ); 290 assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 0, 'no current fragment when navigating to previous slide' ); 291 292 Reveal.slide( 3, 0, 0 ); 293 assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 0, 'no current fragment when navigating to next slide' ); 294 295 Reveal.slide( 2, 1, -1 ); 296 Reveal.prev(); 297 assert.strictEqual( fragmentSlide.querySelector( '.fragment.current-fragment' ).getAttribute( 'data-fragment-index' ), lastFragmentIndex, 'last fragment is current fragment when returning from future slide' ); 298 }); 299 300 QUnit.test( 'Stepping through fragments', function( assert ) { 301 Reveal.slide( 2, 0, -1 ); 302 303 // forwards: 304 305 Reveal.next(); 306 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'next() goes to next fragment' ); 307 308 Reveal.right(); 309 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'right() goes to next fragment' ); 310 311 Reveal.down(); 312 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'down() goes to next fragment' ); 313 314 Reveal.down(); // moves to f #3 315 316 // backwards: 317 318 Reveal.prev(); 319 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'prev() goes to prev fragment' ); 320 321 Reveal.left(); 322 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'left() goes to prev fragment' ); 323 324 Reveal.up(); 325 assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'up() goes to prev fragment' ); 326 }); 327 328 QUnit.test( 'Stepping past fragments', function( assert ) { 329 var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(1)' ); 330 331 Reveal.slide( 0, 0, 0 ); 332 assert.equal( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 0, 'no fragments visible when on previous slide' ); 333 334 Reveal.slide( 3, 0, 0 ); 335 assert.equal( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 3, 'all fragments visible when on future slide' ); 336 }); 337 338 QUnit.test( 'Fragment indices', function( assert ) { 339 var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(2)' ); 340 341 Reveal.slide( 3, 0, 0 ); 342 assert.equal( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 2, 'both fragments of same index are shown' ); 343 344 // This slide has three fragments, first one is index 0, second and third have index 1 345 Reveal.slide( 2, 2, 0 ); 346 assert.equal( Reveal.getIndices().f, 0, 'returns correct index for first fragment' ); 347 348 Reveal.slide( 2, 2, 1 ); 349 assert.equal( Reveal.getIndices().f, 1, 'returns correct index for two fragments with same index' ); 350 }); 351 352 QUnit.test( 'Index generation', function( assert ) { 353 var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(1)' ); 354 355 // These have no indices defined to start with 356 assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[0].getAttribute( 'data-fragment-index' ), '0' ); 357 assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[1].getAttribute( 'data-fragment-index' ), '1' ); 358 assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[2].getAttribute( 'data-fragment-index' ), '2' ); 359 }); 360 361 QUnit.test( 'Index normalization', function( assert ) { 362 var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(3)' ); 363 364 // These start out as 1-4-4 and should normalize to 0-1-1 365 assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[0].getAttribute( 'data-fragment-index' ), '0' ); 366 assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[1].getAttribute( 'data-fragment-index' ), '1' ); 367 assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[2].getAttribute( 'data-fragment-index' ), '1' ); 368 }); 369 370 QUnit.test( 'fragmentshown event', function( assert ) { 371 assert.expect( 2 ); 372 var done = assert.async( 2 ); 373 374 var _onEvent = function( event ) { 375 assert.ok( true, 'event fired' ); 376 done(); 377 } 378 379 Reveal.addEventListener( 'fragmentshown', _onEvent ); 380 381 Reveal.slide( 2, 0 ); 382 Reveal.slide( 2, 0 ); // should do nothing 383 Reveal.slide( 2, 0, 0 ); // should do nothing 384 Reveal.next(); 385 Reveal.next(); 386 Reveal.prev(); // shouldn't fire fragmentshown 387 388 Reveal.removeEventListener( 'fragmentshown', _onEvent ); 389 }); 390 391 QUnit.test( 'fragmenthidden event', function( assert ) { 392 assert.expect( 2 ); 393 var done = assert.async( 2 ); 394 395 var _onEvent = function( event ) { 396 assert.ok( true, 'event fired' ); 397 done(); 398 } 399 400 Reveal.addEventListener( 'fragmenthidden', _onEvent ); 401 402 Reveal.slide( 2, 0, 2 ); 403 Reveal.slide( 2, 0, 2 ); // should do nothing 404 Reveal.prev(); 405 Reveal.prev(); 406 Reveal.next(); // shouldn't fire fragmenthidden 407 408 Reveal.removeEventListener( 'fragmenthidden', _onEvent ); 409 }); 410 411 412 // --------------------------------------------------------------- 413 // AUTO-SLIDE TESTS 414 415 QUnit.module( 'Auto Sliding' ); 416 417 QUnit.test( 'Reveal.isAutoSliding', function( assert ) { 418 assert.strictEqual( Reveal.isAutoSliding(), false, 'false by default' ); 419 420 Reveal.configure({ autoSlide: 10000 }); 421 assert.strictEqual( Reveal.isAutoSliding(), true, 'true after starting' ); 422 423 Reveal.configure({ autoSlide: 0 }); 424 assert.strictEqual( Reveal.isAutoSliding(), false, 'false after setting to 0' ); 425 }); 426 427 QUnit.test( 'Reveal.toggleAutoSlide', function( assert ) { 428 Reveal.configure({ autoSlide: 10000 }); 429 430 Reveal.toggleAutoSlide(); 431 assert.strictEqual( Reveal.isAutoSliding(), false, 'false after first toggle' ); 432 Reveal.toggleAutoSlide(); 433 assert.strictEqual( Reveal.isAutoSliding(), true, 'true after second toggle' ); 434 435 Reveal.configure({ autoSlide: 0 }); 436 }); 437 438 QUnit.test( 'autoslidepaused', function( assert ) { 439 assert.expect( 1 ); 440 var done = assert.async(); 441 442 var _onEvent = function( event ) { 443 assert.ok( true, 'event fired' ); 444 done(); 445 } 446 447 Reveal.addEventListener( 'autoslidepaused', _onEvent ); 448 Reveal.configure({ autoSlide: 10000 }); 449 Reveal.toggleAutoSlide(); 450 451 // cleanup 452 Reveal.configure({ autoSlide: 0 }); 453 Reveal.removeEventListener( 'autoslidepaused', _onEvent ); 454 }); 455 456 QUnit.test( 'autoslideresumed', function( assert ) { 457 assert.expect( 1 ); 458 var done = assert.async(); 459 460 var _onEvent = function( event ) { 461 assert.ok( true, 'event fired' ); 462 done(); 463 } 464 465 Reveal.addEventListener( 'autoslideresumed', _onEvent ); 466 Reveal.configure({ autoSlide: 10000 }); 467 Reveal.toggleAutoSlide(); 468 Reveal.toggleAutoSlide(); 469 470 // cleanup 471 Reveal.configure({ autoSlide: 0 }); 472 Reveal.removeEventListener( 'autoslideresumed', _onEvent ); 473 }); 474 475 476 // --------------------------------------------------------------- 477 // CONFIGURATION VALUES 478 479 QUnit.module( 'Configuration' ); 480 481 QUnit.test( 'Controls', function( assert ) { 482 var controlsElement = document.querySelector( '.reveal>.controls' ); 483 484 Reveal.configure({ controls: false }); 485 assert.equal( controlsElement.style.display, 'none', 'controls are hidden' ); 486 487 Reveal.configure({ controls: true }); 488 assert.equal( controlsElement.style.display, 'block', 'controls are visible' ); 489 }); 490 491 QUnit.test( 'Progress', function( assert ) { 492 var progressElement = document.querySelector( '.reveal>.progress' ); 493 494 Reveal.configure({ progress: false }); 495 assert.equal( progressElement.style.display, 'none', 'progress are hidden' ); 496 497 Reveal.configure({ progress: true }); 498 assert.equal( progressElement.style.display, 'block', 'progress are visible' ); 499 }); 500 501 QUnit.test( 'Loop', function( assert ) { 502 Reveal.configure({ loop: true }); 503 504 Reveal.slide( 0, 0 ); 505 506 Reveal.left(); 507 assert.notEqual( Reveal.getIndices().h, 0, 'looped from start to end' ); 508 509 Reveal.right(); 510 assert.equal( Reveal.getIndices().h, 0, 'looped from end to start' ); 511 512 Reveal.configure({ loop: false }); 513 }); 514 515 516 // --------------------------------------------------------------- 517 // LAZY-LOADING TESTS 518 519 QUnit.module( 'Lazy-Loading' ); 520 521 QUnit.test( 'img with data-src', function( assert ) { 522 assert.strictEqual( document.querySelectorAll( '.reveal section img[src]' ).length, 1, 'Image source has been set' ); 523 }); 524 525 QUnit.test( 'video with data-src', function( assert ) { 526 assert.strictEqual( document.querySelectorAll( '.reveal section video[src]' ).length, 1, 'Video source has been set' ); 527 }); 528 529 QUnit.test( 'audio with data-src', function( assert ) { 530 assert.strictEqual( document.querySelectorAll( '.reveal section audio[src]' ).length, 1, 'Audio source has been set' ); 531 }); 532 533 QUnit.test( 'iframe with data-src', function( assert ) { 534 Reveal.slide( 0, 0 ); 535 assert.strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 0, 'Iframe source is not set' ); 536 Reveal.slide( 2, 1 ); 537 assert.strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 1, 'Iframe source is set' ); 538 Reveal.slide( 2, 2 ); 539 assert.strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 0, 'Iframe source is not set' ); 540 }); 541 542 QUnit.test( 'background images', function( assert ) { 543 var imageSource1 = Reveal.getSlide( 0 ).getAttribute( 'data-background-image' ); 544 var imageSource2 = Reveal.getSlide( 1, 0 ).getAttribute( 'data-background' ); 545 546 // check that the images are applied to the background elements 547 assert.ok( Reveal.getSlideBackground( 0 ).querySelector( '.slide-background-content' ).style.backgroundImage.indexOf( imageSource1 ) !== -1, 'data-background-image worked' ); 548 assert.ok( Reveal.getSlideBackground( 1, 0 ).querySelector( '.slide-background-content' ).style.backgroundImage.indexOf( imageSource2 ) !== -1, 'data-background worked' ); 549 }); 550 551 552 // --------------------------------------------------------------- 553 // EVENT TESTS 554 555 QUnit.module( 'Events' ); 556 557 QUnit.test( 'slidechanged', function( assert ) { 558 assert.expect( 3 ); 559 var done = assert.async( 3 ); 560 561 var _onEvent = function( event ) { 562 assert.ok( true, 'event fired' ); 563 done(); 564 } 565 566 Reveal.addEventListener( 'slidechanged', _onEvent ); 567 568 Reveal.slide( 1, 0 ); // should trigger 569 Reveal.slide( 1, 0 ); // should do nothing 570 Reveal.next(); // should trigger 571 Reveal.slide( 3, 0 ); // should trigger 572 Reveal.next(); // should do nothing 573 574 Reveal.removeEventListener( 'slidechanged', _onEvent ); 575 576 }); 577 578 QUnit.test( 'paused', function( assert ) { 579 assert.expect( 1 ); 580 var done = assert.async(); 581 582 var _onEvent = function( event ) { 583 assert.ok( true, 'event fired' ); 584 done(); 585 } 586 587 Reveal.addEventListener( 'paused', _onEvent ); 588 589 Reveal.togglePause(); 590 Reveal.togglePause(); 591 592 Reveal.removeEventListener( 'paused', _onEvent ); 593 }); 594 595 QUnit.test( 'resumed', function( assert ) { 596 assert.expect( 1 ); 597 var done = assert.async(); 598 599 var _onEvent = function( event ) { 600 assert.ok( true, 'event fired' ); 601 done(); 602 } 603 604 Reveal.addEventListener( 'resumed', _onEvent ); 605 606 Reveal.togglePause(); 607 Reveal.togglePause(); 608 609 Reveal.removeEventListener( 'resumed', _onEvent ); 610 }); 611 612 } ); 613 614 Reveal.initialize();