// Copyright (c) 2020, 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. import 'dart:async'; import 'dart:html'; import 'package:expect/legacy/async_minitest.dart'; // ignore: deprecated_member_use class FileAndDir { FileEntry file; DirectoryEntry dir; FileAndDir(this.file, this.dir); } main() { if (!FileSystem.supported) return; // Prepend this file name to prevent collisions among tests running on the // same browser. const prefix = 'fileapi_entry_'; // Do the boilerplate to get several files and directories created to then // test the functions that use those items. Future doDirSetup(FileSystem fs, String testName) async { var file = await fs.root!.createFile('${prefix}file_$testName') as FileEntry; var dir = await fs.root!.createDirectory('${prefix}dir_$testName') as DirectoryEntry; return new Future.value(new FileAndDir(file, dir)); } test('copy_move', () async { final fs = await window.requestFileSystem(100); var fileAndDir = await doDirSetup(fs, 'copyTo'); var entry = await fileAndDir.file.copyTo( fileAndDir.dir, name: 'copiedFile', ); expect(entry.isFile, true, reason: "Expected File"); expect(entry.name, 'copiedFile'); // getParent fileAndDir = await doDirSetup(fs, 'getParent'); entry = await fileAndDir.file.getParent(); expect(entry.name, ''); expect(entry.isDirectory, true, reason: "Expected Directory"); // moveTo fileAndDir = await doDirSetup(fs, 'moveTo'); entry = await fileAndDir.file.moveTo(fileAndDir.dir, name: 'movedFile'); expect(entry.name, 'movedFile'); expect(entry.fullPath, '/${prefix}dir_moveTo/movedFile'); try { entry = await fs.root!.getFile('${prefix}file4'); fail("File ${prefix}file4 should not exist."); } on DomException catch (error) { expect(DomException.NOT_FOUND, error.name); } // remove fileAndDir = await doDirSetup(fs, 'remove'); expect('${prefix}file_remove', fileAndDir.file.name); await fileAndDir.file.remove(); try { await fileAndDir.dir.getFile(fileAndDir.file.name); fail("file not removed"); } on DomException catch (error) { expect(DomException.NOT_FOUND, error.name); } }); }