| // Copyright (c) 2021, 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. |
| // |
| // Checks that _WindowsCodePageEncoder.convert() throws an exception on |
| // platforms other than Windows. |
| |
| // @dart = 2.9 |
| |
| import "dart:io"; |
| import 'dart:mirrors'; |
| |
| import "package:expect/expect.dart"; |
| |
| ClassMirror findWindowsCodePageEncoder() { |
| final dartIo = |
| currentMirrorSystem().libraries[Uri(scheme: "dart", path: "io")]; |
| if (dartIo == null) { |
| throw StateError("dart:io not present"); |
| } |
| |
| final classes = dartIo.declarations.values |
| .where((d) => |
| d is ClassMirror && |
| d.simpleName.toString().contains('"_WindowsCodePageEncoder"')) |
| .map((d) => d as ClassMirror) |
| .toList(); |
| |
| Expect.equals( |
| 1, classes.length, "Expected exactly one _WindowsCodePageEncoder"); |
| return classes[0]; |
| } |
| |
| test() { |
| final winCodePageEncoder = findWindowsCodePageEncoder(); |
| final encoder = winCodePageEncoder.newInstance(Symbol(""), List.empty()); |
| try { |
| encoder.invoke(Symbol("convert"), List.of(["test"])); |
| Expect.isTrue(Platform.isWindows, |
| "expected UnsupportedError on ${Platform.operatingSystem}"); |
| } on UnsupportedError catch (e) { |
| Expect.isFalse( |
| Platform.isWindows, "unexpected UnsupportedError on Windows: $e"); |
| } |
| } |
| |
| void main() { |
| test(); |
| } |