| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // @dart = 2.9 |
| |
| library utf8_test; |
| |
| import "package:expect/expect.dart"; |
| import 'dart:convert'; |
| import 'dart:typed_data' show Uint8List; |
| |
| /// [bytes] transforms the input into some representation (eg. plain list, |
| /// Uint8List). |
| test(List<int> bytes(List<int> input)) { |
| // Test that UTF8-decoder removes leading BOM. |
| Expect.equals("a", utf8.decode(bytes([0xEF, 0xBB, 0xBF, 0x61]))); |
| Expect.equals("a", utf8.decoder.convert(bytes([0xEF, 0xBB, 0xBF, 0x61]))); |
| Expect.equals( |
| "a", new Utf8Decoder().convert(bytes([0xEF, 0xBB, 0xBF, 0x61]))); |
| Expect.equals( |
| "a", utf8.decode(bytes([0xEF, 0xBB, 0xBF, 0x61]), allowMalformed: true)); |
| Expect.equals( |
| "a", |
| new Utf8Codec(allowMalformed: true) |
| .decode(bytes([0xEF, 0xBB, 0xBF, 0x61]))); |
| Expect.equals( |
| "a", |
| new Utf8Codec(allowMalformed: true) |
| .decoder |
| .convert(bytes([0xEF, 0xBB, 0xBF, 0x61]))); |
| Expect.equals( |
| "a", |
| new Utf8Decoder(allowMalformed: true) |
| .convert(bytes([0xEF, 0xBB, 0xBF, 0x61]))); |
| Expect.equals("", utf8.decode(bytes([0xEF, 0xBB, 0xBF]))); |
| Expect.equals("", utf8.decoder.convert(bytes([0xEF, 0xBB, 0xBF]))); |
| Expect.equals("", new Utf8Decoder().convert(bytes([0xEF, 0xBB, 0xBF]))); |
| Expect.equals( |
| "", utf8.decode(bytes([0xEF, 0xBB, 0xBF]), allowMalformed: true)); |
| Expect.equals("", |
| new Utf8Codec(allowMalformed: true).decode(bytes([0xEF, 0xBB, 0xBF]))); |
| Expect.equals( |
| "", |
| new Utf8Codec(allowMalformed: true) |
| .decoder |
| .convert(bytes([0xEF, 0xBB, 0xBF]))); |
| Expect.equals("", |
| new Utf8Decoder(allowMalformed: true).convert(bytes([0xEF, 0xBB, 0xBF]))); |
| Expect.equals("a\u{FEFF}", utf8.decode(bytes([0x61, 0xEF, 0xBB, 0xBF]))); |
| Expect.equals( |
| "a\u{FEFF}", utf8.decoder.convert(bytes([0x61, 0xEF, 0xBB, 0xBF]))); |
| Expect.equals( |
| "a\u{FEFF}", new Utf8Decoder().convert(bytes([0x61, 0xEF, 0xBB, 0xBF]))); |
| Expect.equals("a\u{FEFF}", |
| utf8.decode(bytes([0x61, 0xEF, 0xBB, 0xBF]), allowMalformed: true)); |
| Expect.equals( |
| "a\u{FEFF}", |
| new Utf8Codec(allowMalformed: true) |
| .decode(bytes([0x61, 0xEF, 0xBB, 0xBF]))); |
| Expect.equals( |
| "a\u{FEFF}", |
| new Utf8Codec(allowMalformed: true) |
| .decoder |
| .convert(bytes([0x61, 0xEF, 0xBB, 0xBF]))); |
| Expect.equals( |
| "a\u{FEFF}", |
| new Utf8Decoder(allowMalformed: true) |
| .convert(bytes([0x61, 0xEF, 0xBB, 0xBF]))); |
| } |
| |
| main() { |
| test((list) => list); |
| test((list) => new Uint8List.fromList(list)); |
| } |