OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 // | 4 // |
5 // Dart test program for testing file I/O. | 5 // Dart test program for testing file I/O. |
6 | 6 |
7 #import("dart:io"); | 7 #import("dart:io"); |
8 #import("dart:isolate"); | 8 #import("dart:isolate"); |
9 | 9 |
10 class MyListOfOneElement implements List { | 10 class MyListOfOneElement implements List { |
11 int _value; | 11 int _value; |
12 MyListOfOneElement(this._value); | 12 MyListOfOneElement(this._value); |
13 int get length() => 1; | 13 int get length() => 1; |
14 operator [](int index) => _value; | 14 operator [](int index) => _value; |
15 } | 15 } |
16 | 16 |
17 class FileTest { | 17 class FileTest { |
18 static Directory tempDirectory; | 18 static Directory tempDirectory; |
19 static int numLiveAsyncTests = 0; | 19 static int numLiveAsyncTests = 0; |
| 20 static ReceivePort port; |
20 | 21 |
21 static void asyncTestStarted() { ++numLiveAsyncTests; } | 22 static void asyncTestStarted() { ++numLiveAsyncTests; } |
22 static void asyncTestDone(String name) { | 23 static void asyncTestDone(String name) { |
23 --numLiveAsyncTests; | 24 --numLiveAsyncTests; |
24 if (numLiveAsyncTests == 0) { | 25 if (numLiveAsyncTests == 0) { |
25 deleteTempDirectory(); | 26 deleteTempDirectory(); |
| 27 port.close(); |
26 } | 28 } |
27 } | 29 } |
28 | 30 |
29 static void createTempDirectory(Function doNext) { | 31 static void createTempDirectory(Function doNext) { |
30 tempDirectory = new Directory(''); | 32 new Directory('').createTemp().then((temp) { |
31 tempDirectory.onError = (e) { | 33 tempDirectory = temp; |
32 Expect.fail("Failed creating temporary directory"); | 34 doNext(); |
33 }; | 35 }); |
34 tempDirectory.createTemp(doNext); | |
35 } | 36 } |
36 | 37 |
37 static void deleteTempDirectory() { | 38 static void deleteTempDirectory() { |
38 tempDirectory.deleteRecursivelySync(); | 39 tempDirectory.deleteRecursivelySync(); |
39 } | 40 } |
40 | 41 |
41 // Test for file read functionality. | 42 // Test for file read functionality. |
42 static void testReadStream() { | 43 static void testReadStream() { |
43 // Read a file and check part of it's contents. | 44 // Read a file and check part of it's contents. |
44 String filename = getFilename("bin/file_test.cc"); | 45 String filename = getFilename("bin/file_test.cc"); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 }; | 143 }; |
143 }; | 144 }; |
144 }; | 145 }; |
145 }; | 146 }; |
146 }; | 147 }; |
147 }; | 148 }; |
148 }; | 149 }; |
149 } | 150 } |
150 | 151 |
151 static void testRead() { | 152 static void testRead() { |
| 153 ReceivePort port = new ReceivePort(); |
152 // Read a file and check part of it's contents. | 154 // Read a file and check part of it's contents. |
153 String filename = getFilename("bin/file_test.cc"); | 155 String filename = getFilename("bin/file_test.cc"); |
154 File file = new File(filename); | 156 File file = new File(filename); |
155 file.onError = (e) { | 157 file.open(FileMode.READ).then((RandomAccessFile file) { |
156 Expect.fail("No errors expected : $e"); | |
157 }; | |
158 file.open(FileMode.READ, (RandomAccessFile file) { | |
159 List<int> buffer = new List<int>(10); | 158 List<int> buffer = new List<int>(10); |
160 file.readList(buffer, 0, 5, (bytes_read) { | 159 file.readList(buffer, 0, 5).then((bytes_read) { |
161 Expect.equals(5, bytes_read); | 160 Expect.equals(5, bytes_read); |
162 file.readList(buffer, 5, 5, (bytes_read) { | 161 file.readList(buffer, 5, 5).then((bytes_read) { |
163 Expect.equals(5, bytes_read); | 162 Expect.equals(5, bytes_read); |
164 Expect.equals(47, buffer[0]); // represents '/' in the file. | 163 Expect.equals(47, buffer[0]); // represents '/' in the file. |
165 Expect.equals(47, buffer[1]); // represents '/' in the file. | 164 Expect.equals(47, buffer[1]); // represents '/' in the file. |
166 Expect.equals(32, buffer[2]); // represents ' ' in the file. | 165 Expect.equals(32, buffer[2]); // represents ' ' in the file. |
167 Expect.equals(67, buffer[3]); // represents 'C' in the file. | 166 Expect.equals(67, buffer[3]); // represents 'C' in the file. |
168 Expect.equals(111, buffer[4]); // represents 'o' in the file. | 167 Expect.equals(111, buffer[4]); // represents 'o' in the file. |
169 Expect.equals(112, buffer[5]); // represents 'p' in the file. | 168 Expect.equals(112, buffer[5]); // represents 'p' in the file. |
170 Expect.equals(121, buffer[6]); // represents 'y' in the file. | 169 Expect.equals(121, buffer[6]); // represents 'y' in the file. |
171 Expect.equals(114, buffer[7]); // represents 'r' in the file. | 170 Expect.equals(114, buffer[7]); // represents 'r' in the file. |
172 Expect.equals(105, buffer[8]); // represents 'i' in the file. | 171 Expect.equals(105, buffer[8]); // represents 'i' in the file. |
173 Expect.equals(103, buffer[9]); // represents 'g' in the file. | 172 Expect.equals(103, buffer[9]); // represents 'g' in the file. |
174 file.close(() => null); | 173 file.close().then((ignore) => port.close()); |
175 }); | 174 }); |
176 }); | 175 }); |
177 }); | 176 }); |
178 } | 177 } |
179 | 178 |
180 static void testReadSync() { | 179 static void testReadSync() { |
181 // Read a file and check part of it's contents. | 180 // Read a file and check part of it's contents. |
182 String filename = getFilename("bin/file_test.cc"); | 181 String filename = getFilename("bin/file_test.cc"); |
183 RandomAccessFile file = (new File(filename)).openSync(); | 182 RandomAccessFile file = (new File(filename)).openSync(); |
184 List<int> buffer = new List<int>(42); | 183 List<int> buffer = new List<int>(42); |
(...skipping 14 matching lines...) Expand all Loading... |
199 Expect.equals(103, buffer[9]); // represents 'g' in the file. | 198 Expect.equals(103, buffer[9]); // represents 'g' in the file. |
200 Expect.equals(104, buffer[10]); // represents 'h' in the file. | 199 Expect.equals(104, buffer[10]); // represents 'h' in the file. |
201 Expect.equals(116, buffer[11]); // represents 't' in the file. | 200 Expect.equals(116, buffer[11]); // represents 't' in the file. |
202 } | 201 } |
203 | 202 |
204 // Test for file read and write functionality. | 203 // Test for file read and write functionality. |
205 static void testReadWrite() { | 204 static void testReadWrite() { |
206 // Read a file. | 205 // Read a file. |
207 String inFilename = getFilename("tests/vm/data/fixed_length_file"); | 206 String inFilename = getFilename("tests/vm/data/fixed_length_file"); |
208 final File file = new File(inFilename); | 207 final File file = new File(inFilename); |
209 file.onError = (e) { | 208 file.open(FileMode.READ).then((openedFile) { |
210 Expect.fail("No errors expected : $e"); | |
211 }; | |
212 file.open(FileMode.READ, (RandomAccessFile openedFile) { | |
213 openedFile.onError = (s) { | |
214 Expect.fail("No errors expected : $s"); | |
215 }; | |
216 List<int> buffer1 = new List<int>(42); | 209 List<int> buffer1 = new List<int>(42); |
217 openedFile.readList(buffer1, 0, 42, (bytes_read) { | 210 openedFile.readList(buffer1, 0, 42).then((bytes_read) { |
218 Expect.equals(42, bytes_read); | 211 Expect.equals(42, bytes_read); |
219 openedFile.close(() { | 212 openedFile.close().then((ignore) { |
220 // Write the contents of the file just read into another file. | 213 // Write the contents of the file just read into another file. |
221 String outFilename = tempDirectory.path + "/out_read_write"; | 214 String outFilename = tempDirectory.path + "/out_read_write"; |
222 final File file2 = new File(outFilename); | 215 final File file2 = new File(outFilename); |
223 file2.onError = (e) { | 216 file2.create().then((ignore) { |
224 Expect.fail("No errors expected : $e"); | 217 file2.fullPath().then((s) { |
225 }; | |
226 file2.create(() { | |
227 file2.fullPath((s) { | |
228 Expect.isTrue(new File(s).existsSync()); | 218 Expect.isTrue(new File(s).existsSync()); |
229 if (s[0] != '/' && s[0] != '\\' && s[1] != ':') { | 219 if (s[0] != '/' && s[0] != '\\' && s[1] != ':') { |
230 Expect.fail("Not a full path"); | 220 Expect.fail("Not a full path"); |
231 } | 221 } |
232 file2.open(FileMode.WRITE, (RandomAccessFile openedFile2) { | 222 file2.open(FileMode.WRITE).then((openedFile2) { |
233 openedFile2.onError = (s) { | 223 openedFile2.writeList(buffer1, 0, bytes_read).then((ignore) { |
234 Expect.fail("No errors expected : $s"); | 224 openedFile2.close().then((ignore) { |
235 }; | |
236 openedFile2.writeList(buffer1, 0, bytes_read); | |
237 openedFile2.onNoPendingWrites = () { | |
238 openedFile2.close(() { | |
239 List<int> buffer2 = new List<int>(bytes_read); | 225 List<int> buffer2 = new List<int>(bytes_read); |
240 final File file3 = new File(outFilename); | 226 final File file3 = new File(outFilename); |
241 file3.onError = (e) { | 227 file3.open(FileMode.READ).then((openedFile3) { |
242 Expect.fail("No errors expected : $e"); | 228 openedFile3.readList(buffer2, 0, 42).then((bytes_read) { |
243 }; | 229 Expect.equals(42, bytes_read); |
244 file3.open(FileMode.READ, (RandomAccessFile openedFile3) { | 230 openedFile3.close().then((ignore) { |
245 openedFile3.onError = (s) { | |
246 Expect.fail("No errors expected : $s"); | |
247 }; | |
248 openedFile3.readList(buffer2, 0, 42, (bytes_read) { | |
249 Expect.equals(42, bytes_read); | |
250 openedFile3.close(() { | |
251 // Now compare the two buffers to check if they | 231 // Now compare the two buffers to check if they |
252 // are identical. | 232 // are identical. |
253 Expect.equals(buffer1.length, buffer2.length); | 233 Expect.equals(buffer1.length, buffer2.length); |
254 for (int i = 0; i < buffer1.length; i++) { | 234 for (int i = 0; i < buffer1.length; i++) { |
255 Expect.equals(buffer1[i], buffer2[i]); | 235 Expect.equals(buffer1[i], buffer2[i]); |
256 } | 236 } |
257 // Delete the output file. | 237 // Delete the output file. |
258 final file4 = file3; | 238 final file4 = file3; |
259 file4.delete(() { | 239 file4.delete().then((ignore) { |
260 file4.exists((exists) { | 240 file4.exists().then((exists) { |
261 Expect.isFalse(exists); | 241 Expect.isFalse(exists); |
262 asyncTestDone("testReadWrite"); | 242 asyncTestDone("testReadWrite"); |
263 }); | 243 }); |
264 }); | 244 }); |
265 }); | 245 }); |
266 }); | 246 }); |
267 }); | 247 }); |
268 }); | 248 }); |
269 }; | 249 }); |
270 }); | 250 }); |
271 }); | 251 }); |
272 }); | 252 }); |
273 }); | 253 }); |
274 }); | 254 }); |
275 }); | 255 }); |
276 asyncTestStarted(); | 256 asyncTestStarted(); |
277 } | 257 } |
278 | 258 |
279 static void testWriteAppend() { | 259 static void testWriteAppend() { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 outStream.close(); | 292 outStream.close(); |
313 outStream.onClosed = () { | 293 outStream.onClosed = () { |
314 File file2 = new File(filename); | 294 File file2 = new File(filename); |
315 OutputStream appendingOutput = | 295 OutputStream appendingOutput = |
316 file2.openOutputStream(FileMode.APPEND); | 296 file2.openOutputStream(FileMode.APPEND); |
317 appendingOutput.write(buffer); | 297 appendingOutput.write(buffer); |
318 appendingOutput.onNoPendingWrites = () { | 298 appendingOutput.onNoPendingWrites = () { |
319 appendingOutput.close(); | 299 appendingOutput.close(); |
320 appendingOutput.onClosed = () { | 300 appendingOutput.onClosed = () { |
321 File file3 = new File(filename); | 301 File file3 = new File(filename); |
322 file3.open(FileMode.READ, (RandomAccessFile openedFile) { | 302 file3.open(FileMode.READ).then((RandomAccessFile openedFile) { |
323 openedFile.length((int length) { | 303 openedFile.length().then((int length) { |
324 Expect.equals(content.length * 2, length); | 304 Expect.equals(content.length * 2, length); |
325 openedFile.close(() { | 305 openedFile.close().then((ignore) { |
326 file3.delete(() { | 306 file3.delete().then((ignore) { |
327 asyncTestDone("testOutputStreamWriteAppend"); | 307 asyncTestDone("testOutputStreamWriteAppend"); |
328 }); | 308 }); |
329 }); | 309 }); |
330 }); | 310 }); |
331 }); | 311 }); |
332 }; | 312 }; |
333 }; | 313 }; |
334 }; | 314 }; |
335 }; | 315 }; |
336 asyncTestStarted(); | 316 asyncTestStarted(); |
(...skipping 10 matching lines...) Expand all Loading... |
347 outStream.writeString("abcdABCD"); | 327 outStream.writeString("abcdABCD"); |
348 outStream.writeString("abcdABCD", Encoding.UTF_8); | 328 outStream.writeString("abcdABCD", Encoding.UTF_8); |
349 outStream.writeString("abcdABCD", Encoding.ISO_8859_1); | 329 outStream.writeString("abcdABCD", Encoding.ISO_8859_1); |
350 outStream.writeString("abcdABCD", Encoding.ASCII); | 330 outStream.writeString("abcdABCD", Encoding.ASCII); |
351 outStream.writeString("æøå", Encoding.UTF_8); | 331 outStream.writeString("æøå", Encoding.UTF_8); |
352 outStream.onNoPendingWrites = () { | 332 outStream.onNoPendingWrites = () { |
353 outStream.close(); | 333 outStream.close(); |
354 outStream.onClosed = () { | 334 outStream.onClosed = () { |
355 RandomAccessFile raf = file.openSync(); | 335 RandomAccessFile raf = file.openSync(); |
356 Expect.equals(38, raf.lengthSync()); | 336 Expect.equals(38, raf.lengthSync()); |
| 337 raf.close().then((ignore) { |
| 338 asyncTestDone("testOutputStreamWriteString"); |
| 339 }); |
357 }; | 340 }; |
358 }; | 341 }; |
359 asyncTestStarted(); | 342 asyncTestStarted(); |
360 } | 343 } |
361 | 344 |
362 | 345 |
363 static void testReadWriteSync() { | 346 static void testReadWriteSync() { |
364 // Read a file. | 347 // Read a file. |
365 String inFilename = getFilename("tests/vm/data/fixed_length_file"); | 348 String inFilename = getFilename("tests/vm/data/fixed_length_file"); |
366 RandomAccessFile file = (new File(inFilename)).openSync(); | 349 RandomAccessFile file = (new File(inFilename)).openSync(); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 file.createSync(); | 387 file.createSync(); |
405 RandomAccessFile openedFile = file.openSync(); | 388 RandomAccessFile openedFile = file.openSync(); |
406 Expect.equals(-1, openedFile.readByteSync()); | 389 Expect.equals(-1, openedFile.readByteSync()); |
407 openedFile.closeSync(); | 390 openedFile.closeSync(); |
408 file.deleteSync(); | 391 file.deleteSync(); |
409 } | 392 } |
410 | 393 |
411 static void testReadEmptyFile() { | 394 static void testReadEmptyFile() { |
412 String fileName = tempDirectory.path + "/empty_file"; | 395 String fileName = tempDirectory.path + "/empty_file"; |
413 File file = new File(fileName); | 396 File file = new File(fileName); |
414 file.onError = (e) { | |
415 Expect.fail("No errors expected : $e"); | |
416 }; | |
417 asyncTestStarted(); | 397 asyncTestStarted(); |
418 file.create(() { | 398 file.create().then((ignore) { |
419 file.open(FileMode.READ, (RandomAccessFile openedFile) { | 399 file.open(FileMode.READ).then((RandomAccessFile openedFile) { |
420 openedFile.readByte((int byte) { | 400 var readByteFuture = openedFile.readByte(); |
| 401 readByteFuture.then((int byte) { |
421 Expect.equals(-1, byte); | 402 Expect.equals(-1, byte); |
| 403 openedFile.close().then((ignore) { |
| 404 asyncTestDone("testReadEmptyFile"); |
| 405 }); |
422 }); | 406 }); |
423 openedFile.onError = (e) { | |
424 Expect.isTrue(e is FileIOException); | |
425 openedFile.close(() { | |
426 file.delete(() { | |
427 asyncTestDone("testReadEmptyFile"); | |
428 }); | |
429 }); | |
430 }; | |
431 }); | 407 }); |
432 }); | 408 }); |
433 } | 409 } |
434 | 410 |
435 // Test for file write of different types of lists. | 411 // Test for file write of different types of lists. |
436 static void testWriteVariousLists() { | 412 static void testWriteVariousLists() { |
437 asyncTestStarted(); | 413 asyncTestStarted(); |
438 final String fileName = "${tempDirectory.path}/testWriteVariousLists"; | 414 final String fileName = "${tempDirectory.path}/testWriteVariousLists"; |
439 final File file = new File(fileName); | 415 final File file = new File(fileName); |
440 file.onError = (e) => Expect.fail("No errors expected : $e"); | 416 file.create().then((ignore) { |
441 file.create(() { | 417 file.open(FileMode.WRITE).then((RandomAccessFile openedFile) { |
442 file.open(FileMode.WRITE, (RandomAccessFile openedFile) { | |
443 // Write bytes from 0 to 7. | 418 // Write bytes from 0 to 7. |
444 openedFile.writeList([0], 0, 1); | 419 openedFile.writeList([0], 0, 1); |
445 openedFile.writeList(const [1], 0, 1); | 420 openedFile.writeList(const [1], 0, 1); |
446 openedFile.writeList(new MyListOfOneElement(2), 0, 1); | 421 openedFile.writeList(new MyListOfOneElement(2), 0, 1); |
447 var x = 12345678901234567890123456789012345678901234567890; | 422 var x = 12345678901234567890123456789012345678901234567890; |
448 var y = 12345678901234567890123456789012345678901234567893; | 423 var y = 12345678901234567890123456789012345678901234567893; |
449 openedFile.writeList([y - x], 0, 1); | 424 openedFile.writeList([y - x], 0, 1); |
450 openedFile.writeList([260], 0, 1); // 260 = 256 + 4 = 0x104. | 425 openedFile.writeList([260], 0, 1); // 260 = 256 + 4 = 0x104. |
451 openedFile.writeList(const [261], 0, 1); | 426 openedFile.writeList(const [261], 0, 1); |
452 openedFile.writeList(new MyListOfOneElement(262), 0, 1); | 427 openedFile.writeList(new MyListOfOneElement(262), 0, 1); |
453 x = 12345678901234567890123456789012345678901234567890; | 428 x = 12345678901234567890123456789012345678901234567890; |
454 y = 12345678901234567890123456789012345678901234568153; | 429 y = 12345678901234567890123456789012345678901234568153; |
455 openedFile.writeList([y - x], 0, 1); | 430 openedFile.writeList([y - x], 0, 1).then((ignore) { |
456 | 431 openedFile.close().then((ignore) { |
457 openedFile.onError = (e) => Expect.fail("No errors expected : $e"); | |
458 openedFile.onNoPendingWrites = () { | |
459 openedFile.close(() { | |
460 // Check the written bytes. | 432 // Check the written bytes. |
461 final File file2 = new File(fileName); | 433 final File file2 = new File(fileName); |
462 var openedFile2 = file2.openSync(); | 434 var openedFile2 = file2.openSync(); |
463 var length = openedFile2.lengthSync(); | 435 var length = openedFile2.lengthSync(); |
464 Expect.equals(8, length); | 436 Expect.equals(8, length); |
465 List data = new List(length); | 437 List data = new List(length); |
466 openedFile2.readListSync(data, 0, length); | 438 openedFile2.readListSync(data, 0, length); |
467 for (var i = 0; i < data.length; i++) { | 439 for (var i = 0; i < data.length; i++) { |
468 Expect.equals(i, data[i]); | 440 Expect.equals(i, data[i]); |
469 } | 441 } |
470 openedFile2.closeSync(); | 442 openedFile2.closeSync(); |
471 file2.deleteSync(); | 443 file2.deleteSync(); |
472 asyncTestDone("testWriteVariousLists"); | 444 asyncTestDone("testWriteVariousLists"); |
473 }); | 445 }); |
474 }; | 446 }); |
475 }); | 447 }); |
476 }); | 448 }); |
477 } | 449 } |
478 | 450 |
479 static void testDirectory() { | 451 static void testDirectory() { |
480 asyncTestStarted(); | 452 asyncTestStarted(); |
481 | 453 |
482 // Port to verify that the test completes. | 454 // Port to verify that the test completes. |
483 var port = new ReceivePort(); | 455 var port = new ReceivePort(); |
484 port.receive((message, replyTo) { | 456 port.receive((message, replyTo) { |
485 port.close(); | 457 port.close(); |
486 Expect.equals(1, message); | 458 Expect.equals(1, message); |
487 asyncTestDone("testDirectory"); | 459 asyncTestDone("testDirectory"); |
488 }); | 460 }); |
489 | 461 |
490 var tempDir = tempDirectory.path; | 462 var tempDir = tempDirectory.path; |
491 var file = new File("${tempDir}/testDirectory"); | 463 var file = new File("${tempDir}/testDirectory"); |
492 var errors = 0; | 464 var errors = 0; |
493 file.directory((d) => Expect.fail("non-existing file")); | 465 var dirFuture = file.directory(); |
494 file.onError = (e) { | 466 dirFuture.then((d) => Expect.fail("non-existing file")); |
495 file.onError = (e) => Expect.fail("no error expected"); | 467 dirFuture.handleException((e) { |
496 file.create(() { | 468 file.create().then((ignore) { |
497 file.directory((Directory d) { | 469 file.directory().then((Directory d) { |
498 d.onError = (s) => Expect.fail("no error expected"); | 470 d.exists().then((exists) { |
499 d.exists((exists) { | |
500 Expect.isTrue(exists); | 471 Expect.isTrue(exists); |
501 Expect.isTrue(d.path.endsWith(tempDir)); | 472 Expect.isTrue(d.path.endsWith(tempDir)); |
502 file.delete(() { | 473 file.delete().then((ignore) { |
503 var file_dir = new File("."); | 474 var fileDir = new File("."); |
504 file_dir.directory((d) => Expect.fail("non-existing file")); | 475 var dirFuture2 = fileDir.directory(); |
505 file_dir.onError = (e) { | 476 dirFuture2.then((d) => Expect.fail("non-existing file")); |
506 var file_dir = new File(tempDir); | 477 dirFuture2.handleException((e) { |
507 file_dir.directory((d) => Expect.fail("non-existing file")); | 478 var fileDir = new File(tempDir); |
508 file_dir.onError = (e) => port.toSendPort().send(1); | 479 var dirFuture3 = fileDir.directory(); |
509 }; | 480 dirFuture3.then((d) => Expect.fail("non-existing file")); |
| 481 dirFuture3.handleException((e) { |
| 482 port.toSendPort().send(1); |
| 483 return true; |
| 484 }); |
| 485 return true; |
| 486 }); |
510 }); | 487 }); |
511 }); | 488 }); |
512 }); | 489 }); |
513 }); | 490 }); |
514 }; | 491 return true; |
| 492 }); |
515 } | 493 } |
516 | 494 |
517 static void testDirectorySync() { | 495 static void testDirectorySync() { |
518 var tempDir = tempDirectory.path; | 496 var tempDir = tempDirectory.path; |
519 var file = new File("${tempDir}/testDirectorySync"); | 497 var file = new File("${tempDir}/testDirectorySync"); |
520 // Non-existing file should throw exception. | 498 // Non-existing file should throw exception. |
521 Expect.throws(file.directorySync, (e) { return e is FileIOException; }); | 499 Expect.throws(file.directorySync, (e) { return e is FileIOException; }); |
522 file.createSync(); | 500 file.createSync(); |
523 // Check that the path of the returned directory is the temp directory. | 501 // Check that the path of the returned directory is the temp directory. |
524 Directory d = file.directorySync(); | 502 Directory d = file.directorySync(); |
525 Expect.isTrue(d.existsSync()); | 503 Expect.isTrue(d.existsSync()); |
526 Expect.isTrue(d.path.endsWith(tempDir)); | 504 Expect.isTrue(d.path.endsWith(tempDir)); |
527 file.deleteSync(); | 505 file.deleteSync(); |
528 // Directories should throw exception. | 506 // Directories should throw exception. |
529 var file_dir = new File("."); | 507 var file_dir = new File("."); |
530 Expect.throws(file_dir.directorySync, (e) { return e is FileIOException; }); | 508 Expect.throws(file_dir.directorySync, (e) { return e is FileIOException; }); |
531 file_dir = new File(tempDir); | 509 file_dir = new File(tempDir); |
532 Expect.throws(file_dir.directorySync, (e) { return e is FileIOException; }); | 510 Expect.throws(file_dir.directorySync, (e) { return e is FileIOException; }); |
533 } | 511 } |
534 | 512 |
535 // Test for file length functionality. | 513 // Test for file length functionality. |
536 static void testLength() { | 514 static void testLength() { |
| 515 var port = new ReceivePort(); |
537 String filename = getFilename("tests/vm/data/fixed_length_file"); | 516 String filename = getFilename("tests/vm/data/fixed_length_file"); |
538 File file = new File(filename); | 517 File file = new File(filename); |
539 RandomAccessFile openedFile = file.openSync(); | 518 RandomAccessFile openedFile = file.openSync(); |
540 openedFile.onError = (e) => Expect.fail("No errors expected"); | 519 openedFile.length().then((length) { |
541 file.onError = (e) => Expect.fail("No errors expected"); | |
542 openedFile.length((length) { | |
543 Expect.equals(42, length); | 520 Expect.equals(42, length); |
544 openedFile.close(() => null); | 521 openedFile.close().then((ignore) => port.close()); |
545 }); | 522 }); |
546 file.length((length) { | 523 file.length().then((length) { |
547 Expect.equals(42, length); | 524 Expect.equals(42, length); |
548 }); | 525 }); |
549 } | 526 } |
550 | 527 |
551 static void testLengthSync() { | 528 static void testLengthSync() { |
552 String filename = getFilename("tests/vm/data/fixed_length_file"); | 529 String filename = getFilename("tests/vm/data/fixed_length_file"); |
553 File file = new File(filename); | 530 File file = new File(filename); |
554 RandomAccessFile openedFile = file.openSync(); | 531 RandomAccessFile openedFile = file.openSync(); |
555 Expect.equals(42, file.lengthSync()); | 532 Expect.equals(42, file.lengthSync()); |
556 Expect.equals(42, openedFile.lengthSync()); | 533 Expect.equals(42, openedFile.lengthSync()); |
557 openedFile.closeSync(); | 534 openedFile.closeSync(); |
558 } | 535 } |
559 | 536 |
560 // Test for file position functionality. | 537 // Test for file position functionality. |
561 static void testPosition() { | 538 static void testPosition() { |
| 539 var port = new ReceivePort(); |
562 String filename = getFilename("tests/vm/data/fixed_length_file"); | 540 String filename = getFilename("tests/vm/data/fixed_length_file"); |
563 RandomAccessFile input = (new File(filename)).openSync(); | 541 RandomAccessFile input = (new File(filename)).openSync(); |
564 input.onError = (e) => Expect.fail("No errors expected"); | 542 input.position().then((position) { |
565 input.position((position) { | |
566 Expect.equals(0, position); | 543 Expect.equals(0, position); |
567 List<int> buffer = new List<int>(100); | 544 List<int> buffer = new List<int>(100); |
568 input.readList(buffer, 0, 12, (bytes_read) { | 545 input.readList(buffer, 0, 12).then((bytes_read) { |
569 input.position((position) { | 546 input.position().then((position) { |
570 Expect.equals(12, position); | 547 Expect.equals(12, position); |
571 input.readList(buffer, 12, 6, (bytes_read) { | 548 input.readList(buffer, 12, 6).then((bytes_read) { |
572 input.position((position) { | 549 input.position().then((position) { |
573 Expect.equals(18, position); | 550 Expect.equals(18, position); |
574 input.setPosition(8, () { | 551 input.setPosition(8).then((ignore) { |
575 input.position((position) { | 552 input.position().then((position) { |
576 Expect.equals(8, position); | 553 Expect.equals(8, position); |
577 input.close(() => null); | 554 input.close().then((ignore) => port.close()); |
578 }); | 555 }); |
579 }); | 556 }); |
580 }); | 557 }); |
581 }); | 558 }); |
582 }); | 559 }); |
583 }); | 560 }); |
584 }); | 561 }); |
585 } | 562 } |
586 | 563 |
587 static void testPositionSync() { | 564 static void testPositionSync() { |
588 String filename = getFilename("tests/vm/data/fixed_length_file"); | 565 String filename = getFilename("tests/vm/data/fixed_length_file"); |
589 RandomAccessFile input = (new File(filename)).openSync(); | 566 RandomAccessFile input = (new File(filename)).openSync(); |
590 Expect.equals(0, input.positionSync()); | 567 Expect.equals(0, input.positionSync()); |
591 List<int> buffer = new List<int>(100); | 568 List<int> buffer = new List<int>(100); |
592 input.readListSync(buffer, 0, 12); | 569 input.readListSync(buffer, 0, 12); |
593 Expect.equals(12, input.positionSync()); | 570 Expect.equals(12, input.positionSync()); |
594 input.readListSync(buffer, 12, 6); | 571 input.readListSync(buffer, 12, 6); |
595 Expect.equals(18, input.positionSync()); | 572 Expect.equals(18, input.positionSync()); |
596 input.setPositionSync(8); | 573 input.setPositionSync(8); |
597 Expect.equals(8, input.positionSync()); | 574 Expect.equals(8, input.positionSync()); |
598 input.closeSync(); | 575 input.closeSync(); |
599 } | 576 } |
600 | 577 |
601 static void testTruncate() { | 578 static void testTruncate() { |
602 File file = new File(tempDirectory.path + "/out_truncate"); | 579 File file = new File(tempDirectory.path + "/out_truncate"); |
603 List buffer = const [65, 65, 65, 65, 65, 65, 65, 65, 65, 65]; | 580 List buffer = const [65, 65, 65, 65, 65, 65, 65, 65, 65, 65]; |
604 file.onError = (e) => Expect.fail("No errors expected: $e"); | 581 file.open(FileMode.WRITE).then((RandomAccessFile openedFile) { |
605 file.open(FileMode.WRITE, (RandomAccessFile openedFile) { | 582 openedFile.writeList(buffer, 0, 10).then((ignore) { |
606 openedFile.writeList(buffer, 0, 10); | 583 openedFile.length().then((length) { |
607 openedFile.onNoPendingWrites = () { | |
608 openedFile.length((length) { | |
609 Expect.equals(10, length); | 584 Expect.equals(10, length); |
610 openedFile.truncate(5, () { | 585 openedFile.truncate(5).then((ignore) { |
611 openedFile.length((length) { | 586 openedFile.length().then((length) { |
612 Expect.equals(5, length); | 587 Expect.equals(5, length); |
613 openedFile.close(() { | 588 openedFile.close().then((ignore) { |
614 file.delete(() { | 589 file.delete().then((ignore) { |
615 file.exists((exists) { | 590 file.exists().then((exists) { |
616 Expect.isFalse(exists); | 591 Expect.isFalse(exists); |
617 asyncTestDone("testTruncate"); | 592 asyncTestDone("testTruncate"); |
618 }); | 593 }); |
619 }); | 594 }); |
620 }); | 595 }); |
621 }); | 596 }); |
622 }); | 597 }); |
623 }); | 598 }); |
624 }; | 599 }); |
625 }); | 600 }); |
626 asyncTestStarted(); | 601 asyncTestStarted(); |
627 } | 602 } |
628 | 603 |
629 static void testTruncateSync() { | 604 static void testTruncateSync() { |
630 File file = new File(tempDirectory.path + "/out_truncate_sync"); | 605 File file = new File(tempDirectory.path + "/out_truncate_sync"); |
631 List buffer = const [65, 65, 65, 65, 65, 65, 65, 65, 65, 65]; | 606 List buffer = const [65, 65, 65, 65, 65, 65, 65, 65, 65, 65]; |
632 RandomAccessFile openedFile = file.openSync(FileMode.WRITE); | 607 RandomAccessFile openedFile = file.openSync(FileMode.WRITE); |
633 openedFile.writeListSync(buffer, 0, 10); | 608 openedFile.writeListSync(buffer, 0, 10); |
634 Expect.equals(10, openedFile.lengthSync()); | 609 Expect.equals(10, openedFile.lengthSync()); |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 wrongExceptionCaught = true; | 817 wrongExceptionCaught = true; |
843 } | 818 } |
844 Expect.equals(true, exceptionCaught); | 819 Expect.equals(true, exceptionCaught); |
845 Expect.equals(true, !wrongExceptionCaught); | 820 Expect.equals(true, !wrongExceptionCaught); |
846 openedFile.closeSync(); | 821 openedFile.closeSync(); |
847 file.deleteSync(); | 822 file.deleteSync(); |
848 } | 823 } |
849 | 824 |
850 static void testOpenDirectoryAsFile() { | 825 static void testOpenDirectoryAsFile() { |
851 var f = new File('.'); | 826 var f = new File('.'); |
852 f.open(FileMode.READ, (r) => Expect.fail('Directory opened as file')); | 827 var future = f.open(FileMode.READ); |
853 f.onError = (e) => null; | 828 future.then((r) => Expect.fail('Directory opened as file')); |
| 829 future.handleException((e) => true); |
854 } | 830 } |
855 | 831 |
856 static void testOpenDirectoryAsFileSync() { | 832 static void testOpenDirectoryAsFileSync() { |
857 var f = new File('.'); | 833 var f = new File('.'); |
858 try { | 834 try { |
859 f.openSync(); | 835 f.openSync(); |
860 Expect.fail("Expected exception opening directory as file"); | 836 Expect.fail("Expected exception opening directory as file"); |
861 } catch (var e) { | 837 } catch (var e) { |
862 Expect.isTrue(e is FileIOException); | 838 Expect.isTrue(e is FileIOException); |
863 } | 839 } |
864 } | 840 } |
865 | 841 |
866 static void testReadAsBytes() { | 842 static void testReadAsBytes() { |
867 var port = new ReceivePort(); | 843 var port = new ReceivePort(); |
868 port.receive((result, replyTo) { | 844 port.receive((result, replyTo) { |
869 port.close(); | 845 port.close(); |
870 Expect.equals(42, result); | 846 Expect.equals(42, result); |
871 }); | 847 }); |
872 var name = getFilename("tests/vm/data/fixed_length_file"); | 848 var name = getFilename("tests/vm/data/fixed_length_file"); |
873 var f = new File(name); | 849 var f = new File(name); |
874 f.readAsBytes((bytes) { | 850 f.readAsBytes().then((bytes) { |
875 Expect.isTrue(new String.fromCharCodes(bytes).endsWith("42 bytes.")); | 851 Expect.isTrue(new String.fromCharCodes(bytes).endsWith("42 bytes.")); |
876 port.toSendPort().send(bytes.length); | 852 port.toSendPort().send(bytes.length); |
877 }); | 853 }); |
878 f.onError = (e) => Expect.fail("No errors expected: $e"); | |
879 } | 854 } |
880 | 855 |
881 static void testReadAsBytesSync() { | 856 static void testReadAsBytesSync() { |
882 var name = getFilename("tests/vm/data/fixed_length_file"); | 857 var name = getFilename("tests/vm/data/fixed_length_file"); |
883 var bytes = new File(name).readAsBytesSync(); | 858 var bytes = new File(name).readAsBytesSync(); |
884 Expect.isTrue(new String.fromCharCodes(bytes).endsWith("42 bytes.")); | 859 Expect.isTrue(new String.fromCharCodes(bytes).endsWith("42 bytes.")); |
885 Expect.equals(bytes.length, 42); | 860 Expect.equals(bytes.length, 42); |
886 } | 861 } |
887 | 862 |
888 static void testReadAsText() { | 863 static void testReadAsText() { |
889 var port = new ReceivePort(); | 864 var port = new ReceivePort(); |
890 port.receive((result, replyTo) { | 865 port.receive((result, replyTo) { |
891 port.close(); | 866 port.close(); |
892 Expect.equals(1, result); | 867 Expect.equals(1, result); |
893 }); | 868 }); |
894 var name = getFilename("tests/vm/data/fixed_length_file"); | 869 var name = getFilename("tests/vm/data/fixed_length_file"); |
895 var f = new File(name); | 870 var f = new File(name); |
896 f.readAsText(Encoding.UTF_8, (text) { | 871 f.readAsText(Encoding.UTF_8).then((text) { |
897 Expect.isTrue(text.endsWith("42 bytes.")); | 872 Expect.isTrue(text.endsWith("42 bytes.")); |
898 Expect.equals(42, text.length); | 873 Expect.equals(42, text.length); |
899 var name = getDataFilename("tests/standalone/io/read_as_text.dat"); | 874 var name = getDataFilename("tests/standalone/io/read_as_text.dat"); |
900 var f = new File(name); | 875 var f = new File(name); |
901 f.onError = (e) => Expect.fail("No errors expected: $e"); | 876 f.readAsText(Encoding.UTF_8).then((text) { |
902 f.readAsText(Encoding.UTF_8, (text) { | |
903 Expect.equals(6, text.length); | 877 Expect.equals(6, text.length); |
904 var expected = [955, 120, 46, 32, 120, 10]; | 878 var expected = [955, 120, 46, 32, 120, 10]; |
905 Expect.listEquals(expected, text.charCodes()); | 879 Expect.listEquals(expected, text.charCodes()); |
906 f.readAsText(Encoding.ISO_8859_1, (text) { | 880 f.readAsText(Encoding.ISO_8859_1).then((text) { |
907 Expect.equals(7, text.length); | 881 Expect.equals(7, text.length); |
908 var expected = [206, 187, 120, 46, 32, 120, 10]; | 882 var expected = [206, 187, 120, 46, 32, 120, 10]; |
909 Expect.listEquals(expected, text.charCodes()); | 883 Expect.listEquals(expected, text.charCodes()); |
910 f.onError = (e) { | 884 var readAsTextFuture = f.readAsText(Encoding.ASCII); |
| 885 readAsTextFuture.then((text) { |
| 886 Expect.fail("Non-ascii char should cause error"); |
| 887 }); |
| 888 readAsTextFuture.handleException((e) { |
911 port.toSendPort().send(1); | 889 port.toSendPort().send(1); |
912 }; | 890 return true; |
913 f.readAsText(Encoding.ASCII, (text) { | |
914 Expect.fail("Non-ascii char should cause error"); | |
915 }); | 891 }); |
916 }); | 892 }); |
917 }); | 893 }); |
918 }); | 894 }); |
919 f.onError = (e) { | |
920 Expect.fail("No errors expected: $e"); | |
921 }; | |
922 } | 895 } |
923 | 896 |
924 static void testReadAsTextSync() { | 897 static void testReadAsTextSync() { |
925 var name = getFilename("tests/vm/data/fixed_length_file"); | 898 var name = getFilename("tests/vm/data/fixed_length_file"); |
926 var text = new File(name).readAsTextSync(); | 899 var text = new File(name).readAsTextSync(); |
927 Expect.isTrue(text.endsWith("42 bytes.")); | 900 Expect.isTrue(text.endsWith("42 bytes.")); |
928 Expect.equals(42, text.length); | 901 Expect.equals(42, text.length); |
929 name = getDataFilename("tests/standalone/io/read_as_text.dat"); | 902 name = getDataFilename("tests/standalone/io/read_as_text.dat"); |
930 text = new File(name).readAsTextSync(); | 903 text = new File(name).readAsTextSync(); |
931 Expect.equals(6, text.length); | 904 Expect.equals(6, text.length); |
932 var expected = [955, 120, 46, 32, 120, 10]; | 905 var expected = [955, 120, 46, 32, 120, 10]; |
933 Expect.listEquals(expected, text.charCodes()); | 906 Expect.listEquals(expected, text.charCodes()); |
934 Expect.throws(() { new File(name).readAsTextSync(Encoding.ASCII); }); | 907 Expect.throws(() { new File(name).readAsTextSync(Encoding.ASCII); }); |
935 text = new File(name).readAsTextSync(Encoding.ISO_8859_1); | 908 text = new File(name).readAsTextSync(Encoding.ISO_8859_1); |
936 expected = [206, 187, 120, 46, 32, 120, 10]; | 909 expected = [206, 187, 120, 46, 32, 120, 10]; |
937 Expect.equals(7, text.length); | 910 Expect.equals(7, text.length); |
938 Expect.listEquals(expected, text.charCodes()); | 911 Expect.listEquals(expected, text.charCodes()); |
939 } | 912 } |
940 | 913 |
941 static void testReadAsLines() { | 914 static void testReadAsLines() { |
942 var port = new ReceivePort(); | 915 var port = new ReceivePort(); |
943 port.receive((result, replyTo) { | 916 port.receive((result, replyTo) { |
944 port.close(); | 917 port.close(); |
945 Expect.equals(42, result); | 918 Expect.equals(42, result); |
946 }); | 919 }); |
947 var name = getFilename("tests/vm/data/fixed_length_file"); | 920 var name = getFilename("tests/vm/data/fixed_length_file"); |
948 var f = new File(name); | 921 var f = new File(name); |
949 f.readAsLines(Encoding.UTF_8, (lines) { | 922 f.readAsLines(Encoding.UTF_8).then((lines) { |
950 Expect.equals(1, lines.length); | 923 Expect.equals(1, lines.length); |
951 var line = lines[0]; | 924 var line = lines[0]; |
952 Expect.isTrue(line.endsWith("42 bytes.")); | 925 Expect.isTrue(line.endsWith("42 bytes.")); |
953 port.toSendPort().send(line.length); | 926 port.toSendPort().send(line.length); |
954 }); | 927 }); |
955 f.onError = (e) => Expect.fail("No errors expected: $e"); | |
956 } | 928 } |
957 | 929 |
958 static void testReadAsLinesSync() { | 930 static void testReadAsLinesSync() { |
959 var name = getFilename("tests/vm/data/fixed_length_file"); | 931 var name = getFilename("tests/vm/data/fixed_length_file"); |
960 var lines = new File(name).readAsLinesSync(); | 932 var lines = new File(name).readAsLinesSync(); |
961 Expect.equals(1, lines.length); | 933 Expect.equals(1, lines.length); |
962 var line = lines[0]; | 934 var line = lines[0]; |
963 Expect.isTrue(line.endsWith("42 bytes.")); | 935 Expect.isTrue(line.endsWith("42 bytes.")); |
964 Expect.equals(42, line.length); | 936 Expect.equals(42, line.length); |
965 name = getDataFilename("tests/standalone/io/readline_test1.dat"); | 937 name = getDataFilename("tests/standalone/io/readline_test1.dat"); |
966 lines = new File(name).readAsLinesSync(); | 938 lines = new File(name).readAsLinesSync(); |
967 Expect.equals(10, lines.length); | 939 Expect.equals(10, lines.length); |
968 } | 940 } |
969 | 941 |
970 | 942 |
971 static void testReadAsErrors() { | 943 static void testReadAsErrors() { |
972 var port = new ReceivePort(); | 944 var port = new ReceivePort(); |
973 port.receive((message, _) { | 945 port.receive((message, _) { |
974 port.close(); | 946 port.close(); |
975 Expect.equals(1, message); | 947 Expect.equals(1, message); |
976 }); | 948 }); |
977 var f = new File('.'); | 949 var f = new File('.'); |
978 Expect.throws(f.readAsBytesSync, (e) => e is FileIOException); | 950 Expect.throws(f.readAsBytesSync, (e) => e is FileIOException); |
979 Expect.throws(f.readAsTextSync, (e) => e is FileIOException); | 951 Expect.throws(f.readAsTextSync, (e) => e is FileIOException); |
980 Expect.throws(f.readAsLinesSync, (e) => e is FileIOException); | 952 Expect.throws(f.readAsLinesSync, (e) => e is FileIOException); |
981 f.readAsBytes((bytes) => Expect.fail("no bytes expected")); | 953 var readAsBytesFuture = f.readAsBytes(); |
982 f.onError = (e) { | 954 readAsBytesFuture.then((bytes) => Expect.fail("no bytes expected")); |
983 f.readAsText(Encoding.UTF_8, (text) => Expect.fail("no text expected")); | 955 readAsBytesFuture.handleException((e) { |
984 f.onError = (e) { | 956 var readAsTextFuture = f.readAsText(Encoding.UTF_8); |
985 f.readAsLines(Encoding.UTF_8, | 957 readAsTextFuture.then((text) => Expect.fail("no text expected")); |
986 (lines) => Expect.fail("no lines expected")); | 958 readAsTextFuture.handleException((e) { |
987 f.onError = (e) => port.toSendPort().send(1); | 959 var readAsLinesFuture = f.readAsLines(Encoding.UTF_8); |
988 }; | 960 readAsLinesFuture.then((lines) => Expect.fail("no lines expected")); |
989 }; | 961 readAsLinesFuture.handleException((e) { |
| 962 port.toSendPort().send(1); |
| 963 return true; |
| 964 }); |
| 965 return true; |
| 966 }); |
| 967 return true; |
| 968 }); |
990 } | 969 } |
991 | 970 |
992 // Test that opens the same file for writing then for appending to test | 971 // Test that opens the same file for writing then for appending to test |
993 // that the file is not truncated when opened for appending. | 972 // that the file is not truncated when opened for appending. |
994 static void testAppend() { | 973 static void testAppend() { |
995 var file = new File('${tempDirectory.path}/out_append'); | 974 var file = new File('${tempDirectory.path}/out_append'); |
996 file.open(FileMode.WRITE, (openedFile) { | 975 file.open(FileMode.WRITE).then((openedFile) { |
997 openedFile.writeString("asdf"); | 976 openedFile.writeString("asdf").then((ignore) { |
998 openedFile.onNoPendingWrites = () { | 977 openedFile.close().then((ignore) { |
999 openedFile.close(() { | 978 file.open(FileMode.APPEND).then((openedFile) { |
1000 file.open(FileMode.APPEND, (openedFile) { | 979 openedFile.length().then((length) { |
1001 openedFile.length((length) { | |
1002 Expect.equals(4, length); | 980 Expect.equals(4, length); |
1003 openedFile.writeString("asdf"); | 981 openedFile.writeString("asdf").then((ignore) { |
1004 openedFile.onNoPendingWrites = () { | 982 openedFile.length().then((length) { |
1005 openedFile.length((length) { | |
1006 Expect.equals(8, length); | 983 Expect.equals(8, length); |
1007 openedFile.close(() { | 984 openedFile.close().then((ignore) { |
1008 file.delete(() { | 985 file.delete().then((ignore) { |
1009 file.exists((exists) { | 986 file.exists().then((exists) { |
1010 Expect.isFalse(exists); | 987 Expect.isFalse(exists); |
1011 asyncTestDone("testAppend"); | 988 asyncTestDone("testAppend"); |
1012 }); | 989 }); |
1013 }); | 990 }); |
1014 }); | 991 }); |
1015 }); | 992 }); |
1016 }; | 993 }); |
1017 }); | 994 }); |
1018 }); | 995 }); |
1019 }); | 996 }); |
1020 }; | 997 }); |
1021 }); | 998 }); |
1022 asyncTestStarted(); | 999 asyncTestStarted(); |
1023 } | 1000 } |
1024 | 1001 |
1025 static void testAppendSync() { | 1002 static void testAppendSync() { |
1026 var file = new File('${tempDirectory.path}/out_append_sync'); | 1003 var file = new File('${tempDirectory.path}/out_append_sync'); |
1027 var openedFile = file.openSync(FileMode.WRITE); | 1004 var openedFile = file.openSync(FileMode.WRITE); |
1028 openedFile.writeStringSync("asdf"); | 1005 openedFile.writeStringSync("asdf"); |
1029 Expect.equals(4, openedFile.lengthSync()); | 1006 Expect.equals(4, openedFile.lengthSync()); |
1030 openedFile.closeSync(); | 1007 openedFile.closeSync(); |
1031 openedFile = file.openSync(FileMode.WRITE); | 1008 openedFile = file.openSync(FileMode.WRITE); |
1032 openedFile.setPositionSync(4); | 1009 openedFile.setPositionSync(4); |
1033 openedFile.writeStringSync("asdf"); | 1010 openedFile.writeStringSync("asdf"); |
1034 Expect.equals(8, openedFile.lengthSync()); | 1011 Expect.equals(8, openedFile.lengthSync()); |
1035 openedFile.closeSync(); | 1012 openedFile.closeSync(); |
1036 file.deleteSync(); | 1013 file.deleteSync(); |
1037 Expect.isFalse(file.existsSync()); | 1014 Expect.isFalse(file.existsSync()); |
1038 } | 1015 } |
1039 | 1016 |
1040 // Helper method to be able to run the test from the runtime | 1017 // Helper method to be able to run the test from the runtime |
1041 // directory, or the top directory. | 1018 // directory, or the top directory. |
1042 static String getFilename(String path) => | 1019 static String getFilename(String path) => |
1043 new File(path).existsSync() ? path : 'runtime/' + path; | 1020 new File(path).existsSync() ? path : 'runtime/' + path; |
1044 | 1021 |
1045 static String getDataFilename(String path) => | 1022 static String getDataFilename(String path) => |
1046 new File(path).existsSync() ? path : '../' + path; | 1023 new File(path).existsSync() ? path : '../' + path; |
1047 | 1024 |
1048 // Main test entrypoint. | 1025 // Main test entrypoint. |
1049 static testMain() { | 1026 static testMain() { |
| 1027 port = new ReceivePort(); |
1050 testRead(); | 1028 testRead(); |
1051 testReadSync(); | 1029 testReadSync(); |
1052 testReadStream(); | 1030 testReadStream(); |
1053 testLength(); | 1031 testLength(); |
1054 testLengthSync(); | 1032 testLengthSync(); |
1055 testPosition(); | 1033 testPosition(); |
1056 testPositionSync(); | 1034 testPositionSync(); |
1057 testOpenDirectoryAsFile(); | 1035 testOpenDirectoryAsFile(); |
1058 testOpenDirectoryAsFileSync(); | 1036 testOpenDirectoryAsFileSync(); |
1059 testReadAsBytes(); | 1037 testReadAsBytes(); |
(...skipping 23 matching lines...) Expand all Loading... |
1083 testWriteVariousLists(); | 1061 testWriteVariousLists(); |
1084 testDirectory(); | 1062 testDirectory(); |
1085 testDirectorySync(); | 1063 testDirectorySync(); |
1086 }); | 1064 }); |
1087 } | 1065 } |
1088 } | 1066 } |
1089 | 1067 |
1090 main() { | 1068 main() { |
1091 FileTest.testMain(); | 1069 FileTest.testMain(); |
1092 } | 1070 } |
OLD | NEW |