Skip to content

Commit ed9b8bb

Browse files
committed
tests: add TIMESTAMP type cast test
1 parent 4583c8b commit ed9b8bb

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
var after = require('after');
2+
var assert = require('assert');
3+
var common = require('../../common');
4+
var server = common.createFakeServer();
5+
6+
server.listen(common.fakeServerPort, function (err) {
7+
assert.ifError(err);
8+
9+
var done = after(2, function () {
10+
server.destroy();
11+
});
12+
13+
var conn1 = common.createConnection({
14+
port : common.fakeServerPort,
15+
timezone : 'Z'
16+
});
17+
conn1.query('SELECT value FROM datetime_rows', function (err, rows) {
18+
assert.ifError(err);
19+
assert.equal(rows.length, 7);
20+
assert.strictEqual(rows[0].value, '0000-00-00 00:00:00');
21+
assert.strictEqual(rows[1].value, '2000-00-00 00:00:00');
22+
assert.strictEqual(rows[2].value, '2000-01-00 00:00:00');
23+
assert.strictEqual(rows[3].value, '2000-01-02 03:04:60');
24+
assert.ok(rows[4].value instanceof Date);
25+
assert.strictEqual(rows[4].value.toISOString(), '2000-01-02T00:00:00.000Z');
26+
assert.ok(rows[5].value instanceof Date);
27+
assert.strictEqual(rows[5].value.toISOString(), '2000-01-02T03:04:05.000Z');
28+
assert.ok(rows[6].value instanceof Date);
29+
assert.strictEqual(rows[6].value.toISOString(), '2000-01-02T03:04:05.006Z');
30+
conn1.destroy();
31+
done();
32+
});
33+
34+
var conn2 = common.createConnection({
35+
dateStrings : true,
36+
port : common.fakeServerPort,
37+
timezone : 'Z'
38+
});
39+
conn2.query('SELECT value FROM datetime_rows', function (err, rows) {
40+
assert.ifError(err);
41+
assert.equal(rows.length, 7);
42+
assert.strictEqual(rows[0].value, '0000-00-00 00:00:00');
43+
assert.strictEqual(rows[1].value, '2000-00-00 00:00:00');
44+
assert.strictEqual(rows[2].value, '2000-01-00 00:00:00');
45+
assert.strictEqual(rows[3].value, '2000-01-02 03:04:60');
46+
assert.strictEqual(rows[4].value, '2000-01-02 00:00:00');
47+
assert.strictEqual(rows[5].value, '2000-01-02 03:04:05');
48+
assert.strictEqual(rows[6].value, '2000-01-02 03:04:05.006');
49+
conn2.destroy();
50+
done();
51+
});
52+
});
53+
54+
server.on('connection', function(conn) {
55+
conn.handshake();
56+
conn.on('query', function(packet) {
57+
switch (packet.sql) {
58+
case 'SELECT value FROM datetime_rows':
59+
this._sendPacket(new common.Packets.ResultSetHeaderPacket({
60+
fieldCount: 1
61+
}));
62+
63+
this._sendPacket(new common.Packets.FieldPacket({
64+
catalog : 'def',
65+
charsetNr : common.Charsets.UTF8_GENERAL_CI,
66+
name : 'value',
67+
protocol41 : true,
68+
type : common.Types.TIMESTAMP
69+
}));
70+
71+
this._sendPacket(new common.Packets.EofPacket());
72+
73+
var writer = new common.PacketWriter();
74+
writer.writeLengthCodedString('0000-00-00 00:00:00');
75+
this._socket.write(writer.toBuffer(this._parser));
76+
77+
var writer = new common.PacketWriter();
78+
writer.writeLengthCodedString('2000-00-00 00:00:00');
79+
this._socket.write(writer.toBuffer(this._parser));
80+
81+
var writer = new common.PacketWriter();
82+
writer.writeLengthCodedString('2000-01-00 00:00:00');
83+
this._socket.write(writer.toBuffer(this._parser));
84+
85+
var writer = new common.PacketWriter();
86+
writer.writeLengthCodedString('2000-01-02 03:04:60');
87+
this._socket.write(writer.toBuffer(this._parser));
88+
89+
var writer = new common.PacketWriter();
90+
writer.writeLengthCodedString('2000-01-02 00:00:00');
91+
this._socket.write(writer.toBuffer(this._parser));
92+
93+
var writer = new common.PacketWriter();
94+
writer.writeLengthCodedString('2000-01-02 03:04:05');
95+
this._socket.write(writer.toBuffer(this._parser));
96+
97+
var writer = new common.PacketWriter();
98+
writer.writeLengthCodedString('2000-01-02 03:04:05.006');
99+
this._socket.write(writer.toBuffer(this._parser));
100+
101+
this._sendPacket(new common.Packets.EofPacket());
102+
this._parser.resetPacketNumber();
103+
break;
104+
default:
105+
this._handleQueryPacket(packet);
106+
break;
107+
}
108+
});
109+
});

0 commit comments

Comments
 (0)