// Copyright (c) 2011, 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.

/// @assertion factory Uri.file(String path, {bool windows})
/// Creates a new file URI from an absolute or relative file path.
/// ...
/// If the path passed is not a legal file path ArgumentError is thrown.
/// @description Checks that ArgumentError is thrown for illegal paths
/// @author ilya

import "../../../Utils/expect.dart";

check(path, {windows = true}) {
  Expect.throws(() {
    new Uri.file(path, windows: windows);
  }, (e) => e is ArgumentError);
}

main() {
  check(':');
  check('c:pagefile.sys');
  check('c:foo/bar');
}
