alasql
Version:
AlaSQL.js - JavaScript SQL database library for relational and graph data manipulation with support of localStorage, IndexedDB, and Excel
110 lines (90 loc) • 3.74 kB
JavaScript
if(typeof exports === 'object') {
var assert = require("assert");
var alasql = require('..');
} else {
__dirname = '.';
};
describe('Test 306 XML reader', function() {
it('0. Create database ',function(done){
alasql('CREATE DATABASE test306;USE test306');
done();
});
it('1. Read XML file / SEARCH like JSON',function(done){
alasql('SEARCH children/"Worksheet" attributes [ss:Name] FROM XML("test306.xml")',[],function(res){
assert.deepEqual(res,[ 'Sheet1', 'demo' ]);
done();
});
});
it('1a. Read XML file / SEARCH XML',function(done){
// alasql('SEARCH xml /Worksheet%[ss:Name] FROM XML("test306.xml")',[],function(res){
alasql('SEARCH XML Worksheet %[ss:Name] FROM XML("test306.xml")',[],function(res){
// console.log(res);
assert.deepEqual(res,[ 'Sheet1', 'demo' ]);
done();
});
});
it('2. Read XML file / SEARCH XML',function(done){
// alasql('SEARCH xml /Worksheet%[ss:Name] FROM XML("test306.xml")',[],function(res){
alasql('SEARCH XML Worksheet %[ss:Name] FROM XML("test306.xml")',[],function(res){
// console.log(res);
assert.deepEqual(res,[ 'Sheet1', 'demo' ]);
done();
});
});
it('3. Read XML file / SEARCH XML',function(done){
alasql('SEARCH XML / * Data$ FROM XML("test306.xml")',[],function(res){
// console.log(res);
assert.deepEqual(res,[ 'aaaa', '2', '3', '5', '6', '7' ]);
done();
});
});
it('4. Read XML file / SEARCH XML',function(done){
alasql('SEARCH XML / *Data$ WHERE(_>3) FROM XML("test306.xml")',[],function(res){
assert.deepEqual(res,['5', '6', '7' ]);
done();
});
});
it('5. Read XML file / SEARCH XML',function(done){
alasql('SEARCH xml %xmlns FROM XML("test306.xml")',[],function(res){
// console.log(res);
assert.deepEqual(res,[ 'urn:schemas-microsoft-com:office:spreadsheet' ]);
done();
});
});
it('6a. Read GEFX file / SEARCH XML',function(done){
// alasql('SEARCH XML /graph/nodes/% {[$id]:id,name:label} FROM XML("test306a.xml")',[],function(res){
alasql('SEARCH XML [graph] nodes node %/ {[$id]:id,name:label,[$node]:"VERTEX"} FROM XML("test306a.xml")',[],function(res){
// console.log(res);
assert.deepEqual(res, [{"$id":"0","name":"Hello",$node:"VERTEX"},{"$id":"1","name":"Word",$node:"VERTEX"}]);
done();
});
});
it('6b. Read GEFX file / SEARCH XML',function(done){
// alasql('SEARCH XML /graph/nodes/% {[$id]:id,name:label} FROM XML("test306a.xml")',[],function(res){
alasql('SEARCH XML [graph] nodes/%/ {[$id]:id,name:label} FROM XML("test306a.xml")',[],function(res){
assert.deepEqual(res, [{"$id":"0","name":"Hello"},{"$id":"1","name":"Word"}]);
done();
});
});
it('7. Edges ',function(done){
// alasql('SEARCH XML /graph/edges/% FROM XML("test306a.xml")',[],function(res){
alasql('SEARCH XML [graph] edges/%/ FROM XML("test306a.xml")',[],function(res){
// console.log(res);
assert.deepEqual(res, [ { id: '0', source: '0', target: '1' } ]);
done();
});
});
it('7. SEARCH INTO ',function(done){
alasql('SEARCH XML [graph] edges/%/ INTO CSV({headers:true}) FROM XML("test306a.xml")',[],function(res){
// alasql('SEARCH XML /graph/edges/% INTO CSV({headers:true}) FROM XML("test306a.xml")',[],function(res){
// console.log('>>',res,'<<');
assert(res == "id,source,target\n0,0,1\n");
// assert.deepEqual(res, [ { id: '0', source: '0', target: '1' } ]);
done();
});
});
it('99. Drop database ',function(done){
alasql('DROP DATABASE test306');
done();
});
});