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

/// @assertion Future<bool> exists()
/// Checks whether the file system entity with this path exists. Returns a
/// Future<bool> that completes with the result.
///
/// Since FileSystemEntity is abstract, every FileSystemEntity object is actually
/// an instance of one of the subclasses File, Directory, and Link. Calling
/// exists on an instance of one of these subclasses checks whether the object
/// exists in the file system object exists and is of the correct type (file,
/// directory, or link). To check whether a path points to an object on the file
/// system, regardless of the object's type, use the type static method.
/// @description Checks that this method checks whether the file system entity
/// with this path exists and has correct type. Test File
/// @author sgrekhov@unipro.ru

import "dart:io";
import "../../../Utils/expect.dart";
import "../file_utils.dart";

main() async {
  await inSandbox(_main);
}

_main(Directory sandbox) async {
  File file = getTempFileSync(parent: sandbox);
  Directory dir = new Directory(file.path);
  asyncStart();

  await dir.exists().then((result) {
    Expect.isFalse(result);
    asyncEnd();
  });
}
