2015-09-14 23:45:38 +00:00
|
|
|
/*global define,describe,it,expect,beforeEach,waitsFor,jasmine,window,afterEach*/
|
|
|
|
|
|
|
|
define(
|
|
|
|
["../../src/controllers/TimerFormatter"],
|
|
|
|
function (TimerFormatter) {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
var MS_IN_SEC = 1000,
|
|
|
|
MS_IN_MIN = MS_IN_SEC * 60,
|
|
|
|
MS_IN_HR = MS_IN_MIN * 60,
|
|
|
|
MS_IN_DAY = MS_IN_HR * 24;
|
|
|
|
|
|
|
|
describe("The timer value formatter", function () {
|
|
|
|
var formatter = new TimerFormatter();
|
|
|
|
|
|
|
|
function sum(a, b) {
|
|
|
|
return a + b;
|
|
|
|
}
|
|
|
|
|
|
|
|
function toDuration(days, hours, mins, secs) {
|
|
|
|
return [
|
|
|
|
days * MS_IN_DAY,
|
|
|
|
hours * MS_IN_HR,
|
|
|
|
mins * MS_IN_MIN,
|
|
|
|
secs * MS_IN_SEC
|
|
|
|
].reduce(sum, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
function twoDigits(n) {
|
|
|
|
return n < 10 ? ('0' + n) : n;
|
|
|
|
}
|
|
|
|
|
|
|
|
it("formats short-form values (no days)", function () {
|
|
|
|
expect(formatter.short(toDuration(0, 123, 2, 3) + 123))
|
|
|
|
.toEqual("123:02:03");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("formats negative short-form values (no days)", function () {
|
|
|
|
expect(formatter.short(-toDuration(0, 123, 2, 3) + 123))
|
|
|
|
.toEqual("123:02:03");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("formats long-form values (with days)", function () {
|
|
|
|
expect(formatter.long(toDuration(0, 123, 2, 3) + 123))
|
|
|
|
.toEqual("5D 03:02:03");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("formats negative long-form values (no days)", function () {
|
|
|
|
expect(formatter.long(-toDuration(0, 123, 2, 3) + 123))
|
|
|
|
.toEqual("5D 03:02:03");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("rounds seconds down for positive durations", function () {
|
|
|
|
expect(formatter.short(MS_IN_SEC + 600))
|
|
|
|
.toEqual("00:00:01");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("rounds seconds up for negative durations", function () {
|
|
|
|
expect(formatter.short(-MS_IN_SEC - 600))
|
|
|
|
.toEqual("00:00:02");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("short-formats correctly around negative time borders", function () {
|
|
|
|
expect(formatter.short(-1)).toEqual("00:00:01");
|
|
|
|
expect(formatter.short(-1000)).toEqual("00:00:01");
|
|
|
|
expect(formatter.short(-1001)).toEqual("00:00:02");
|
|
|
|
expect(formatter.short(-2000)).toEqual("00:00:02");
|
|
|
|
expect(formatter.short(-59001)).toEqual("00:01:00");
|
|
|
|
expect(formatter.short(-60000)).toEqual("00:01:00");
|
|
|
|
|
|
|
|
expect(formatter.short(-MS_IN_HR + 999)).toEqual("01:00:00");
|
|
|
|
expect(formatter.short(-MS_IN_HR)).toEqual("01:00:00");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("differentiates between values around zero", function () {
|
|
|
|
// These are more than 1000 ms apart so should not appear
|
|
|
|
// as the same second
|
|
|
|
expect(formatter.short(-999))
|
|
|
|
.not.toEqual(formatter.short(999));
|
|
|
|
});
|
|
|
|
|
|
|
|
it("handles negative days", function () {
|
|
|
|
expect(formatter.long(-10 * MS_IN_DAY))
|
|
|
|
.toEqual("10D 00:00:00");
|
|
|
|
expect(formatter.long(-10 * MS_IN_DAY + 100))
|
|
|
|
.toEqual("10D 00:00:00");
|
|
|
|
expect(formatter.long(-10 * MS_IN_DAY + 999))
|
|
|
|
.toEqual("10D 00:00:00");
|
|
|
|
|
|
|
|
expect(formatter.short(-10 * MS_IN_DAY + 100))
|
|
|
|
.toEqual("240:00:00");
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
2015-10-23 22:41:59 +00:00
|
|
|
);
|