73 lines
2.0 KiB
JavaScript
73 lines
2.0 KiB
JavaScript
var common = require('../../common');
|
|
var connection = common.createConnection();
|
|
var assert = require('assert');
|
|
|
|
common.useTestDb(connection);
|
|
|
|
var tests = require('./type-casting-tests')(connection);
|
|
|
|
var table = 'type_casting';
|
|
|
|
var schema = [];
|
|
var inserts = [];
|
|
|
|
tests.forEach(function(test, index) {
|
|
var escaped = test.insertRaw || connection.escape(test.insert);
|
|
|
|
test.columnName = test.type + '_' + index;
|
|
|
|
schema.push('`' + test.columnName + '` ' + test.type + ',');
|
|
inserts.push('`' + test.columnName + '` = ' + escaped);
|
|
});
|
|
|
|
var createTable = [
|
|
'CREATE TEMPORARY TABLE `' + table + '` (',
|
|
'`id` int(11) unsigned NOT NULL AUTO_INCREMENT,'
|
|
].concat(schema).concat([
|
|
'PRIMARY KEY (`id`)',
|
|
') ENGINE=InnoDB DEFAULT CHARSET=utf8'
|
|
]).join('\n');
|
|
|
|
connection.query(createTable);
|
|
|
|
connection.query('INSERT INTO ' + table + ' SET' + inserts.join(',\n'));
|
|
|
|
var row;
|
|
connection.query('SELECT * FROM type_casting', function(err, rows) {
|
|
if (err) throw err;
|
|
|
|
row = rows[0];
|
|
});
|
|
|
|
connection.end();
|
|
|
|
process.on('exit', function() {
|
|
tests.forEach(function(test) {
|
|
var expected = test.expect || test.insert;
|
|
var got = row[test.columnName];
|
|
var message;
|
|
|
|
if (expected instanceof Date) {
|
|
assert.equal(got instanceof Date, true, test.type);
|
|
|
|
expected = String(expected);
|
|
got = String(got);
|
|
} else if (Buffer.isBuffer(expected)) {
|
|
assert.equal(Buffer.isBuffer(got), true, test.type);
|
|
|
|
expected = String(Array.prototype.slice.call(expected));
|
|
got = String(Array.prototype.slice.call(got));
|
|
}
|
|
|
|
if (test.deep) {
|
|
message = 'got: "' + JSON.stringify(got) + '" expected: "' + JSON.stringify(expected) +
|
|
'" test: ' + test.type + '';
|
|
assert.deepEqual(expected, got, message);
|
|
} else {
|
|
message = 'got: "' + got + '" (' + (typeof got) + ') expected: "' + expected +
|
|
'" (' + (typeof expected) + ') test: ' + test.type + '';
|
|
assert.strictEqual(expected, got, message);
|
|
}
|
|
});
|
|
});
|