forked from SuperMap/iClient-JavaScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMeasureServiceSpec.js
More file actions
316 lines (292 loc) · 13.4 KB
/
MeasureServiceSpec.js
File metadata and controls
316 lines (292 loc) · 13.4 KB
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
require('../../../src/common/iServer/MeasureService');
var measureEventArgsSystem = null,
serviceFailedEventArgsSystem = null;
var mapServiceURL = GlobeParameter.mapServiceURL;
var worldMapURL = mapServiceURL + "World Map";
//跨域下的测试
function initMeasureService() {
return new SuperMap.MeasureService(worldMapURL);
}
//注册监听器对象,面积量算
function initMeasureService_RegisterListener() {
return new SuperMap.MeasureService(worldMapURL, {
eventListeners: {
'processCompleted': measureCompleted,
'processFailed': measureFailed
},
measureMode: SuperMap.MeasureMode.AREA
});
}
function measureCompleted(measureEventArgs) {
measureEventArgsSystem = measureEventArgs;
}
function measureFailed(serviceFailedEventArgs) {
serviceFailedEventArgsSystem = serviceFailedEventArgs;
}
describe('testMeasureService_processAsync', function () {
var originalTimeout;
beforeEach(function () {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000;
measureEventArgsSystem = null;
serviceFailedEventArgsSystem = null;
});
afterEach(function () {
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});
it('distance', function (done) {
var measureService = initMeasureService();
var points = [new SuperMap.Geometry.Point(0, 0), new SuperMap.Geometry.Point(10, 10)];
var geometry = new SuperMap.Geometry.LineString(points);
var measureParameters = new SuperMap.MeasureParameters(geometry);
expect(measureService).not.toBeNull();
expect(measureService.url).toEqual(worldMapURL);
measureService.events.on({'processCompleted': measureCompleted, 'processFailed': measureFailed});
measureService.processAsync(measureParameters);
setTimeout(function () {
try {
var measureResult = measureEventArgsSystem.result;
expect(measureResult).not.toBeNull();
expect(measureResult.succeed).toBeTruthy();
expect(measureResult.area).toEqual(-1);
expect(measureResult.distance).toEqual(1565109.0991230179);
expect(measureResult.unit).toBe("METER");
measureService.destroy();
expect(measureService.url == null).toBeTruthy();
expect(measureService.isInTheSameDomain == null).toBeTruthy();
expect(measureService.EVENT_TYPES == null).toBeTruthy();
expect(measureService.events == null).toBeTruthy();
expect(measureService.distanceMode == null).toBeTruthy();
measureParameters.destroy();
done();
} catch (exception) {
expect(false).toBeTruthy();
console.log("MeasureService_" + exception.name + ":" + exception.message);
measureService.destroy();
measureParameters.destroy();
done();
}
}, 2000);
});
//反向测试用例,输入点进行距离量算
it('distance_failed0', function (done) {
var measureService = initMeasureService();
var point = new SuperMap.Geometry.Point(0, 0);
var measureParameters = new SuperMap.MeasureParameters(point);
measureService.events.on({
'processCompleted': measureCompleted,
'processFailed': measureFailed
});
measureService.processAsync(measureParameters);
setTimeout(function () {
try {
expect(serviceFailedEventArgsSystem).not.toBeNull();
expect(serviceFailedEventArgsSystem.succeed).toBeFalsy();
expect(serviceFailedEventArgsSystem.error).not.toBeNull();
expect(serviceFailedEventArgsSystem.error.errorMsg).not.toBeNull();
expect(serviceFailedEventArgsSystem.error.errorMsg).toContain("参数 point2Ds 不合法,必须至少包含两个二维点");
expect(serviceFailedEventArgsSystem.error.code).toEqual(400);
measureService.destroy();
measureParameters.destroy();
done();
} catch (exception) {
expect(false).toBeTruthy();
console.log("MeasureService_" + exception.name + ":" + exception.message);
measureService.destroy();
measureParameters.destroy();
done();
}
}, 2000);
});
//反向测试用例,输入距离单位枚举值错误
it('distance_failed1', function (done) {
var measureService = initMeasureService();
var points = [new SuperMap.Geometry.Point(0, 0), new SuperMap.Geometry.Point(0, 0)];
var geometry = new SuperMap.Geometry.LineString(points);
var measureParameters = new SuperMap.MeasureParameters(geometry);
measureParameters.unit = "error";
measureService.events.on({
'processCompleted': measureCompleted,
'processFailed': measureFailed
});
measureService.processAsync(measureParameters);
setTimeout(function () {
try {
expect(serviceFailedEventArgsSystem).not.toBeNull();
expect(serviceFailedEventArgsSystem.succeed).toBeFalsy();
expect(serviceFailedEventArgsSystem.error).not.toBeNull();
expect(serviceFailedEventArgsSystem.error.errorMsg).not.toBeNull();
expect(serviceFailedEventArgsSystem.error.errorMsg).toContain("No enum constant com.supermap.services.components.commontypes.Unit.error");
expect(serviceFailedEventArgsSystem.error.code).toEqual(400);
measureService.destroy();
measureParameters.destroy();
done();
} catch (exception) {
expect(false).toBeTruthy();
console.log("MeasureService_" + exception.name + ":" + exception.message);
measureService.destroy();
measureParameters.destroy();
done();
}
}, 1500);
});
//area
it('area', function (done) {
var measureService = initMeasureService_RegisterListener();
var points = [
new SuperMap.Geometry.Point(0, 0),
new SuperMap.Geometry.Point(10, 10),
new SuperMap.Geometry.Point(10, 0),
new SuperMap.Geometry.Point(0, 0)
];
var geometry = new SuperMap.Geometry.Polygon(new SuperMap.Geometry.LinearRing(points));
var measureParameters = new SuperMap.MeasureParameters(geometry);
measureService.processAsync(measureParameters);
setTimeout(function () {
try {
var measureResult = measureEventArgsSystem.result;
expect(measureResult).not.toBeNull();
expect(measureResult.area).toEqual(617049216619.1235);
expect(measureResult.distance).toEqual(-1);
expect(measureResult.unit).toBe("METER");
measureService.destroy();
measureParameters.destroy();
done();
} catch (exception) {
expect(false).toBeTruthy();
console.log("MeasureService_" + exception.name + ":" + exception.message);
measureService.destroy();
measureParameters.destroy();
done();
}
}, 1500);
});
//反向测试用例,传入的点无法构成面
it('area_failed0', function (done) {
var measureService = initMeasureService_RegisterListener();
var points = [
new SuperMap.Geometry.Point(0, 0),
new SuperMap.Geometry.Point(10, 10),
new SuperMap.Geometry.Point(0, 0)
];
var geometry = new SuperMap.Geometry.Polygon(new SuperMap.Geometry.LinearRing(points));
var measureParameters = new SuperMap.MeasureParameters(geometry);
measureService.processAsync(measureParameters);
setTimeout(function () {
try {
var measureResult = measureEventArgsSystem.result;
expect(measureResult).not.toBeNull();
expect(measureResult.area).toEqual(0);
expect(measureResult.distance).toEqual(-1);
expect(measureResult.unit).toBe("METER");
measureService.destroy();
measureParameters.destroy();
done();
} catch (exception) {
expect(false).toBeTruthy();
console.log("MeasureService_" + exception.name + ":" + exception.message);
measureService.destroy();
measureParameters.destroy();
done();
}
}, 1500);
});
//反向测试用例,传入线进行面积量算
it('area_failed1', function (done) {
var measureService = initMeasureService_RegisterListener();
var points = [new SuperMap.Geometry.Point(0, 0), new SuperMap.Geometry.Point(10, 10)];
var geometry = new SuperMap.Geometry.LineString(points);
var measureParameters = new SuperMap.MeasureParameters(geometry);
measureService.processAsync(measureParameters);
setTimeout(function () {
try {
expect(serviceFailedEventArgsSystem).not.toBeNull();
expect(serviceFailedEventArgsSystem.succeed).toBeFalsy();
expect(serviceFailedEventArgsSystem.error).not.toBeNull();
expect(serviceFailedEventArgsSystem.error.code).toEqual(400);
expect(serviceFailedEventArgsSystem.error.errorMsg).not.toBeNull();
expect(serviceFailedEventArgsSystem.error.errorMsg).toContain("传入参数 points 的长度小于3。");
measureService.destroy();
measureParameters.destroy();
done();
} catch (exception) {
expect(false).toBeTruthy();
console.log("MeasureService_" + exception.name + ":" + exception.message);
measureService.destroy();
measureParameters.destroy();
done();
}
}, 1500);
});
//反向测试用例,地图名错误,无法调用回调函数
it('area_failed2', function (done) {
var measureService = new SuperMap.MeasureService(worldMapURL + "_Error", {measureMode: SuperMap.MeasureMode.AREA});
var points = [new SuperMap.Geometry.Point(0, 0), new SuperMap.Geometry.Point(10, 10), new SuperMap.Geometry.Point(10, 0)];
//服务端缺陷,new SuperMap.Geometry.Point(20, 20),new SuperMap.Geometry.Point(0, 0)
var geometry = new SuperMap.Geometry.Polygon(new SuperMap.Geometry.LinearRing(points));
var measureParameters = new SuperMap.MeasureParameters(geometry, {unit: SuperMap.Unit.KILOMETER});
measureService.events.on({'processCompleted': measureCompleted, 'processFailed': measureFailed});
measureService.processAsync(measureParameters);
setTimeout(function () {
try {
expect(serviceFailedEventArgsSystem).not.toBeNull();
expect(serviceFailedEventArgsSystem.succeed).toBeFalsy();
expect(serviceFailedEventArgsSystem.error).not.toBeNull();
expect(serviceFailedEventArgsSystem.error.code).toEqual(404);
expect(serviceFailedEventArgsSystem.error.errorMsg).not.toBeNull();
expect(serviceFailedEventArgsSystem.error.errorMsg).toContain("资源不存在");
measureService.destroy();
measureParameters.destroy();
done();
} catch (exception) {
expect(false).toBeTruthy();
console.log("MeasureService_" + exception.name + ":" + exception.message);
measureService.destroy();
measureParameters.destroy();
done();
}
}, 1500);
});
/* 与iclient8不同,暂时忽略
//反向测试用例,geometry为空
it('distance_failed2',function(done){
var measureService = initMeasureService();
var geometry = null;
var measureParameters = new SuperMap.MeasureParameters(geometry);
measureService.events.on({
'processCompleted':measureCompleted,
'processFailed':measureFailed
});
measureService.processAsync(measureParameters);
setTimeout(function() {
try{
expect(measureEventArgsSystem).not.toBeNull();
expect(serviceFailedEventArgsSystem).not.toBeNull();
measureService.destroy();
done();
}catch(exception){
alert(exception.name + ":" + exception.message);
measureService.destroy();
done();
}
},1500);
});
asyncTest("TestMeasureService_serverGeometry_null",function(){
var measureService = initMeasureService_RegisterListener();
//var points = new Array(new SuperMap.Geometry.Point(0, 0),new SuperMap.Geometry.Point(10, 10),new SuperMap.Geometry.Point(10, 0),new SuperMap.Geometry.Point(0, 0));
//var geometry = new SuperMap.Geometry.Polygon(new SuperMap.Geometry.LinearRing(points));
var measureParameters = new SuperMap.MeasureParameters();
measureService.processAsync(measureParameters);
setTimeout(function() {
try{
var measureResult=measureService.lastResult;
equal(measureResult,null,"measureService.lastResult");
start();
}catch(exception){
ok(false,"exception occcurs,message is:"+exception.message)
start();
}
},1500);
});
*/
});