-
Notifications
You must be signed in to change notification settings - Fork 667
/
Copy pathtest304.js
121 lines (96 loc) · 3.53 KB
/
test304.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
if (typeof exports === 'object') {
var assert = require('assert');
var alasql = require('..');
} else {
__dirname = '.';
}
describe('Test 304 SEARCH over JSON', function () {
it.skip('0. Create database ', function (done) {
var res = alasql('CREATE DATABASE test304;USE test304');
done();
});
it.skip('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.skip('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.skip('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.skip('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.skip('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.skip('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.skip('99. Create database ', function (done) {
var res = alasql('DROP DATABASE test304');
done();
});
});