OLD | NEW |
(Empty) | |
| 1 library fileapi; |
| 2 import 'package:unittest/unittest.dart'; |
| 3 import 'package:unittest/html_individual_config.dart'; |
| 4 import 'dart:html'; |
| 5 import 'dart:async'; |
| 6 |
| 7 class FileAndDir { |
| 8 FileEntry file; |
| 9 DirectoryEntry dir; |
| 10 FileAndDir(this.file, this.dir); |
| 11 } |
| 12 |
| 13 FileSystem fs; |
| 14 |
| 15 main() { |
| 16 useHtmlIndividualConfiguration(); |
| 17 |
| 18 group('supported', () { |
| 19 test('supported', () { |
| 20 expect(FileSystem.supported, true); |
| 21 }); |
| 22 }); |
| 23 |
| 24 getFileSystem() { |
| 25 return window.requestFileSystem(100) |
| 26 .then((FileSystem fileSystem) { |
| 27 fs = fileSystem; |
| 28 }); |
| 29 } |
| 30 |
| 31 group('unsupported_throws', () { |
| 32 test('requestFileSystem', () { |
| 33 var expectation = FileSystem.supported ? returnsNormally : throws; |
| 34 expect(() { |
| 35 window.requestFileSystem(100); |
| 36 }, expectation); |
| 37 }); |
| 38 }); |
| 39 |
| 40 group('getDirectory', () { |
| 41 if (FileSystem.supported) { |
| 42 test('getFileSystem', getFileSystem); |
| 43 |
| 44 test('directoryDoesntExist', () { |
| 45 return fs.root.getDirectory( |
| 46 'directory2') |
| 47 .catchError((error) { |
| 48 expect(error.code, equals(FileError.NOT_FOUND_ERR)); |
| 49 }, test: (e) => e is FileError); |
| 50 }); |
| 51 |
| 52 test('directoryCreate', () { |
| 53 return fs.root.createDirectory( |
| 54 'directory3') |
| 55 .then((DirectoryEntry e) { |
| 56 expect(e.name, equals('directory3')); |
| 57 }); |
| 58 }); |
| 59 } |
| 60 }); |
| 61 |
| 62 group('getFile', () { |
| 63 if (FileSystem.supported) { |
| 64 test('getFileSystem', getFileSystem); |
| 65 |
| 66 test('fileDoesntExist', () { |
| 67 return fs.root.getFile( |
| 68 'file2') |
| 69 .catchError((error) { |
| 70 expect(error.code, equals(FileError.NOT_FOUND_ERR)); |
| 71 }, test: (e) => e is FileError); |
| 72 }); |
| 73 |
| 74 test('fileCreate', () { |
| 75 return fs.root.createFile( |
| 76 'file4') |
| 77 .then((FileEntry e) { |
| 78 expect(e.name, equals('file4')); |
| 79 expect(e.isFile, isTrue); |
| 80 return e.getMetadata(); |
| 81 }).then((Metadata metadata) { |
| 82 var changeTime = metadata.modificationTime; |
| 83 // Upped because our Windows buildbots can sometimes be particularly |
| 84 // slow. |
| 85 expect(new DateTime.now().difference(changeTime).inMinutes, |
| 86 lessThan(4)); |
| 87 expect(metadata.size, equals(0)); |
| 88 }); |
| 89 }); |
| 90 } |
| 91 }); |
| 92 |
| 93 // Do the boilerplate to get several files and directories created to then |
| 94 // test the functions that use those items. |
| 95 Future doDirSetup(String testName) { |
| 96 return fs.root.createFile( |
| 97 'file_$testName') |
| 98 .then((FileEntry file) { |
| 99 return fs.root.createDirectory( |
| 100 'dir_$testName') |
| 101 .then((DirectoryEntry dir) { |
| 102 return new Future.value(new FileAndDir(file, dir)); |
| 103 }); |
| 104 }); |
| 105 } |
| 106 |
| 107 group('directoryReader', () { |
| 108 if (FileSystem.supported) { |
| 109 test('getFileSystem', getFileSystem); |
| 110 |
| 111 test('readEntries', () { |
| 112 return doDirSetup('readEntries') |
| 113 .then((fileAndDir) { |
| 114 var reader = fileAndDir.dir.createReader(); |
| 115 return reader.readEntries(); |
| 116 }).then((entries) { |
| 117 expect(entries is List, true); |
| 118 }); |
| 119 }); |
| 120 } |
| 121 }); |
| 122 |
| 123 group('entry', () { |
| 124 if (FileSystem.supported) { |
| 125 test('getFileSystem', getFileSystem); |
| 126 |
| 127 test('copyTo', () { |
| 128 return doDirSetup('copyTo') |
| 129 .then((fileAndDir) { |
| 130 return fileAndDir.file.copyTo(fileAndDir.dir, name: 'copiedFile'); |
| 131 }).then((entry) { |
| 132 expect(entry.isFile, true); |
| 133 expect(entry.name, 'copiedFile'); |
| 134 }); |
| 135 }); |
| 136 |
| 137 test('getParent', () { |
| 138 return doDirSetup('getParent') |
| 139 .then((fileAndDir) { |
| 140 return fileAndDir.file.getParent(); |
| 141 }).then((entry) { |
| 142 expect(entry.name, ''); |
| 143 expect(entry.isFile, false); |
| 144 }); |
| 145 }); |
| 146 |
| 147 test('moveTo', () { |
| 148 return doDirSetup('moveTo') |
| 149 .then((fileAndDir) { |
| 150 return fileAndDir.file.moveTo(fileAndDir.dir, name: 'movedFile'); |
| 151 }).then((entry) { |
| 152 expect(entry.name, 'movedFile'); |
| 153 expect(entry.fullPath, '/dir_moveTo/movedFile'); |
| 154 return fs.root.getFile('file4'); |
| 155 }).catchError((error) { |
| 156 expect(error.code, equals(FileError.NOT_FOUND_ERR)); |
| 157 }, test: (e) => e is FileError); |
| 158 }); |
| 159 |
| 160 test('remove', () { |
| 161 return doDirSetup('remove') |
| 162 .then((fileAndDir) { |
| 163 return fileAndDir.file.remove().then((_) {}); |
| 164 }); |
| 165 }); |
| 166 } |
| 167 }); |
| 168 |
| 169 group('fileEntry', () { |
| 170 if (FileSystem.supported) { |
| 171 test('getFileSystem', getFileSystem); |
| 172 |
| 173 test('createWriter', () { |
| 174 return doDirSetup('createWriter') |
| 175 .then((fileAndDir) { |
| 176 return fileAndDir.file.createWriter(); |
| 177 }).then((writer) { |
| 178 expect(writer.position, 0); |
| 179 expect(writer.readyState, FileWriter.INIT); |
| 180 expect(writer.length, 0); |
| 181 }); |
| 182 }); |
| 183 |
| 184 test('file', () { |
| 185 return doDirSetup('file') |
| 186 .then((fileAndDir) { |
| 187 return fileAndDir.file.file() |
| 188 .then((fileObj) { |
| 189 expect(fileObj.name, fileAndDir.file.name); |
| 190 expect(fileObj.relativePath, ''); |
| 191 expect(new DateTime.now().difference( |
| 192 fileObj.lastModifiedDate).inSeconds, lessThan(60)); |
| 193 }); |
| 194 }); |
| 195 }); |
| 196 } |
| 197 }); |
| 198 } |
OLD | NEW |