Index: pkg/json_rpc_2/test/server/parameters_test.dart |
diff --git a/pkg/json_rpc_2/test/server/parameters_test.dart b/pkg/json_rpc_2/test/server/parameters_test.dart |
index 92194756c1b91477663c7cfdd4942f0a1ca2e9f0..8bd126ab14169dadbca8222e9c6d08ffae3ce7bb 100644 |
--- a/pkg/json_rpc_2/test/server/parameters_test.dart |
+++ b/pkg/json_rpc_2/test/server/parameters_test.dart |
@@ -20,6 +20,9 @@ void main() { |
"bool": true, |
"string": "zap", |
"list": [1, 2, 3], |
+ "date-time": "1990-01-01 00:00:00.000", |
+ "uri": "http://dartlang.org", |
+ "invalid-uri": "http://[::1", |
"map": { |
"num": 4.2, |
"bool": false |
@@ -34,6 +37,9 @@ void main() { |
"bool": true, |
"string": "zap", |
"list": [1, 2, 3], |
+ "date-time": "1990-01-01 00:00:00.000", |
+ "uri": "http://dartlang.org", |
+ "invalid-uri": "http://[::1", |
"map": { |
"num": 4.2, |
"bool": false |
@@ -195,6 +201,71 @@ void main() { |
expect(parameters['fblthp'].asMapOr({}), equals({})); |
}); |
+ test("[].asDateTime returns date/time parameters", () { |
+ expect(parameters['date-time'].asDateTime, equals(new DateTime(1990))); |
+ }); |
+ |
+ test("[].asDateTimeOr returns date/time parameters", () { |
+ expect(parameters['date-time'].asDateTimeOr(new DateTime(2014)), |
+ equals(new DateTime(1990))); |
+ }); |
+ |
+ test("[].asDateTime fails for non-date/time parameters", () { |
+ expect(() => parameters['int'].asDateTime, |
+ throwsInvalidParams('Parameter "int" for method "foo" must be a ' |
+ 'string, but was 1.')); |
+ }); |
+ |
+ test("[].asDateTimeOr succeeds for absent parameters", () { |
+ expect(parameters['fblthp'].asDateTimeOr(new DateTime(2014)), |
+ equals(new DateTime(2014))); |
+ }); |
+ |
+ test("[].asDateTime fails for non-date/time parameters", () { |
+ expect(() => parameters['int'].asDateTime, |
+ throwsInvalidParams('Parameter "int" for method "foo" must be a ' |
+ 'string, but was 1.')); |
+ }); |
+ |
+ test("[].asDateTime fails for invalid date/times", () { |
+ expect(() => parameters['string'].asDateTime, |
+ throwsInvalidParams('Parameter "string" for method "foo" must be a ' |
+ 'valid date/time, but was "zap".')); |
+ }); |
+ |
+ test("[].asUri returns URI parameters", () { |
+ expect(parameters['uri'].asUri, equals(Uri.parse('http://dartlang.org'))); |
+ }); |
+ |
+ test("[].asUriOr returns URI parameters", () { |
+ expect(parameters['uri'].asUriOr(Uri.parse('http://google.com')), |
+ equals(Uri.parse('http://dartlang.org'))); |
+ }); |
+ |
+ test("[].asUri fails for non-URI parameters", () { |
+ expect(() => parameters['int'].asUri, |
+ throwsInvalidParams('Parameter "int" for method "foo" must be a ' |
+ 'string, but was 1.')); |
+ }); |
+ |
+ test("[].asUriOr succeeds for absent parameters", () { |
+ expect(parameters['fblthp'].asUriOr(Uri.parse('http://google.com')), |
+ equals(Uri.parse('http://google.com'))); |
+ }); |
+ |
+ test("[].asUri fails for non-URI parameters", () { |
+ expect(() => parameters['int'].asUri, |
+ throwsInvalidParams('Parameter "int" for method "foo" must be a ' |
+ 'string, but was 1.')); |
+ }); |
+ |
+ test("[].asUri fails for invalid URIs", () { |
+ expect(() => parameters['invalid-uri'].asUri, |
+ throwsInvalidParams('Parameter "invalid-uri" for method "foo" must ' |
+ 'be a valid URI, but was "http://[::1".\n' |
+ 'Bad end of IPv6 host')); |
+ }); |
+ |
group("with a nested parameter map", () { |
var nested; |
setUp(() => nested = parameters['map']); |