-
Notifications
You must be signed in to change notification settings - Fork 670
/
Copy pathtest303.js
122 lines (97 loc) · 3.19 KB
/
test303.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
122
if (typeof exports === 'object') {
var assert = require('assert');
var alasql = require('..');
} else {
__dirname = '.';
}
describe('Test 303 SEARCH over JSON', function () {
it('0. Create database ', function (done) {
var res = alasql('CREATE DATABASE test303;USE test303');
done();
});
it('1. Simple Search Primitives', function (done) {
var res = alasql('SEARCH FROM TRUE');
assert.deepEqual(res, true);
var res = alasql('SEARCH FROM 1');
assert.deepEqual(res, 1);
var res = alasql('SEARCH FROM "John"');
assert.deepEqual(res, 'John');
var res = alasql('SEARCH FROM {a:1}');
assert.deepEqual(res, {a: 1});
var res = alasql('SEARCH FROM @[1,2,3]');
assert.deepEqual(res, [1, 2, 3]);
done();
});
it('2. PROP() Selector', function (done) {
var res = alasql('SEARCH name FROM {name:"John"}');
assert.deepEqual(res, ['John']);
var res = alasql(
'SEARCH location city FROM {name:"John",location:{city:"Milan",country:"Italy"}}'
);
assert.deepEqual(res, ['Milan']);
var res = alasql('SEARCH 2 FROM @[10,20,30]');
assert.deepEqual(res, [30]);
done();
});
it('3. Basic Selector', function (done) {
alasql.srch.DOUBLE = function (val, args) {
return {status: 1, values: [val * 2]};
};
var res = alasql('SEARCH DOUBLE() FROM 1');
assert.deepEqual(res, [2]);
alasql.srch.TRIPLE = function (val, args) {
return {status: 1, values: [val, val * 2, val * 3]};
};
var res = alasql('SEARCH TRIPLE() FROM 2');
assert.deepEqual(res, [2, 4, 6]);
done();
});
it('4. CHILD() and KEYS() selectors', function (done) {
var res = alasql('SEARCH CHILD() FROM @[10,20,30]');
assert.deepEqual(res, [10, 20, 30]);
var res = alasql('SEARCH CHILD() FROM {a:1,b:2}');
assert.deepEqual(res, [1, 2]);
var res = alasql('SEARCH KEYS() FROM @[10,20,30]');
assert.deepEqual(res, ['0', '1', '2']);
var res = alasql('SEARCH KEYS() FROM {a:1,b:2}');
assert.deepEqual(res, ['a', 'b']);
var res = alasql('SEARCH / name FROM {john:{name:"John"},mary:{name:"Mary"}}');
assert.deepEqual(res, ['John', 'Mary']);
var res = alasql('SEARCH / name FROM @[{name:"John",age:25},{name:"Mary",age:18}]');
assert.deepEqual(res, ['John', 'Mary']);
done();
});
it('4. Test expression', function (done) {
var res = alasql(
'SEARCH / where(name = "John") age FROM @[{name:"John",age:25},{name:"Mary",age:18}]'
);
assert.deepEqual(res, [25]);
var res = alasql(
'SEARCH / where(name = "Mary") age FROM @[{name:"John",age:25},{name:"Mary",age:18}]'
);
assert.deepEqual(res, [18]);
done();
});
it('5. Transform expression', function (done) {
var res = alasql('SEARCH / EX(age*2) FROM @[{name:"John",age:25},{name:"Mary",age:18}]');
assert.deepEqual(res, [50, 36]);
// Self variable
var res = alasql(
'SEARCH / EX(age+LEN(_->name)) FROM @[{name:"John",age:25},{name:"Mary",age:18}]'
);
assert.deepEqual(res, [29, 22]);
done();
});
it('6. AS function ', function (done) {
var res = alasql(
'SEARCH / AS @p EX(age+LEN(@p->name)) \
FROM @[{name:"John",age:25},{name:"Mary",age:18}]'
);
assert.deepEqual(res, [29, 22]);
done();
});
it('99. Create database ', function (done) {
var res = alasql('DROP DATABASE test303');
done();
});
});