Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(700)

Side by Side Diff: pkg/json_rpc_2/test/server/parameters_test.dart

Issue 205713007: Add helper getters for URIs and date/times to json_rpc_2. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: bump the version Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/json_rpc_2/pubspec.yaml ('k') | sdk/lib/_internal/pub/lib/src/barback/web_socket_api.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 json_rpc_2.test.server.parameters_test; 5 library json_rpc_2.test.server.parameters_test;
6 6
7 import 'package:unittest/unittest.dart'; 7 import 'package:unittest/unittest.dart';
8 import 'package:json_rpc_2/error_code.dart' as error_code; 8 import 'package:json_rpc_2/error_code.dart' as error_code;
9 import 'package:json_rpc_2/json_rpc_2.dart' as json_rpc; 9 import 'package:json_rpc_2/json_rpc_2.dart' as json_rpc;
10 10
11 import 'utils.dart'; 11 import 'utils.dart';
12 12
13 void main() { 13 void main() {
14 group("with named parameters", () { 14 group("with named parameters", () {
15 var parameters; 15 var parameters;
16 setUp(() { 16 setUp(() {
17 parameters = new json_rpc.Parameters("foo", { 17 parameters = new json_rpc.Parameters("foo", {
18 "num": 1.5, 18 "num": 1.5,
19 "int": 1, 19 "int": 1,
20 "bool": true, 20 "bool": true,
21 "string": "zap", 21 "string": "zap",
22 "list": [1, 2, 3], 22 "list": [1, 2, 3],
23 "date-time": "1990-01-01 00:00:00.000",
24 "uri": "http://dartlang.org",
25 "invalid-uri": "http://[::1",
23 "map": { 26 "map": {
24 "num": 4.2, 27 "num": 4.2,
25 "bool": false 28 "bool": false
26 } 29 }
27 }); 30 });
28 }); 31 });
29 32
30 test("value returns the wrapped value", () { 33 test("value returns the wrapped value", () {
31 expect(parameters.value, equals({ 34 expect(parameters.value, equals({
32 "num": 1.5, 35 "num": 1.5,
33 "int": 1, 36 "int": 1,
34 "bool": true, 37 "bool": true,
35 "string": "zap", 38 "string": "zap",
36 "list": [1, 2, 3], 39 "list": [1, 2, 3],
40 "date-time": "1990-01-01 00:00:00.000",
41 "uri": "http://dartlang.org",
42 "invalid-uri": "http://[::1",
37 "map": { 43 "map": {
38 "num": 4.2, 44 "num": 4.2,
39 "bool": false 45 "bool": false
40 } 46 }
41 })); 47 }));
42 }); 48 });
43 49
44 test("[int] throws a parameter error", () { 50 test("[int] throws a parameter error", () {
45 expect(() => parameters[0], 51 expect(() => parameters[0],
46 throwsInvalidParams('Parameters for method "foo" must be passed by ' 52 throwsInvalidParams('Parameters for method "foo" must be passed by '
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 test("[].asMap fails for non-map parameters", () { 194 test("[].asMap fails for non-map parameters", () {
189 expect(() => parameters['int'].asMap, 195 expect(() => parameters['int'].asMap,
190 throwsInvalidParams('Parameter "int" for method "foo" must be an ' 196 throwsInvalidParams('Parameter "int" for method "foo" must be an '
191 'Object, but was 1.')); 197 'Object, but was 1.'));
192 }); 198 });
193 199
194 test("[].asMapOr succeeds for absent parameters", () { 200 test("[].asMapOr succeeds for absent parameters", () {
195 expect(parameters['fblthp'].asMapOr({}), equals({})); 201 expect(parameters['fblthp'].asMapOr({}), equals({}));
196 }); 202 });
197 203
204 test("[].asDateTime returns date/time parameters", () {
205 expect(parameters['date-time'].asDateTime, equals(new DateTime(1990)));
206 });
207
208 test("[].asDateTimeOr returns date/time parameters", () {
209 expect(parameters['date-time'].asDateTimeOr(new DateTime(2014)),
210 equals(new DateTime(1990)));
211 });
212
213 test("[].asDateTime fails for non-date/time parameters", () {
214 expect(() => parameters['int'].asDateTime,
215 throwsInvalidParams('Parameter "int" for method "foo" must be a '
216 'string, but was 1.'));
217 });
218
219 test("[].asDateTimeOr succeeds for absent parameters", () {
220 expect(parameters['fblthp'].asDateTimeOr(new DateTime(2014)),
221 equals(new DateTime(2014)));
222 });
223
224 test("[].asDateTime fails for non-date/time parameters", () {
225 expect(() => parameters['int'].asDateTime,
226 throwsInvalidParams('Parameter "int" for method "foo" must be a '
227 'string, but was 1.'));
228 });
229
230 test("[].asDateTime fails for invalid date/times", () {
231 expect(() => parameters['string'].asDateTime,
232 throwsInvalidParams('Parameter "string" for method "foo" must be a '
233 'valid date/time, but was "zap".'));
234 });
235
236 test("[].asUri returns URI parameters", () {
237 expect(parameters['uri'].asUri, equals(Uri.parse('http://dartlang.org')));
238 });
239
240 test("[].asUriOr returns URI parameters", () {
241 expect(parameters['uri'].asUriOr(Uri.parse('http://google.com')),
242 equals(Uri.parse('http://dartlang.org')));
243 });
244
245 test("[].asUri fails for non-URI parameters", () {
246 expect(() => parameters['int'].asUri,
247 throwsInvalidParams('Parameter "int" for method "foo" must be a '
248 'string, but was 1.'));
249 });
250
251 test("[].asUriOr succeeds for absent parameters", () {
252 expect(parameters['fblthp'].asUriOr(Uri.parse('http://google.com')),
253 equals(Uri.parse('http://google.com')));
254 });
255
256 test("[].asUri fails for non-URI parameters", () {
257 expect(() => parameters['int'].asUri,
258 throwsInvalidParams('Parameter "int" for method "foo" must be a '
259 'string, but was 1.'));
260 });
261
262 test("[].asUri fails for invalid URIs", () {
263 expect(() => parameters['invalid-uri'].asUri,
264 throwsInvalidParams('Parameter "invalid-uri" for method "foo" must '
265 'be a valid URI, but was "http://[::1".\n'
266 'Bad end of IPv6 host'));
267 });
268
198 group("with a nested parameter map", () { 269 group("with a nested parameter map", () {
199 var nested; 270 var nested;
200 setUp(() => nested = parameters['map']); 271 setUp(() => nested = parameters['map']);
201 272
202 test("[int] fails with a type error", () { 273 test("[int] fails with a type error", () {
203 expect(() => nested[0], 274 expect(() => nested[0],
204 throwsInvalidParams('Parameter "map" for method "foo" must be an ' 275 throwsInvalidParams('Parameter "map" for method "foo" must be an '
205 'Array, but was {"num":4.2,"bool":false}.')); 276 'Array, but was {"num":4.2,"bool":false}.'));
206 }); 277 });
207 278
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 test("with a complex parameter path", () { 367 test("with a complex parameter path", () {
297 var parameters = new json_rpc.Parameters("foo", { 368 var parameters = new json_rpc.Parameters("foo", {
298 'bar baz': [0, 1, 2, {'bang.zap': {'\n': 'qux'}}] 369 'bar baz': [0, 1, 2, {'bang.zap': {'\n': 'qux'}}]
299 }); 370 });
300 371
301 expect(() => parameters['bar baz'][3]['bang.zap']['\n']['bip'], 372 expect(() => parameters['bar baz'][3]['bang.zap']['\n']['bip'],
302 throwsInvalidParams('Parameter "bar baz"[3]."bang.zap"."\\n" for ' 373 throwsInvalidParams('Parameter "bar baz"[3]."bang.zap"."\\n" for '
303 'method "foo" must be an Object, but was "qux".')); 374 'method "foo" must be an Object, but was "qux".'));
304 }); 375 });
305 } 376 }
OLDNEW
« no previous file with comments | « pkg/json_rpc_2/pubspec.yaml ('k') | sdk/lib/_internal/pub/lib/src/barback/web_socket_api.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698