A Twitch.tv viewer reward and games system.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
var common = require('../../common'); var connection = common.createConnection(); var assert = require('assert');
common.useTestDb(connection);
var table = 'timezone_test'; connection.query([ 'CREATE TEMPORARY TABLE `' + table + '`(', '`offset` varchar(10),', '`dt` datetime', ') ENGINE=InnoDB DEFAULT CHARSET=utf8' ].join('\n'));
var tests = [ 0, 1, 5, 12, 26, -1, -5, -20, 'Z', 'local' ];
connection.query('DELETE FROM ' + table);
testNextDate();
function testNextDate() { if (tests.length === 0) { return connection.end(); }
var test = tests.pop();
testDate(test, function () { testNextDate(); }); }
function testDate(offset, cb) { var dt = new Date();
if (offset == 'Z' || offset == 'local') { connection.config.timezone = offset; } else { connection.config.timezone = (offset < 0 ? "-" : "+") + pad2(Math.abs(offset)) + ":00"; } connection.query('INSERT INTO ' + table + ' SET ?', { offset: offset, dt: dt });
if (offset == 'Z') { dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000)); } else if (offset != 'local') { dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000) + (offset * 3600000)); }
connection.query({ sql: 'SELECT * FROM ' + table + ' WHERE offset = \'' + offset + '\'', typeCast: function (field, next) { if (field.type != 'DATETIME') return next();
return new Date(field.string()); } }, function (err, result) { if (err) throw err;
assert.strictEqual(dt.toString(), result[0].dt.toString());
return cb(); }); }
function pad2(v) { return (v < 10 ? "0" : "") + v; }
|