test conditions and notes

This commit is contained in:
AJ ONeal 2019-06-12 08:42:57 +00:00
parent be8d138cd0
commit e4af522b88
1 changed files with 133 additions and 0 deletions

133
test.js Normal file
View File

@ -0,0 +1,133 @@
var d = new Date("5/18/2019, 07:49:13");
// Fri May 17 2019 17:49:13 GMT-0400 (Eastern Daylight Time)
// utc should be Fri, 17 May 2019 21:49:13 GMT"
//
console.log("d:" + d)
console.log("tzUTC:" + tzUTC(d, 'Australia/Sydney'))
d = new Date("5/17/2019, 14:53:21");
console.log("d:" + d)
// Fri May 17 2019 17:53:21 GMT-0400 (Eastern Daylight Time)
// utc "Fri, 17 May 2019 21:53:21 GMT"
console.log("tzUTC:" + tzUTC(d, 'America/Los_Angeles'))
//////
////// 9:01 twice
//////
var d = new Date("3/10/2019, 01:59:00");
console.log("tzUTC:" + tzUTC(d, 'America/Denver'));
// tzUTC:Sun, 10 Mar 2019 08:59:00 GMT
var d = new Date("3/10/2019, 02:01:00");
console.log("tzUTC:" + tzUTC(d, 'America/Denver'));
// tzUTC:Sun, 10 Mar 2019 09:01:00 GMT
var d = new Date("3/10/2019, 02:59:00");
console.log("tzUTC:" + tzUTC(d, 'America/Denver'));
// tzUTC:Sun, 10 Mar 2019 09:59:00 GMT
var d = new Date("3/10/2019, 03:01:00");
console.log("tzUTC:" + tzUTC(d, 'America/Denver'));
// tzUTC:Sun, 10 Mar 2019 09:01:00 GMT
//////
////// 8:01 never
//////
var d = new Date("11/03/2019, 01:59:00");
console.log("tzUTC:" + tzUTC(d, 'America/Denver'));
// tzUTC:Sun, 03 Nov 2019 07:59:00 GMT
var d = new Date("11/03/2019, 02:01:00");
console.log("tzUTC:" + tzUTC(d, 'America/Denver'));
// tzUTC:Sun, 03 Nov 2019 09:01:00 GMT
var d = new Date("11/03/2019, 02:59:00");
console.log("tzUTC:" + tzUTC(d, 'America/Denver'));
// tzUTC:Sun, 03 Nov 2019 09:59:00 GMT
var d = new Date("11/03/2019, 03:01:00");
console.log("tzUTC:" + tzUTC(d, 'America/Denver'));
tzUTC:Sun, 03 Nov 2019 10:01:00 GMT
/*
Yes, that's a major use case. And one that can contact people according to their timezone. The daylight savings problem most likely won't affect us. But it could.
As a failsafe is there a way that you could detect daylight savings time and report it? Perhaps create 3 times and check that the difference on either side is exactly 1.5 hours?
*/
/*
But there's a second thing, more along the lines of a scheduler:
Given a target date in local time, produce the same local time a week later.
"I'm having lunch with John today at 12:30 pm. Schedule a lunch next week at 12:30pm."
The naive approach that almost always works is to simply add (7 x 24 x 60 x 60 x 1000), but that won't work if the lunch happened on either of these days:
var d = new Date("03/07/2019, 12:30:00"); // + (7 * 24 * 60 * 60 * 1000)
var d = new Date("11/01/2019, 12:30:00"); // + (7 * 24 * 60 * 60 * 1000)
In both instances my simple calendar would be off by an hour.
*/
/*
I think the solution will be:
srcMs = toMs(srcLocalDate)
targetMs = srcMs + diffMs
targetLocalDate = toLocal(targetMs)
targetMs += toMsAsIfUtc(srcLocalDate) - (toMsAsIfUtc(targetLocalDate) - diffMs)
return toLocalDate(targetMs)
*/
(function (exports) {
'use strict';
exports.TEST = function (myfn) {
var tests = [
{ name: "normal date"
, input: { d: '5/18/2019, 8:59:48 AM', tz: "America/Denver" }
, expected: 1558191588007
}
];
function next() {
var t = tests.shift();
var result;
if (!t) {
return true;
}
try {
result = Promise.resolve(myfn(t.input));
} catch(e) {
result = Promise.reject(e);
}
result.then(function (result) {
if (result === t.expected) {
return true;
}
throw new Error(t.name + ": result did not match expected: " + JSON.stringify(result) + " vs " + JSON.stringify(t.expected));
});
}
return next();
};
}('undefined' === typeof module ? window : module.exports));
runner.js:
(function (exports) {
'use strict';
var tzUtc = exports.tzUtc || require('./index.js').tzUtc;
var tester = exports.TEST || require('./test.js').TEST;
tester(tzUtc);
}('undefined' === typeof module ? window : module.exports));