UNPKG

alasql

Version:

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

126 lines (104 loc) 3.69 kB
if(typeof exports === 'object') { var assert = require("assert"); var alasql = require('..'); } else { __dirname = '.'; }; describe('Test 308 sub SEARCH', function() { it('1. Create database ',function(done){ alasql('CREATE DATABASE test308;USE test308'); done(); }); it('2. SET selector',function(done){ var data = [{a:1,b:10},{a:2,b:20}]; var res = alasql('SET @q = (SEARCH / b FROM ?)',[data]); assert.deepEqual(alasql.vars.q,[ 10, 20 ]); done(); }); it('3. SUM and other aggregators',function(done){ var data = [{a:1,b:10},{a:2,b:20},{a:2,b:30}]; var res = alasql('SEARCH SUM(/b) FROM ?',[data]); assert.deepEqual(res,[ 60 ]); var res = alasql('SEARCH AVG(/b) FROM ?',[data]); assert.deepEqual(res,[ 20 ]); var res = alasql('SEARCH ARRAY(/b) FROM ?',[data]); assert.deepEqual(res,[ [10,20,30] ]); var res = alasql('SEARCH ARRAY(/b) @(LEN(_))FROM ?',[data]); assert.deepEqual(res,[ 3 ]); var res = alasql('SEARCH COUNT(/b) FROM ?',[data]); assert.deepEqual(res,[ 3 ]); var res = alasql('SEARCH MIN(/b) FROM ?',[data]); assert.deepEqual(res,[ 10 ]); var res = alasql('SEARCH MAX(/b) FROM ?',[data]); assert.deepEqual(res,[ 30 ]); var res = alasql('SEARCH FIRST(/b) FROM ?',[data]); assert.deepEqual(res,[ 10 ]); var res = alasql('SEARCH LAST(/b) FROM ?',[data]); assert.deepEqual(res,[ 30 ]); done(); }); it('4. SUM with nested selector',function(done){ var data = [{a:1,b:{c:100}},{a:2},{a:2,b:{c:300}}]; var res = alasql('SEARCH SUM(/b c) FROM ?',[data]); assert.deepEqual(res,[ 400 ]); done(); }); it('5. Complex SUM with tree selector',function(done){ var data = [{a:1,b:{c:100}},{c:200},{a:2,b:{d:[{c:300}]}}]; var res = alasql('SEARCH SUM((/)*c) FROM ?',[data]); assert.deepEqual(res,[ 600 ]); done(); }); it('6. SUM over graph',function(done){ alasql('SET @olga = (CREATE VERTEX "Olga" SET age=19)'); alasql('SET @helen = (CREATE VERTEX "Helen" SET age=42)'); alasql('SET @pablo = (CREATE VERTEX "Pablo" SET age=35)'); alasql('SET @andrey = (CREATE VERTEX "Andrey" SET age=44)'); alasql('SET @sofia = (CREATE VERTEX "Sofia" SET age=23)'); alasql('CREATE EDGE FROM @olga TO @pablo'); alasql('CREATE EDGE FROM @helen TO @andrey'); alasql('CREATE EDGE FROM @pablo TO @sofia'); alasql('CREATE EDGE FROM @andrey TO @sofia'); done(); }); it('7. SUM over graph',function(done){ var res = alasql('SEARCH SUM(/ "Olga" (>>)+ age)'); // console.log(res); assert.deepEqual(res, [58]); done(); }); it('8. SUM over graph',function(done){ var res = alasql('SEARCH / "Olga" SUM((>>)+ age)'); // console.log(res); assert.deepEqual(res, [58]); done(); }); it('9. SUM over graph',function(done){ var res = alasql('SEARCH COUNT(/ "Olga" (>>)+ age)'); // console.log(res); assert.deepEqual(res, [2]); done(); }); it('10. SUM over graph',function(done){ var res = alasql('SEARCH / AS @person \ SUM((>>)+ age) AS @age \ WHERE(@age > 50) \ @person RETURNS(name,@age AS age)'); assert.deepEqual(res, [ {name:'Olga', age:58}, {name:'Helen', age:67} ] ); done(); }); it('11. SUM over graph',function(done){ var res = alasql('SEARCH / AS @person \ COUNT((>>)+ age) AS @n \ WHERE(@n > 1) \ @(@person->name)'); assert.deepEqual(res, [ 'Olga', 'Helen'] ); // console.log(res); // assert.deepEqual(res, [58]); done(); }); it('99. Drop database ',function(done){ alasql('DROP DATABASE test308'); done(); }); });