OLD | NEW |
---|---|
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library test.protocol; | 5 library test.protocol; |
6 | 6 |
7 import 'dart:convert'; | 7 import 'dart:convert'; |
8 | 8 |
9 import 'package:analysis_server/src/protocol.dart'; | 9 import 'package:analysis_server/src/protocol.dart'; |
10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
11 | 11 |
12 main() { | 12 main() { |
13 group('Notification', () { | 13 group('Notification', () { |
14 test('getParameter_defined', NotificationTest.getParameter_defined); | 14 test('getParameter_defined', NotificationTest.getParameter_defined); |
15 test('getParameter_undefined', NotificationTest.getParameter_undefined); | 15 test('getParameter_undefined', NotificationTest.getParameter_undefined); |
16 test('fromJson', NotificationTest.fromJson); | 16 test('fromJson', NotificationTest.fromJson); |
17 test('fromJson_withParams', NotificationTest.fromJson_withParams); | 17 test('fromJson_withParams', NotificationTest.fromJson_withParams); |
18 }); | 18 }); |
19 group('Request', () { | 19 group('Request', () { |
20 test('getParameter_defined', RequestTest.getParameter_defined); | 20 test('getParameter_defined', RequestTest.getParameter_defined); |
21 test('getParameter_undefined', RequestTest.getParameter_undefined); | 21 test('getParameter_undefined', RequestTest.getParameter_undefined); |
22 test('getRequiredParameter_defined', RequestTest.getRequiredParameter_define d); | 22 test('getRequiredParameter_defined', RequestTest.getRequiredParameter_define d); |
23 test('getRequiredParameter_undefined', RequestTest.getRequiredParameter_unde fined); | 23 test('getRequiredParameter_undefined', RequestTest.getRequiredParameter_unde fined); |
24 test('fromJson', RequestTest.fromJson); | 24 test('fromJson', RequestTest.fromJson); |
25 test('fromJson_invalidId', RequestTest.fromJson_invalidId); | 25 test('fromJson_invalidId', RequestTest.fromJson_invalidId); |
26 test('fromJson_invalidMethod', RequestTest.fromJson_invalidMethod); | 26 test('fromJson_invalidMethod', RequestTest.fromJson_invalidMethod); |
27 test('fromJson_invalidParams', RequestTest.fromJson_invalidParams); | 27 test('fromJson_invalidParams', RequestTest.fromJson_invalidParams); |
28 test('fromJson_withParams', RequestTest.fromJson_withParams); | 28 test('fromJson_withParams', RequestTest.fromJson_withParams); |
29 test('toBool', RequestTest.toBool); | |
30 test('toInt', RequestTest.toInt); | |
29 test('toJson', RequestTest.toJson); | 31 test('toJson', RequestTest.toJson); |
30 test('toJson_withParams', RequestTest.toJson_withParams); | 32 test('toJson_withParams', RequestTest.toJson_withParams); |
31 }); | 33 }); |
34 group('RequestError', () { | |
35 test('create', RequestErrorTest.create); | |
36 test('create_methodNotFound', RequestErrorTest.create_methodNotFound); | |
37 test('create_invalidParameters', RequestErrorTest.create_invalidParameters); | |
38 test('create_invalidRequest', RequestErrorTest.create_invalidRequest); | |
39 test('create_internalError', RequestErrorTest.create_internalError); | |
40 test('create_parseError', RequestErrorTest.create_parseError); | |
41 test('fromJson', RequestErrorTest.fromJson); | |
42 test('toJson', RequestErrorTest.toJson); | |
43 }); | |
32 group('Response', () { | 44 group('Response', () { |
33 test('create_contextDoesNotExist', ResponseTest.create_contextDoesNotExist); | 45 test('create_contextDoesNotExist', ResponseTest.create_contextDoesNotExist); |
34 test('create_invalidRequestFormat', ResponseTest.create_invalidRequestFormat ); | 46 test('create_invalidRequestFormat', ResponseTest.create_invalidRequestFormat ); |
35 test('create_missingRequiredParameter', ResponseTest.create_missingRequiredP arameter); | 47 test('create_missingRequiredParameter', ResponseTest.create_missingRequiredP arameter); |
48 test('create_unknownAnalysisOption', ResponseTest.create_unknownAnalysisOpti on); | |
36 test('create_unknownRequest', ResponseTest.create_unknownRequest); | 49 test('create_unknownRequest', ResponseTest.create_unknownRequest); |
37 test('setResult', ResponseTest.setResult); | 50 test('setResult', ResponseTest.setResult); |
38 test('fromJson', ResponseTest.fromJson); | 51 test('fromJson', ResponseTest.fromJson); |
39 test('fromJson_withError', ResponseTest.fromJson_withError); | 52 test('fromJson_withError', ResponseTest.fromJson_withError); |
40 test('fromJson_withResult', ResponseTest.fromJson_withResult); | 53 test('fromJson_withResult', ResponseTest.fromJson_withResult); |
41 }); | 54 }); |
42 } | 55 } |
43 | 56 |
44 class NotificationTest { | 57 class NotificationTest { |
45 static void getParameter_defined() { | 58 static void getParameter_defined() { |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
101 String name = 'name'; | 114 String name = 'name'; |
102 String value = 'value'; | 115 String value = 'value'; |
103 Request request = new Request('0', ''); | 116 Request request = new Request('0', ''); |
104 request.setParameter(name, value); | 117 request.setParameter(name, value); |
105 expect(request.getRequiredParameter(name), equals(value)); | 118 expect(request.getRequiredParameter(name), equals(value)); |
106 } | 119 } |
107 | 120 |
108 static void getRequiredParameter_undefined() { | 121 static void getRequiredParameter_undefined() { |
109 String name = 'name'; | 122 String name = 'name'; |
110 Request request = new Request('0', ''); | 123 Request request = new Request('0', ''); |
111 expect(() => request.getRequiredParameter(name), throwsA(new isInstanceOf<Re questFailure>())); | 124 expect(() => request.getRequiredParameter(name), _throwsRequestFailure); |
112 } | 125 } |
113 | 126 |
114 static void fromJson() { | 127 static void fromJson() { |
115 Request original = new Request('one', 'aMethod'); | 128 Request original = new Request('one', 'aMethod'); |
116 String json = JSON.encode(original.toJson()); | 129 String json = JSON.encode(original.toJson()); |
117 Request request = new Request.fromString(json); | 130 Request request = new Request.fromString(json); |
118 expect(request.id, equals('one')); | 131 expect(request.id, equals('one')); |
119 expect(request.method, equals('aMethod')); | 132 expect(request.method, equals('aMethod')); |
120 } | 133 } |
121 | 134 |
(...skipping 18 matching lines...) Expand all Loading... | |
140 static void fromJson_withParams() { | 153 static void fromJson_withParams() { |
141 Request original = new Request('one', 'aMethod'); | 154 Request original = new Request('one', 'aMethod'); |
142 original.setParameter('foo', 'bar'); | 155 original.setParameter('foo', 'bar'); |
143 String json = JSON.encode(original.toJson()); | 156 String json = JSON.encode(original.toJson()); |
144 Request request = new Request.fromString(json); | 157 Request request = new Request.fromString(json); |
145 expect(request.id, equals('one')); | 158 expect(request.id, equals('one')); |
146 expect(request.method, equals('aMethod')); | 159 expect(request.method, equals('aMethod')); |
147 expect(request.getParameter('foo'), equals('bar')); | 160 expect(request.getParameter('foo'), equals('bar')); |
148 } | 161 } |
149 | 162 |
163 static void toBool() { | |
164 Request request = new Request('0', ''); | |
165 expect(request.toBool(true), isTrue); | |
166 expect(request.toBool(false), isFalse); | |
167 expect(request.toBool('true'), isTrue); | |
168 expect(request.toBool('false'), isFalse); | |
Brian Wilkerson
2014/04/07 18:51:48
Might be good to add a test for a string that is n
scheglov
2014/04/07 19:01:41
Done.
| |
169 expect(() => request.toBool(42), _throwsRequestFailure); | |
170 } | |
171 | |
172 static void toInt() { | |
173 Request request = new Request('0', ''); | |
174 expect(request.toInt(1), equals(1)); | |
175 expect(request.toInt('2'), equals(2)); | |
176 expect(() => request.toInt('xxx'), _throwsRequestFailure); | |
177 expect(() => request.toInt(request), _throwsRequestFailure); | |
178 } | |
179 | |
150 static void toJson() { | 180 static void toJson() { |
151 Request request = new Request('one', 'aMethod'); | 181 Request request = new Request('one', 'aMethod'); |
152 expect(request.toJson(), equals({ | 182 expect(request.toJson(), equals({ |
153 Request.ID : 'one', | 183 Request.ID : 'one', |
154 Request.METHOD : 'aMethod' | 184 Request.METHOD : 'aMethod' |
155 })); | 185 })); |
156 } | 186 } |
157 | 187 |
158 static void toJson_withParams() { | 188 static void toJson_withParams() { |
159 Request request = new Request('one', 'aMethod'); | 189 Request request = new Request('one', 'aMethod'); |
160 request.setParameter('foo', 'bar'); | 190 request.setParameter('foo', 'bar'); |
161 expect(request.toJson(), equals({ | 191 expect(request.toJson(), equals({ |
162 Request.ID : 'one', | 192 Request.ID : 'one', |
163 Request.METHOD : 'aMethod', | 193 Request.METHOD : 'aMethod', |
164 Request.PARAMS : {'foo' : 'bar'} | 194 Request.PARAMS : {'foo' : 'bar'} |
165 })); | 195 })); |
166 } | 196 } |
167 } | 197 } |
168 | 198 |
199 class RequestErrorTest { | |
200 static void create() { | |
201 RequestError error = new RequestError(42, 'msg'); | |
202 expect(error.code, 42); | |
203 expect(error.message, "msg"); | |
204 expect(error.toJson(), equals({ | |
205 RequestError.CODE: 42, | |
206 RequestError.MESSAGE: "msg" | |
207 })); | |
208 } | |
209 static void create_parseError() { | |
Brian Wilkerson
2014/04/07 18:51:48
nit: We should probably be consistent with spacing
scheglov
2014/04/07 19:01:41
Agree, we need to put an empty line between member
| |
210 RequestError error = new RequestError.parseError(); | |
211 expect(error.code, RequestError.CODE_PARSE_ERROR); | |
212 expect(error.message, "Parse error"); | |
213 } | |
214 static void create_methodNotFound() { | |
215 RequestError error = new RequestError.methodNotFound(); | |
216 expect(error.code, RequestError.CODE_METHOD_NOT_FOUND); | |
217 expect(error.message, "Method not found"); | |
218 } | |
219 static void create_invalidParameters() { | |
220 RequestError error = new RequestError.invalidParameters(); | |
221 expect(error.code, RequestError.CODE_INVALID_PARAMS); | |
222 expect(error.message, "Invalid parameters"); | |
223 } | |
224 static void create_invalidRequest() { | |
225 RequestError error = new RequestError.invalidRequest(); | |
226 expect(error.code, RequestError.CODE_INVALID_REQUEST); | |
227 expect(error.message, "Invalid request"); | |
228 } | |
229 static void create_internalError() { | |
230 RequestError error = new RequestError.internalError(); | |
231 expect(error.code, RequestError.CODE_INTERNAL_ERROR); | |
232 expect(error.message, "Internal error"); | |
233 } | |
234 static void fromJson() { | |
235 var json = { | |
236 RequestError.CODE: RequestError.CODE_PARSE_ERROR, | |
237 RequestError.MESSAGE: 'foo', | |
238 RequestError.DATA: {'ints': [1, 2, 3]} | |
239 }; | |
240 RequestError error = new RequestError.fromJson(json); | |
241 expect(error.code, RequestError.CODE_PARSE_ERROR); | |
242 expect(error.message, "foo"); | |
243 expect(error.data['ints'], [1, 2, 3]); | |
244 expect(error.getData('ints'), [1, 2, 3]); | |
245 } | |
246 static void toJson() { | |
247 RequestError error = new RequestError(0, 'msg'); | |
248 error.setData('answer', 42); | |
249 error.setData('question', 'unknown'); | |
250 expect(error.toJson(), { | |
251 RequestError.CODE: 0, | |
252 RequestError.MESSAGE: 'msg', | |
253 RequestError.DATA: {'answer': 42, 'question': 'unknown'} | |
254 }); | |
255 } | |
256 } | |
257 | |
169 class ResponseTest { | 258 class ResponseTest { |
170 static void create_contextDoesNotExist() { | 259 static void create_contextDoesNotExist() { |
171 Response response = new Response.contextDoesNotExist(new Request('0', '')); | 260 Response response = new Response.contextDoesNotExist(new Request('0', '')); |
172 expect(response.id, equals('0')); | 261 expect(response.id, equals('0')); |
173 expect(response.error, isNotNull); | 262 expect(response.error, isNotNull); |
174 expect(response.toJson(), equals({ | 263 expect(response.toJson(), equals({ |
175 Response.ID: '0', | 264 Response.ID: '0', |
176 Response.ERROR: {'code': -1, 'message': 'Context does not exist'} | 265 Response.ERROR: {'code': -1, 'message': 'Context does not exist'} |
177 })); | 266 })); |
178 } | 267 } |
(...skipping 11 matching lines...) Expand all Loading... | |
190 static void create_missingRequiredParameter() { | 279 static void create_missingRequiredParameter() { |
191 Response response = new Response.missingRequiredParameter(new Request('0', ' '), 'x'); | 280 Response response = new Response.missingRequiredParameter(new Request('0', ' '), 'x'); |
192 expect(response.id, equals('0')); | 281 expect(response.id, equals('0')); |
193 expect(response.error, isNotNull); | 282 expect(response.error, isNotNull); |
194 expect(response.toJson(), equals({ | 283 expect(response.toJson(), equals({ |
195 Response.ID: '0', | 284 Response.ID: '0', |
196 Response.ERROR: {'code': -5, 'message': 'Missing required parameter: x'} | 285 Response.ERROR: {'code': -5, 'message': 'Missing required parameter: x'} |
197 })); | 286 })); |
198 } | 287 } |
199 | 288 |
289 static void create_unknownAnalysisOption() { | |
290 Response response = new Response.unknownAnalysisOption(new Request('0', ''), 'x'); | |
291 expect(response.id, equals('0')); | |
292 expect(response.error, isNotNull); | |
293 expect(response.toJson(), equals({ | |
294 Response.ID: '0', | |
295 Response.ERROR: {'code': -6, 'message': 'Unknown analysis option: "x"'} | |
296 })); | |
297 } | |
298 | |
200 static void create_unknownRequest() { | 299 static void create_unknownRequest() { |
201 Response response = new Response.unknownRequest(new Request('0', '')); | 300 Response response = new Response.unknownRequest(new Request('0', '')); |
202 expect(response.id, equals('0')); | 301 expect(response.id, equals('0')); |
203 expect(response.error, isNotNull); | 302 expect(response.error, isNotNull); |
204 expect(response.toJson(), equals({ | 303 expect(response.toJson(), equals({ |
205 Response.ID: '0', | 304 Response.ID: '0', |
206 Response.ERROR: {'code': -7, 'message': 'Unknown request'} | 305 Response.ERROR: {'code': -7, 'message': 'Unknown request'} |
207 })); | 306 })); |
208 } | 307 } |
209 | 308 |
210 static void setResult() { | 309 static void setResult() { |
211 String resultName = 'name'; | 310 String resultName = 'name'; |
212 String resultValue = 'value'; | 311 String resultValue = 'value'; |
213 Response response = new Response('0'); | 312 Response response = new Response('0'); |
214 response.setResult(resultName, resultValue); | 313 response.setResult(resultName, resultValue); |
314 expect(response.getResult(resultName), same(resultValue)); | |
215 expect(response.toJson(), equals({ | 315 expect(response.toJson(), equals({ |
216 Response.ID: '0', | 316 Response.ID: '0', |
217 Response.ERROR: null, | 317 Response.ERROR: null, |
218 Response.RESULT: { | 318 Response.RESULT: { |
219 resultName: resultValue | 319 resultName: resultValue |
220 } | 320 } |
221 })); | 321 })); |
222 } | 322 } |
223 | 323 |
224 static void fromJson() { | 324 static void fromJson() { |
(...skipping 15 matching lines...) Expand all Loading... | |
240 static void fromJson_withResult() { | 340 static void fromJson_withResult() { |
241 Response original = new Response('myId'); | 341 Response original = new Response('myId'); |
242 original.setResult('foo', 'bar'); | 342 original.setResult('foo', 'bar'); |
243 Response response = new Response.fromJson(original.toJson()); | 343 Response response = new Response.fromJson(original.toJson()); |
244 expect(response.id, equals('myId')); | 344 expect(response.id, equals('myId')); |
245 Map<String, Object> result = response.result; | 345 Map<String, Object> result = response.result; |
246 expect(result.length, equals(1)); | 346 expect(result.length, equals(1)); |
247 expect(result['foo'], equals('bar')); | 347 expect(result['foo'], equals('bar')); |
248 } | 348 } |
249 } | 349 } |
350 | |
351 Matcher _throwsRequestFailure = throwsA(new isInstanceOf<RequestFailure>()); | |
OLD | NEW |