Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
81 lines
1.9 KiB
JavaScript
Executable file
81 lines
1.9 KiB
JavaScript
Executable file
marionette('Stopwatch', function() {
|
|
'use strict';
|
|
|
|
var assert = require('assert');
|
|
var actions = new (require('./lib/actions'))();
|
|
var stopwatch = actions.stopwatch;
|
|
|
|
setup(function() {
|
|
actions.launch('stopwatch');
|
|
});
|
|
|
|
test('Stopwatch Resetting', function() {
|
|
stopwatch
|
|
.start()
|
|
.lap()
|
|
.lap()
|
|
.pause();
|
|
|
|
assert.equal(actions.stopwatch.laps.length, 3);
|
|
// During pause, the reset button should be usable.
|
|
assert.ok(actions.isButtonUsable('.stopwatch-reset'));
|
|
|
|
stopwatch.reset();
|
|
|
|
// After reset, start should be usable, reset should not.
|
|
assert.ok(!actions.isButtonUsable('.stopwatch-reset'));
|
|
assert.ok(actions.isButtonUsable('.stopwatch-start'));
|
|
|
|
// Everything should be gone.
|
|
assert.equal(stopwatch.duration, 0);
|
|
assert.equal(stopwatch.laps.length, 0);
|
|
});
|
|
|
|
test('Stopwatch Advancement', function() {
|
|
assert.equal(stopwatch.duration, 0);
|
|
|
|
stopwatch.start();
|
|
|
|
stopwatch.advanceTime(1300);
|
|
assert.ok(!actions.isButtonUsable('.stopwatch-start'));
|
|
assert.ok(stopwatch.duration > 1200);
|
|
});
|
|
|
|
test('Lap advancement and ordering', function() {
|
|
|
|
stopwatch
|
|
.start()
|
|
.lap();
|
|
|
|
assert.equal(stopwatch.laps.length, 2);
|
|
assert.ok(stopwatch.laps[0].duration > 0);
|
|
assert.ok(stopwatch.laps[1].duration > 0);
|
|
|
|
var originalLaps = stopwatch.laps;
|
|
|
|
stopwatch.advanceTime(1300);
|
|
stopwatch.lap();
|
|
|
|
var newLaps = stopwatch.laps;
|
|
|
|
// New laps should be inserted first.
|
|
assert.ok(newLaps[0].duration < newLaps[1].duration);
|
|
// Old laps should preserve their state.
|
|
assert.ok(newLaps[1].duration >= originalLaps[0].duration);
|
|
assert.equal(newLaps[2].duration, originalLaps[1].duration);
|
|
});
|
|
|
|
test('Max Laps', function() {
|
|
var MAX = 5;
|
|
stopwatch
|
|
.setMaxLaps(MAX)
|
|
.start();
|
|
|
|
for (var i = 0; i < MAX - 1; i++) {
|
|
stopwatch.lap();
|
|
}
|
|
|
|
assert.ok(!actions.isButtonUsable('.stopwatch-lap'));
|
|
});
|
|
|
|
});
|