98 lines
3 KiB
JavaScript
98 lines
3 KiB
JavaScript
var sqlite3 = require('..');
|
|
var assert = require('assert');
|
|
|
|
describe('data types', function() {
|
|
var db;
|
|
before(function(done) {
|
|
db = new sqlite3.Database(':memory:');
|
|
db.run("CREATE TABLE txt_table (txt TEXT)");
|
|
db.run("CREATE TABLE int_table (int INTEGER)");
|
|
db.run("CREATE TABLE flt_table (flt FLOAT)");
|
|
db.wait(done);
|
|
});
|
|
|
|
beforeEach(function(done) {
|
|
db.exec('DELETE FROM txt_table; DELETE FROM int_table; DELETE FROM flt_table;', done);
|
|
});
|
|
|
|
it('should serialize Date()', function(done) {
|
|
var date = new Date();
|
|
db.run("INSERT INTO int_table VALUES(?)", date, function (err) {
|
|
if (err) throw err;
|
|
db.get("SELECT int FROM int_table", function(err, row) {
|
|
if (err) throw err;
|
|
assert.equal(row.int, +date);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should serialize RegExp()', function(done) {
|
|
var regexp = /^f\noo/;
|
|
db.run("INSERT INTO txt_table VALUES(?)", regexp, function (err) {
|
|
if (err) throw err;
|
|
db.get("SELECT txt FROM txt_table", function(err, row) {
|
|
if (err) throw err;
|
|
assert.equal(row.txt, String(regexp));
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
[
|
|
4294967296.249,
|
|
Math.PI,
|
|
3924729304762836.5,
|
|
new Date().valueOf(),
|
|
912667.394828365,
|
|
2.3948728634826374e+83,
|
|
9.293476892934982e+300,
|
|
Infinity,
|
|
-9.293476892934982e+300,
|
|
-2.3948728634826374e+83,
|
|
-Infinity
|
|
].forEach(function(flt) {
|
|
it('should serialize float ' + flt, function(done) {
|
|
db.run("INSERT INTO flt_table VALUES(?)", flt, function (err) {
|
|
if (err) throw err;
|
|
db.get("SELECT flt FROM flt_table", function(err, row) {
|
|
if (err) throw err;
|
|
assert.equal(row.flt, flt);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
[
|
|
4294967299,
|
|
3924729304762836,
|
|
new Date().valueOf(),
|
|
2.3948728634826374e+83,
|
|
9.293476892934982e+300,
|
|
Infinity,
|
|
-9.293476892934982e+300,
|
|
-2.3948728634826374e+83,
|
|
-Infinity
|
|
].forEach(function(integer) {
|
|
it('should serialize integer ' + integer, function(done) {
|
|
db.run("INSERT INTO int_table VALUES(?)", integer, function (err) {
|
|
if (err) throw err;
|
|
db.get("SELECT int AS integer FROM int_table", function(err, row) {
|
|
if (err) throw err;
|
|
assert.equal(row.integer, integer);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should ignore faulty toString', function(done) {
|
|
const faulty = { toString: 23 };
|
|
db.run("INSERT INTO txt_table VALUES(?)", faulty, function (err) {
|
|
assert.notEqual(err, undefined);
|
|
done();
|
|
});
|
|
});
|
|
|
|
});
|