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