| Index: test/message_test.dart | 
| diff --git a/test/message_test.dart b/test/message_test.dart | 
| index 669d9ffc1cbddd76378c633b2c66837c23467ab7..2ce557595ffee56089a9cdf72ff8f7bee5174c8f 100644 | 
| --- a/test/message_test.dart | 
| +++ b/test/message_test.dart | 
| @@ -13,8 +13,9 @@ import 'package:unittest/unittest.dart'; | 
| import 'test_util.dart'; | 
|  | 
| class _TestMessage extends Message { | 
| -  _TestMessage(Map<String, String> headers, Map<String, Object> context, | 
| -      Stream<List<int>> body) : super(body, headers: headers, context: context); | 
| +  _TestMessage(Map<String, String> headers, Map<String, Object> context, body, | 
| +      Encoding encoding) | 
| +      : super(body, headers: headers, context: context, encoding: encoding); | 
|  | 
| Message change({Map<String, String> headers, Map<String, Object> context}) { | 
| throw new UnimplementedError(); | 
| @@ -22,9 +23,8 @@ class _TestMessage extends Message { | 
| } | 
|  | 
| Message _createMessage({Map<String, String> headers, | 
| -    Map<String, Object> context, Stream<List<int>> body}) { | 
| -  if (body == null) body = new Stream.fromIterable([]); | 
| -  return new _TestMessage(headers, context, body); | 
| +    Map<String, Object> context, body, Encoding encoding}) { | 
| +  return new _TestMessage(headers, context, body, encoding); | 
| } | 
|  | 
| void main() { | 
| @@ -202,5 +202,38 @@ void main() { | 
| 'content-type': 'text/plain; charset=iso-8859-1' | 
| }).encoding, equals(LATIN1)); | 
| }); | 
| + | 
| +    test("defaults to encoding a String as UTF-8", () { | 
| +      expect(_createMessage(body: "è").read().toList(), | 
| +          completion(equals([[195, 168]]))); | 
| +    }); | 
| + | 
| +    test("uses the explicit encoding if available", () { | 
| +      expect(_createMessage(body: "è", encoding: LATIN1).read().toList(), | 
| +          completion(equals([[232]]))); | 
| +    }); | 
| + | 
| +    test("adds an explicit encoding to the content-type", () { | 
| +      var request = _createMessage( | 
| +          body: "è", encoding: LATIN1, headers: {'content-type': 'text/plain'}); | 
| +      expect(request.headers, | 
| +          containsPair('content-type', 'text/plain; charset=iso-8859-1')); | 
| +    }); | 
| + | 
| +    test("sets an absent content-type to application/octet-stream in order to " | 
| +        "set the charset", () { | 
| +      var request = _createMessage(body: "è", encoding: LATIN1); | 
| +      expect(request.headers, containsPair( | 
| +          'content-type', 'application/octet-stream; charset=iso-8859-1')); | 
| +    }); | 
| + | 
| +    test("overwrites an existing charset if given an explicit encoding", () { | 
| +      var request = _createMessage( | 
| +          body: "è", | 
| +          encoding: LATIN1, | 
| +          headers: {'content-type': 'text/plain; charset=whatever'}); | 
| +      expect(request.headers, | 
| +          containsPair('content-type', 'text/plain; charset=iso-8859-1')); | 
| +    }); | 
| }); | 
| } | 
|  |