// Copyright (c) 2018, 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 import 'package:front_end/src/api_prototype/file_system.dart'; import 'package:front_end/src/scheme_based_file_system.dart'; import 'package:test/test.dart'; main() { test('lookup of registered schemes is handled', () { var fs1 = new MockFileSystem('scheme1'); var fs2 = new MockFileSystem('scheme2'); var fileSystem = new SchemeBasedFileSystem({'scheme1': fs1, 'scheme2': fs2}); MockFileSystemEntity e1 = fileSystem.entityForUri(Uri.parse('scheme1:a.dart')); MockFileSystemEntity e2 = fileSystem.entityForUri(Uri.parse('scheme2:a.dart')); expect(e1.fileSystem, fs1); expect(e2.fileSystem, fs2); }); test('lookup of an unregistered scheme will throw', () { var fileSystem = new SchemeBasedFileSystem({'scheme1': new MockFileSystem('scheme1')}); expect(() => fileSystem.entityForUri(Uri.parse('scheme2:a.dart')), throwsA((e) => e is FileSystemException)); }); } class MockFileSystem implements FileSystem { String scheme; MockFileSystem(this.scheme); @override FileSystemEntity entityForUri(Uri uri) { if (uri.scheme != scheme) throw "unsupported"; return new MockFileSystemEntity(uri, this); } } class MockFileSystemEntity implements FileSystemEntity { final Uri uri; final FileSystem fileSystem; MockFileSystemEntity(this.uri, this.fileSystem); noSuchMethod(m) => super.noSuchMethod(m); }