UNPKG

alasql

Version:

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

129 lines (96 loc) 3.67 kB
if(typeof exports === 'object') { var assert = require("assert"); var alasql = require('..'); } else { __dirname = '.'; }; describe('Test 304 SEARCH over JSON', function() { it('0. Create database ',function(done){ var res = alasql('CREATE DATABASE test304;USE test304'); done(); }); it('1. INSTANCEOF selector',function(done){ var People = alasql.fn.People = function() {}; var City = alasql.fn.City = function() {}; var p1 = new People; p1.name = "John"; var p2 = new People; p2.name = "Mary"; var c1 = new City; c1.name = "Milano"; var c2 = new City; c2.name = "Odessa"; var data = [p1,c1,p2,c2]; var res = alasql('SEARCH / INSTANCEOF(City) name FROM ?',[data]); assert.deepEqual(res, ["Milano","Odessa"]); done(); }); it('2. CLASS() selector',function(done){ alasql('CREATE CLASS Person'); alasql('CREATE CLASS City'); alasql('INSERT INTO Person VALUES {name:"John"},{name:"Mary"}'); alasql('INSERT INTO City VALUES {name:"Madrid"},{name:"Kyoto"}'); var res = alasql('SEARCH / CLASS(City) name'); assert.deepEqual(res, ["Madrid","Kyoto"]); done(); }); it('3. PLUS selector',function(done){ var data = {a:{a:{a:{a:{b:10}}}}}; var res = alasql('SEARCH a b FROM ?',[data]); assert.deepEqual(res, []); var res = alasql('SEARCH (a)+ b FROM ?',[data]); assert.deepEqual(res, [10]); var res = alasql('SEARCH (a a)+ b FROM ?',[data]); assert.deepEqual(res, [10]); var res = alasql('SEARCH (a a a)+ b FROM ?',[data]); assert.deepEqual(res, []); var res = alasql('SEARCH (/)+ b FROM ?',[data]); assert.deepEqual(res, [10]); var res = alasql('SEARCH /+b FROM ?',[data]); assert.deepEqual(res, [10]); done(); }); it('4. STAR and QUESTION selector',function(done){ var data = {a:{a:{a:{a:{b:10}}}},b:20}; var res = alasql('SEARCH a* b FROM ?',[data]); assert.deepEqual(res, [20,10]); var res = alasql('SEARCH a+ b FROM ?',[data]); assert.deepEqual(res, [10]); var res = alasql('SEARCH a? b FROM ?',[data]); assert.deepEqual(res, [20]); done(); }); it('5. STAR and QUESTION selectors in GRAPHS',function(done){ alasql('SET @olga = (CREATE VERTEX "Olga")'); alasql('SET @helen = (CREATE VERTEX "Helen")'); alasql('SET @pablo = (CREATE VERTEX "Pablo")'); alasql('SET @andrey = (CREATE VERTEX "Andrey")'); alasql('SET @sofia = (CREATE VERTEX "Sofia")'); 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'); var res = alasql('SEARCH / AS @p (>>)+ "Sofia" @(@p) name'); assert.deepEqual(res, ['Olga','Helen','Pablo','Andrey']); var res = alasql('SEARCH / AS @p (>>)* "Sofia" @(@p) name'); assert.deepEqual(res, ['Olga','Helen','Pablo','Andrey','Sofia']); var res = alasql('SEARCH / "Olga" >> name'); assert.deepEqual(res, ['Pablo']); var res = alasql('SEARCH / "Olga" (>>)? name'); assert.deepEqual(res, ['Olga','Pablo']); done(); }); it('6. STAR and QUESTION selectors in GRAPHS',function(done){ var res = alasql('SEARCH / "Olga" (>>)+ name'); assert.deepEqual(res, ['Pablo','Sofia']); var res = alasql('SEARCH / "Olga" (>>)* name'); assert.deepEqual(res, ['Olga','Pablo','Sofia']); var res = alasql('SEARCH / IF(>> >> "Sofia") name'); assert.deepEqual(res, ['Olga','Helen']); done(); }); it('99. Create database ',function(done){ var res = alasql('DROP DATABASE test304'); done(); }); });