133 lines
3.4 KiB
HTML
133 lines
3.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
|
|
<title>reveal.js - Test State</title>
|
|
|
|
<link rel="stylesheet" href="../dist/reveal.css" />
|
|
<link rel="stylesheet" href="../node_modules/qunit/qunit/qunit.css" />
|
|
<script src="../node_modules/qunit/qunit/qunit.js"></script>
|
|
</head>
|
|
|
|
<body style="overflow: auto">
|
|
<div id="qunit"></div>
|
|
<div id="qunit-fixture"></div>
|
|
|
|
<div class="reveal" style="display: none">
|
|
<div class="slides">
|
|
<section>No state</section>
|
|
<section id="slide2" data-state="state1">State 1</section>
|
|
<section data-state="state1">State 1</section>
|
|
<section data-state="state2">State 2</section>
|
|
<section>
|
|
<section>No state</section>
|
|
<section data-state="state1">State 1</section>
|
|
<section data-state="state3">State 3</section>
|
|
<section>No state</section>
|
|
</section>
|
|
<section>No state</section>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="../dist/reveal.js"></script>
|
|
<script>
|
|
Reveal.initialize();
|
|
|
|
QUnit.module("State");
|
|
|
|
QUnit.test("Fire events when changing slide", function (assert) {
|
|
assert.expect(2);
|
|
var state1 = assert.async();
|
|
var state2 = assert.async();
|
|
|
|
var _onState1 = function (event) {
|
|
assert.ok(true, "state1 fired");
|
|
state1();
|
|
};
|
|
|
|
var _onState2 = function (event) {
|
|
assert.ok(true, "state2 fired");
|
|
state2();
|
|
};
|
|
|
|
Reveal.on("state1", _onState1);
|
|
Reveal.on("state2", _onState2);
|
|
|
|
Reveal.slide(1);
|
|
Reveal.slide(3);
|
|
|
|
Reveal.off("state1", _onState1);
|
|
Reveal.off("state2", _onState2);
|
|
});
|
|
|
|
QUnit.test("Fire state events for vertical slides", function (assert) {
|
|
assert.expect(2);
|
|
var done = assert.async(2);
|
|
|
|
var _onState1 = function (event) {
|
|
assert.ok(true, "state1 fired");
|
|
done();
|
|
};
|
|
|
|
var _onState3 = function (event) {
|
|
assert.ok(true, "state3 fired");
|
|
done();
|
|
};
|
|
|
|
Reveal.on("state1", _onState1);
|
|
Reveal.on("state3", _onState3);
|
|
|
|
Reveal.slide(0);
|
|
Reveal.slide(4, 1);
|
|
Reveal.slide(4, 2);
|
|
|
|
Reveal.off("state1", _onState1);
|
|
Reveal.off("state3", _onState3);
|
|
});
|
|
|
|
QUnit.test("No events if state remains unchanged", function (assert) {
|
|
var stateChanges = 0;
|
|
|
|
var _onEvent = function (event) {
|
|
stateChanges += 1;
|
|
};
|
|
|
|
Reveal.on("state1", _onEvent);
|
|
|
|
Reveal.slide(0); // no state
|
|
Reveal.slide(1); // state1
|
|
Reveal.slide(2); // state1
|
|
Reveal.prev(); // state1
|
|
Reveal.next(); // state1
|
|
Reveal.slide(4, 1); // state1
|
|
Reveal.slide(0); // no state
|
|
|
|
Reveal.off("state1", _onEvent);
|
|
|
|
assert.strictEqual(
|
|
stateChanges,
|
|
1,
|
|
"no event was fired when going to slide with same state"
|
|
);
|
|
});
|
|
|
|
QUnit.test("Event order", function (assert) {
|
|
var _onEvent = function (event) {
|
|
assert.ok(
|
|
Reveal.getCurrentSlide() == document.querySelector("#slide2"),
|
|
"correct current slide immediately after state event"
|
|
);
|
|
};
|
|
|
|
Reveal.on("state1", _onEvent);
|
|
|
|
Reveal.slide(0);
|
|
Reveal.slide(1);
|
|
|
|
Reveal.off("state1", _onEvent);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|