Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
358
gaia/apps/calendar/test/unit/common/timespan_test.js
Executable file
358
gaia/apps/calendar/test/unit/common/timespan_test.js
Executable file
|
|
@ -0,0 +1,358 @@
|
|||
define(function(require) {
|
||||
'use strict';
|
||||
|
||||
var Calc = require('common/calc');
|
||||
var Timespan = require('common/timespan');
|
||||
|
||||
suite('timespan', function() {
|
||||
var subject;
|
||||
var startDate;
|
||||
var endDate;
|
||||
|
||||
setup(function() {
|
||||
startDate = new Date(2012, 1, 1);
|
||||
endDate = new Date(2012, 12, 1);
|
||||
|
||||
subject = new Timespan(
|
||||
startDate,
|
||||
endDate
|
||||
);
|
||||
});
|
||||
|
||||
test('initializer', function() {
|
||||
assert.equal(
|
||||
subject.start,
|
||||
startDate.valueOf()
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
subject.end,
|
||||
endDate.valueOf()
|
||||
);
|
||||
});
|
||||
|
||||
test('#isEqual', function() {
|
||||
var span = new Timespan(
|
||||
new Date(2012, 1, 1),
|
||||
new Date(2012, 1, 5)
|
||||
);
|
||||
|
||||
var eqlSpan = new Timespan(
|
||||
new Date(2012, 1, 1),
|
||||
new Date(2012, 1, 5)
|
||||
);
|
||||
|
||||
var notEqualSpan = new Timespan(
|
||||
new Date(2012, 1, 1),
|
||||
new Date(2012, 1, 6)
|
||||
);
|
||||
|
||||
assert.isTrue(span.isEqual(eqlSpan));
|
||||
assert.isFalse(span.isEqual(notEqualSpan));
|
||||
});
|
||||
|
||||
test('#daysBetween', function() {
|
||||
var range = new Timespan(
|
||||
new Date(2012, 1, 1),
|
||||
new Date(2012, 1, 3)
|
||||
);
|
||||
|
||||
var dates = Calc.daysBetween(range);
|
||||
assert.deepEqual(
|
||||
dates[0],
|
||||
new Date(2012, 1, 1)
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
dates[1],
|
||||
new Date(2012, 1, 2)
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
dates[2],
|
||||
new Date(2012, 1, 3)
|
||||
);
|
||||
});
|
||||
|
||||
suite('#trimOverlap', function() {
|
||||
var before;
|
||||
var subject;
|
||||
var none;
|
||||
|
||||
setup(function() {
|
||||
none = new Timespan(
|
||||
new Date(2012, 5, 1),
|
||||
new Date(2012, 5, 15)
|
||||
);
|
||||
|
||||
before = new Timespan(
|
||||
// July 1
|
||||
new Date(2012, 6, 1),
|
||||
// Aug 4th
|
||||
new Date(2012, 7, 4)
|
||||
);
|
||||
|
||||
subject = new Timespan(
|
||||
// July 29th
|
||||
new Date(2012, 6, 29),
|
||||
// Aug 31
|
||||
new Date(2012, 7, 31)
|
||||
);
|
||||
});
|
||||
|
||||
test('middle', function() {
|
||||
var long = new Timespan(
|
||||
new Date(2012, 0, 1),
|
||||
new Date(2012, 0, 31)
|
||||
);
|
||||
|
||||
var short = new Timespan(
|
||||
new Date(2012, 0, 5),
|
||||
new Date(2012, 0, 10)
|
||||
);
|
||||
|
||||
assert.isNull(
|
||||
long.trimOverlap(short),
|
||||
'should return null subject contains given'
|
||||
);
|
||||
|
||||
assert.isNull(
|
||||
short.trimOverlap(long),
|
||||
'should return null when given contains subject'
|
||||
);
|
||||
});
|
||||
|
||||
test('no overlap', function() {
|
||||
var out = before.trimOverlap(none);
|
||||
assert.deepEqual(out, none);
|
||||
});
|
||||
|
||||
test('overlaps && input.end > subject.start', function() {
|
||||
var output = subject.trimOverlap(
|
||||
before
|
||||
);
|
||||
|
||||
var start = new Date(2012, 6, 1);
|
||||
var end = new Date(
|
||||
2012, 6, 29
|
||||
);
|
||||
|
||||
end.setMilliseconds(-1);
|
||||
|
||||
var expected = new Timespan(
|
||||
start, end
|
||||
);
|
||||
|
||||
assert.deepEqual(output, expected);
|
||||
});
|
||||
|
||||
test('overlaps && subject.end > input.start', function() {
|
||||
var output = before.trimOverlap(
|
||||
subject
|
||||
);
|
||||
|
||||
var start = new Date(2012, 7, 4);
|
||||
start.setMilliseconds(
|
||||
start.getMilliseconds() + 1
|
||||
);
|
||||
|
||||
var end = new Date(
|
||||
2012, 7, 31
|
||||
);
|
||||
|
||||
var expected = new Timespan(
|
||||
start, end
|
||||
);
|
||||
|
||||
assert.deepEqual(output, expected);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
suite('#overlaps', function() {
|
||||
var dates;
|
||||
|
||||
suiteSetup(function() {
|
||||
dates = {
|
||||
'range: inside': {
|
||||
assert: true,
|
||||
value: new Timespan(
|
||||
startDate,
|
||||
endDate
|
||||
)
|
||||
},
|
||||
|
||||
'range: starts on end date': {
|
||||
assert: false,
|
||||
value: new Timespan(
|
||||
endDate,
|
||||
new Date(2015, 1, 1)
|
||||
)
|
||||
},
|
||||
|
||||
'range: outside before': {
|
||||
assert: false,
|
||||
value: new Timespan(
|
||||
new Date(1991, 1, 1),
|
||||
new Date(2000, 1, 1)
|
||||
)
|
||||
},
|
||||
|
||||
'range: outside after': {
|
||||
assert: false,
|
||||
value: new Timespan(
|
||||
new Date(2015, 1, 1),
|
||||
new Date(2016, 1, 1)
|
||||
)
|
||||
},
|
||||
|
||||
'range: greater': {
|
||||
assert: true,
|
||||
value: new Timespan(
|
||||
new Date(2011, 12, 31),
|
||||
new Date(2012, 12, 2)
|
||||
)
|
||||
},
|
||||
|
||||
'range overlap: start before': {
|
||||
assert: true,
|
||||
value: new Timespan(
|
||||
new Date(2011, 1, 1),
|
||||
new Date(2012, 1, 15)
|
||||
)
|
||||
},
|
||||
|
||||
'range overlap: end before': {
|
||||
assert: true,
|
||||
value: new Timespan(
|
||||
new Date(2012, 1, 2),
|
||||
new Date(2012, 11, 12)
|
||||
)
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
test('overlaping times', function() {
|
||||
var key;
|
||||
|
||||
for (key in dates) {
|
||||
if (dates.hasOwnProperty(key)) {
|
||||
var value = dates[key].value;
|
||||
|
||||
assert.equal(
|
||||
subject.overlaps(value),
|
||||
dates[key].assert,
|
||||
key
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
test('overlaping times as dates', function() {
|
||||
var key;
|
||||
|
||||
for (key in dates) {
|
||||
if (dates.hasOwnProperty(key)) {
|
||||
var value = dates[key].value;
|
||||
var start = new Date(value.start);
|
||||
var end = new Date(value.end);
|
||||
|
||||
assert.equal(
|
||||
subject.overlaps(start, end),
|
||||
dates[key].assert,
|
||||
key
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
suite('#contains', function() {
|
||||
var dates;
|
||||
|
||||
suiteSetup(function() {
|
||||
dates = {
|
||||
'day of': {
|
||||
assert: true,
|
||||
value: new Date(2012, 1, 1)
|
||||
},
|
||||
|
||||
'one day after': {
|
||||
assert: true,
|
||||
value: new Date(2012, 1, 2)
|
||||
},
|
||||
|
||||
'day of end range': {
|
||||
assert: true,
|
||||
value: new Date(2012, 12, 1)
|
||||
},
|
||||
|
||||
'day before range': {
|
||||
assert: false,
|
||||
value: new Date(2011, 12, 31)
|
||||
},
|
||||
|
||||
'day after range': {
|
||||
assert: false,
|
||||
value: new Date(2012, 12, 2)
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
test('timespan in range', function() {
|
||||
var span = new Timespan(
|
||||
new Date(2012, 1, 1),
|
||||
new Date(2012, 1, 5)
|
||||
);
|
||||
|
||||
assert.isTrue(
|
||||
subject.contains(span)
|
||||
);
|
||||
|
||||
assert.isFalse(
|
||||
span.contains(subject)
|
||||
);
|
||||
});
|
||||
|
||||
function testWith(method, useNumeric) {
|
||||
var key;
|
||||
var prefix = '';
|
||||
|
||||
if (useNumeric) {
|
||||
prefix += '[numeric] ';
|
||||
}
|
||||
|
||||
prefix += method;
|
||||
|
||||
for (key in dates) {
|
||||
if (dates.hasOwnProperty(key)) {
|
||||
var value = dates[key].value.valueOf();
|
||||
|
||||
if (useNumeric) {
|
||||
value = value.valueOf();
|
||||
}
|
||||
|
||||
assert.equal(
|
||||
subject.contains(value),
|
||||
dates[key].assert,
|
||||
prefix + key
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test('numeric (contains)', function() {
|
||||
testWith('contains', true);
|
||||
});
|
||||
|
||||
test('numeric (containsNumeric)', function() {
|
||||
testWith('containsNumeric', true);
|
||||
});
|
||||
|
||||
test('date', function() {
|
||||
testWith('contains', false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
Loading…
Reference in a new issue