UNPKG

alasql

Version:

AlaSQL.js - JavaScript SQL database library for relational and graph data manipulation with support of localStorage, IndexedDB, and Excel

124 lines (83 loc) 3.52 kB
if(typeof exports === 'object') { var assert = require("assert"); var alasql = require('..'); } else { __dirname = '.'; }; describe('Test 140 JavaScript Functions', function() { it("1. Simple Date functions", function(done){ alasql('CREATE DATABASE test140; use test140'); var res = alasql('SELECT * FROM ?', [[{d: new Date(2014,0,1)},{d: new Date(2015,11,31)} ]]); assert(res.length == 2); assert(res[0].d.getFullYear); var res = alasql('SELECT COLUMN d->getFullYear() FROM ?', [[{d: new Date(2014,0,1)},{d: new Date(2015,11,31)} ]]); assert.deepEqual(res,[2014,2015]); var res = alasql('SELECT d->getFullYear() AS d FROM ?', [[{d: new Date(2014,0,1)},{d: new Date(2015,11,31)} ]]); assert.deepEqual(res, [{d:2014},{d:2015}]); done(); }); it("2. Simple String functions", function(done){ var res = alasql('SELECT COLUMN d->substr(e) FROM ?', [[{d: "abcd",e:1},{d: "ABCD",e:2} ]]); assert.deepEqual(res,["bcd","CD"]); var res = alasql('SELECT COLUMN d->substr(e,e) FROM ?', [[{d: "abcd",e:1},{d: "ABCD",e:2} ]]); assert.deepEqual(res,["b","CD"]); done(); }); it("3. NEW keyword", function(done){ alasql.fn.Date = Date; var res = alasql("SELECT VALUE new Date(2014,0,1)"); assert(res.getFullYear() == 2014); var res = alasql("SELECT VALUE new Date(2014,0,1)->getFullYear()"); assert(res == 2014); done(); }); it("4. Create table with Date", function(done){ alasql.fn.Date = Date; alasql('CREATE TABLE one (d Date)'); alasql('INSERT INTO one VALUES (new Date(2014,0,1)), (new Date(2015,0,2))'); var res = alasql("SELECT COLUMN d->getFullYear() FROM one"); assert.deepEqual(res,[2014,2015]); var res = alasql("SELECT COLUMN d->getFullYear() FROM one WHERE d === new Date(2015,0,1)"); assert.deepEqual(res,[]); var res = alasql("SELECT COLUMN d->getFullYear() FROM one WHERE d === new Date(2015,0,2)"); assert.deepEqual(res,[2015]); done(); }); it("5. Create table with default conversion Date", function(done){ alasql('CREATE TABLE two (d DATE)'); alasql('INSERT INTO two VALUES ("2014-01-01"), ("2015-01-02")'); var res = alasql("SELECT COLUMN d FROM two"); assert.deepEqual(res,["2014-01-01", "2015-01-02"]); // assert.deepEqual(res,[2014,2015]); // console.log(res); var res = alasql("SELECT COLUMN d FROM two"); assert.deepEqual(res,["2014-01-01","2015-01-02"]); done(); }); it("6. Create table with default conversion Date", function(done){ alasql('CREATE TABLE three (d Date)'); alasql('INSERT INTO three VALUES ("2014-01-01"), ("2015-01-02")'); var res = alasql("SELECT COLUMN d->getFullYear() FROM three"); assert.deepEqual(res,[2014,2015]); done(); }); it("7. Create table with default conversion Date", function(done){ delete alasql.fn.Date; alasql('CREATE TABLE four (d Date)'); alasql('INSERT INTO four VALUES ("2014-01-01"), ("2015-01-02")'); var res = alasql("SELECT COLUMN YEAR(d) FROM four"); assert.deepEqual(res,[2014,2015]); var res = alasql("SELECT COLUMN MONTH(d) FROM four"); assert.deepEqual(res,[1,1]); var res = alasql("SELECT COLUMN DAY(d) FROM four"); assert.deepEqual(res,[1,2]); // console.log(res); var res = alasql("SELECT COLUMN d FROM four"); assert.deepEqual(res,["2014-01-01","2015-01-02"]); done(); }); it("99. Drop database", function(done){ alasql('DROP DATABASE test140'); done(); }); });