-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjumptodef_test.js
117 lines (109 loc) · 4.36 KB
/
jumptodef_test.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
if (typeof process !== "undefined") {
require("amd-loader");
require("../../test/setup_paths");
}
/*global disabledFeatures:true*/
define(function(require, exports, module) {
var sinon = require("sinon");
var assert = require("assert");
var LanguageWorker = require('../ext.language/worker').LanguageWorker;
var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
module.exports = {
timeout: 1000000,
"test jump to definition should point to variable declaration" : function(next) {
disabledFeatures = { jshint: true };
var emitter = Object.create(EventEmitter);
emitter.emit = emitter._dispatchEvent;
emitter.on("definition", function(def) {
assert.equal(def.results[0].row, 0);
assert.equal(def.results[0].column, 4);
next();
});
emitter.once("markers", function(markers) {
worker.jumpToDefinition({
data: {
row: 0,
column: 26
}
});
});
var worker = new LanguageWorker(emitter);
worker.register("ext/jslanguage/scope_analyzer");
worker.register("ext/jslanguage/jumptodef");
worker.register("ext/jslanguage/parse");
worker.switchFile("test.js", "javascript", "var ab = 4; console.log(ab);", null, "");
},
"test jump to definition on a position without code should still return a result" : function(next) {
disabledFeatures = { jshint: true };
var emitter = Object.create(EventEmitter);
emitter.emit = emitter._dispatchEvent;
var definitionListener = sinon.stub();
emitter.on("definition", definitionListener);
emitter.once("markers", function(markers) {
worker.jumpToDefinition({
data: {
row: 0,
column: 40
}
});
});
var worker = new LanguageWorker(emitter);
worker.register("ext/jslanguage/scope_analyzer");
worker.register("ext/jslanguage/jumptodef");
worker.register("ext/jslanguage/parse");
worker.switchFile("test.js", "javascript", "var ab = 4; console.log(ab); ", null, "");
// definition listener should not be called
setTimeout(function () {
sinon.assert.callCount(definitionListener, 1);
next();
}, 500);
},
"test isJumpToDefinitionAvailable should return true when available" : function(next) {
disabledFeatures = { jshint: true };
var emitter = Object.create(EventEmitter);
emitter.emit = emitter._dispatchEvent;
emitter.on("isJumpToDefinitionAvailableResult", function(res) {
assert.equal(res.value, true);
next();
});
emitter.once("markers", function(markers) {
worker.isJumpToDefinitionAvailable({
data: {
row: 0,
column: 26
}
});
});
var worker = new LanguageWorker(emitter);
worker.register("ext/jslanguage/scope_analyzer");
worker.register("ext/jslanguage/jumptodef");
worker.register("ext/jslanguage/parse");
worker.switchFile("test.js", "javascript", "var ab = 4; console.log(ab);", null, "");
},
"test isJumpToDefinitionAvailable should return false when not available" : function(next) {
disabledFeatures = { jshint: true };
var emitter = Object.create(EventEmitter);
emitter.emit = emitter._dispatchEvent;
emitter.on("isJumpToDefinitionAvailableResult", function(res) {
assert.equal(res.value, false);
next();
});
emitter.once("markers", function(markers) {
worker.isJumpToDefinitionAvailable({
data: {
row: 0,
column: 15
}
});
});
var worker = new LanguageWorker(emitter);
worker.register("ext/jslanguage/scope_analyzer");
worker.register("ext/jslanguage/jumptodef");
worker.register("ext/jslanguage/parse");
worker.switchFile("test.js", "javascript", "var ab = 4; console.log(ab);", null, "");
},
};
});
if (typeof module !== "undefined" && module === require.main) {
require("asyncjs").test.testcase(module.exports).exec();
}