Skip to content

Commit

Permalink
Merge branch 'fix-long-double-issue' of https://github.com/kaizhu256/…
Browse files Browse the repository at this point in the history
…sql.js into fix-long-double-issue
  • Loading branch information
kaizhu256 committed Apr 4, 2020
2 parents 3dab272 + 9097504 commit 64aa1e4
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 1 deletion.
1 change: 0 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ EMCC=emcc

CFLAGS = \
-O2 \
-DLONGDOUBLE_TYPE=double \
-DSQLITE_OMIT_LOAD_EXTENSION \
-DSQLITE_DISABLE_LFS \
-DSQLITE_ENABLE_FTS3 \
Expand Down
66 changes: 66 additions & 0 deletions test/test_issue325.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@

exports.test = function(sql, assert){
"use strict";
// Create a database
var db = new sql.Database();
var result;
var stmt;
var value;

// inline result value test
result = db.exec("SELECT 1.7976931348623157e+308 AS myResult");
assert.strictEqual(result.length, 1, 'correct inline result length');
assert.deepEqual(result[0].columns, ['myResult'], 'correct inline result column name');
assert.strictEqual(result[0].values.length, 1, 'correct inline result values length');
assert.strictEqual(result[0].values[0].length, 1, 'inline result values[0] length');
assert.strictEqual(typeof result[0].values[0][0], 'number', 'correct inline result value is a number');
assert.ok(result[0].values[0][0] > 1.7976931348623e+308, 'inline result value is not too small');
assert.ok(result[0].values[0][0] < 1.797693134862316e+308, 'inline result value is not too large');
assert.notEqual(result[0].values[0][0], Infinity, 'inline result value is not Infinity');
value = String(result[0].values[0][0]);
assert.strictEqual(value, "1.7976931348623157e+308");

// bind result value test
stmt = db.prepare("SELECT ? AS myResult");
result = stmt.getAsObject([1.7976931348623157e+308]);
assert.ok(result.myResult, 'bind result value is valid and defined');
assert.strictEqual(typeof result.myResult, 'number', 'bind result value is a number');
assert.ok(result.myResult > 1.7976931348623e+308, 'bind result value is not too small');
assert.ok(result.myResult < 1.797693134862316e+308, 'bind result value is not too large');
assert.notEqual(result.myResult, Infinity, 'bind result value is not Infinity');
value = String(result.myResult);
assert.strictEqual(value, "1.7976931348623157e+308");

// CAST value test
result = db.exec("SELECT CAST('1.7976931348623157e+308' AS REAL) AS myResult");
assert.strictEqual(result.length, 1, 'correct inline result length');
assert.deepEqual(result[0].columns, ['myResult'], 'correct inline result column name');
assert.strictEqual(result[0].values.length, 1, 'correct inline result values length');
assert.strictEqual(result[0].values[0].length, 1, 'inline result values[0] length');
assert.strictEqual(typeof result[0].values[0][0], 'number', 'correct inline result value is a number');
assert.ok(result[0].values[0][0] > 1.7976931348623e+308, 'inline result value is not too small');
assert.ok(result[0].values[0][0] < 1.797693134862316e+308, 'inline result value is not too large');
assert.notEqual(result[0].values[0][0], Infinity, 'inline result value is not Infinity');
value = String(result[0].values[0][0]);
assert.strictEqual(value, "1.7976931348623157e+308");

// Close the database and all associated statements
db.close();
};

if (module == require.main) {
const target_file = process.argv[2];
const sql_loader = require('./load_sql_lib');
sql_loader(target_file).then((sql)=>{
require('test').run({
'test issue325': function(assert){
exports.test(sql, assert);
}
});
})
.catch((e)=>{
console.error(e);
assert.fail(e);
});
}

0 comments on commit 64aa1e4

Please sign in to comment.