alasql
Version:
AlaSQL.js - JavaScript SQL database library for relational and graph data manipulation with support of localStorage, IndexedDB, and Excel
123 lines (95 loc) • 3.38 kB
JavaScript
if(typeof exports === 'object') {
var assert = require("assert");
var alasql = require('..');
} else {
__dirname = '.';
};
if(typeof exports == 'object') {
var DOMStorage = require("dom-storage")
global.localStorage = new DOMStorage("./restest267.json", { strict: false, ws: '' });
};
describe('Test 269 options', function() {
var data1 = [{a:1,b:10},{a:2,b:20},{a:3,b:30}];
var data2 = [{b:10,c:100},{b:20,c:200},{b:40,c:400},];
it('1. Create database', function(done) {
alasql('CREATE DATABASE test269; USE test269');
done();
});
it('2. by default', function(done) {
alasql.options.modifier = undefined;
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
assert.deepEqual(res,
[ { a: 1, b: 10, c: 100 },
{ a: 2, b: 20, c: 200 },
{ a: 3, b: 30 },
{ b: 40, c: 400 } ]);
done();
});
it('3. VALUE', function(done) {
alasql.options.modifier = 'VALUE';
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
assert.deepEqual(res,1);
done();
});
it('4. ROW', function(done) {
alasql.options.modifier = 'ROW';
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
assert.deepEqual(res,[1,10,100]);
done();
});
it('5. COLUMN', function(done) {
alasql.options.modifier = 'COLUMN';
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
assert.deepEqual(res,[1,2,3,undefined]);
done();
});
it('6. MATRIX', function(done) {
alasql.options.modifier = 'MATRIX';
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
//console.log(res);
// Wrong with reduced rows
assert.deepEqual(res,[[1,10,100],[2,20,200],[3,30,undefined],[undefined,40,400]]);
done();
});
it('6a. MATRIX', function(done) {
alasql.options.modifier = 'MATRIX';
// alasql.options.modifier = 'RECORDSET';
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b \
ORDER BY a',[data1,data2]);
console.log(res);
// Wrong with reduced rows
assert.deepEqual(res,[[undefined,40,400],[1,10,100],[2,20,200],[3,30,undefined]]);
done();
});
it('7. RECORDSET', function(done) {
alasql.options.modifier = "RECORDSET";
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
//console.log(res);
// Wrong with reduced rows
assert.deepEqual(res, {data:
[ { a: 1, b: 10, c: 100 },
{ a: 2, b: 20, c: 200 },
{ a: 3, b: 30 },
{ b: 40, c: 400 } ],
columns: [{columnid:'a'},{columnid:'b'},{columnid:'c'}]}
);
done();
});
it('8. INDEX', function(done) {
alasql.options.modifier = 'INDEX';
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
assert.deepEqual(res,{ '1': 10, '2': 20, '3': 30, undefined: 40 });
done();
});
it('9. TEXTSTRING', function(done) {
alasql.options.modifier = 'TEXTSTRING';
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
assert.deepEqual(res,'1\n2\n3\n');
done();
});
it('99. Drop phase', function(done) {
delete alasql.options.modifier;
alasql('DROP DATABASE test269');
done();
});
});