-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathtest_aggregate_redefinition.js
80 lines (77 loc) · 1.99 KB
/
test_aggregate_redefinition.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
exports.test = function(sql, assert) {
// Test 1: Create a database, Register single function, close database, repeat 1000 times
for (var i = 1; i <= 1000; i++)
{
let lastStep = i == 1000;
let db = new sql.Database();
try {
db.create_aggregate("TestFunction"+i, {step: (state, value) => i})
} catch(e) {
assert.ok(
false,
"Test 1: Recreate database "+i+"th times and register aggregate"
+" function failed with exception:"+e
);
db.close();
break;
}
var result = db.exec("SELECT TestFunction"+i+"(1)");
var result_str = result[0]["values"][0][0];
if(result_str != i || lastStep)
{
assert.equal(
result_str,
i,
"Test 1: Recreate database "+i+"th times and register aggregate function"
);
db.close();
break;
}
db.close();
}
// Test 2: Create a database, Register same function 1000 times, close database
{
let db = new sql.Database();
for (var i = 1; i <= 1000; i++)
{
let lastStep = i == 1000;
try {
db.create_aggregate("TestFunction", {step: (state, value) => i})
} catch(e) {
assert.ok(
false,
"Test 2: Reregister aggregate function "+i+"th times failed with"
+" exception:"+e
);
break;
}
var result = db.exec("SELECT TestFunction(1)");
var result_str = result[0]["values"][0][0];
if(result_str != i || lastStep)
{
assert.equal(
result_str,
i,
"Test 2: Reregister function "+i+"th times"
);
break;
}
}
db.close();
}
};
if (module == require.main) {
const target_file = process.argv[2];
const sql_loader = require('./load_sql_lib');
sql_loader(target_file).then((sql)=>{
require('test').run({
'test creating multiple functions': function(assert){
exports.test(sql, assert);
}
});
})
.catch((e)=>{
console.error(e);
assert.fail(e);
});
}