Chromium Code Reviews| 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 { |
| (...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 527 Expect.isTrue(d.existsSync()); | 527 Expect.isTrue(d.existsSync()); |
| 528 Expect.isTrue(d.path.endsWith(tempDir)); | 528 Expect.isTrue(d.path.endsWith(tempDir)); |
| 529 file.deleteSync(); | 529 file.deleteSync(); |
| 530 // Directories should throw exception. | 530 // Directories should throw exception. |
| 531 var file_dir = new File("."); | 531 var file_dir = new File("."); |
| 532 Expect.throws(file_dir.directorySync, (e) { return e is FileIOException; }); | 532 Expect.throws(file_dir.directorySync, (e) { return e is FileIOException; }); |
| 533 file_dir = new File(tempDir); | 533 file_dir = new File(tempDir); |
| 534 Expect.throws(file_dir.directorySync, (e) { return e is FileIOException; }); | 534 Expect.throws(file_dir.directorySync, (e) { return e is FileIOException; }); |
| 535 } | 535 } |
| 536 | 536 |
| 537 static void testFileError() { | |
| 538 bool checkOpenNonExistentFileException(e) { | |
| 539 Expect.isTrue(e is FileIOException); | |
| 540 Expect.isTrue(e.osError != null); | |
| 541 Expect.isTrue(e.toString().indexOf("Cannot open file") != -1); | |
| 542 Platform platform = new Platform(); | |
| 543 if (platform.operatingSystem() == "linux") { | |
| 544 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 545 } | |
| 546 else if (platform.operatingSystem() == "macos") { | |
| 547 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 548 } | |
| 549 else if (platform.operatingSystem() == "windows") { | |
| 550 Expect.isTrue( | |
| 551 e.toString().indexOf( | |
| 552 "The system cannot find the file specified") != -1); | |
| 553 } | |
| 554 // File not not found has error code 2 on all supported platforms. | |
| 555 Expect.equals(2, e.osError.errorCode); | |
| 556 | |
| 557 return true; | |
| 558 } | |
| 559 | |
| 560 bool checkDeleteNonExistentFileException(e) { | |
| 561 Expect.isTrue(e is FileIOException); | |
| 562 Expect.isTrue(e.osError != null); | |
| 563 Expect.isTrue(e.toString().indexOf("Cannot delete file") != -1); | |
| 564 Platform platform = new Platform(); | |
| 565 if (platform.operatingSystem() == "linux") { | |
| 566 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 567 } | |
| 568 else if (platform.operatingSystem() == "macos") { | |
| 569 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 570 } | |
| 571 else if (platform.operatingSystem() == "windows") { | |
| 572 Expect.isTrue( | |
| 573 e.toString().indexOf( | |
| 574 "The system cannot find the file specified") != -1); | |
| 575 } | |
| 576 // File not not found has error code 2 on all supported platforms. | |
| 577 Expect.equals(2, e.osError.errorCode); | |
| 578 | |
| 579 return true; | |
| 580 } | |
| 581 | |
| 582 bool checkCreateInNonExistentDirectoryException(e) { | |
| 583 Expect.isTrue(e is FileIOException); | |
| 584 Expect.isTrue(e.osError != null); | |
| 585 Expect.isTrue(e.toString().indexOf("Cannot create file") != -1); | |
| 586 Platform platform = new Platform(); | |
| 587 if (platform.operatingSystem() == "linux") { | |
| 588 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 589 Expect.equals(2, e.osError.errorCode); | |
| 590 } | |
| 591 else if (platform.operatingSystem() == "macos") { | |
| 592 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 593 Expect.equals(2, e.osError.errorCode); | |
| 594 } | |
| 595 else if (platform.operatingSystem() == "windows") { | |
| 596 Expect.isTrue( | |
| 597 e.toString().indexOf( | |
| 598 "The system cannot find the path specified") != -1); | |
| 599 Expect.equals(3, e.osError.errorCode); | |
| 600 } | |
| 601 | |
| 602 return true; | |
| 603 } | |
| 604 | |
| 605 bool checkFullPathOnNonExistentDirectoryException(e) { | |
| 606 Expect.isTrue(e is FileIOException); | |
| 607 Expect.isTrue(e.osError != null); | |
| 608 Expect.isTrue(e.toString().indexOf("Cannot retrieve full path") != -1); | |
| 609 Platform platform = new Platform(); | |
| 610 if (platform.operatingSystem() == "linux") { | |
| 611 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 612 } | |
| 613 else if (platform.operatingSystem() == "macos") { | |
| 614 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 615 } | |
| 616 else if (platform.operatingSystem() == "windows") { | |
| 617 Expect.isTrue( | |
| 618 e.toString().indexOf( | |
| 619 "The system cannot find the file specified") != -1); | |
| 620 } | |
| 621 // File not not found has error code 2 on all supported platforms. | |
| 622 Expect.equals(2, e.osError.errorCode); | |
| 623 | |
| 624 return true; | |
| 625 } | |
| 626 | |
| 627 bool checkDirectoryInNonExistentDirectoryException(e) { | |
| 628 Expect.isTrue(e is FileIOException); | |
| 629 Expect.isTrue(e.osError != null); | |
| 630 Expect.isTrue( | |
| 631 e.toString().indexOf("Cannot retrieve directory for file") != -1); | |
| 632 Platform platform = new Platform(); | |
| 633 if (platform.operatingSystem() == "linux") { | |
| 634 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 635 } | |
| 636 else if (platform.operatingSystem() == "macos") { | |
| 637 Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); | |
| 638 } | |
| 639 else if (platform.operatingSystem() == "windows") { | |
| 640 Expect.isTrue( | |
| 641 e.toString().indexOf( | |
| 642 "The system cannot find the file specified") != -1); | |
| 643 } | |
| 644 // File not not found has error code 2 on all supported platforms. | |
| 645 Expect.equals(2, e.osError.errorCode); | |
| 646 | |
| 647 return true; | |
| 648 } | |
| 649 | |
| 650 var tempDir = tempDirectory.path; | |
| 651 { | |
|
Mads Ager (google)
2012/03/13 10:56:17
How about lifting the helpers to the top level and
Søren Gjesse
2012/03/13 12:39:49
Split into individual tests and moved to a separat
| |
| 652 var file = new File("${tempDir}/nonExistentFile1"); | |
| 653 | |
| 654 // Non-existing file should throw exception. | |
| 655 Expect.throws(() => file.openSync(), | |
| 656 (e) => checkOpenNonExistentFileException(e)); | |
| 657 | |
| 658 file.open(FileMode.READ, (raf) => Expect.fail("Unreachable code")); | |
| 659 file.onError = (e) => checkOpenNonExistentFileException(e); | |
| 660 } | |
| 661 | |
| 662 { | |
| 663 var file = new File("${tempDir}/nonExistentFile2"); | |
| 664 | |
| 665 // Non-existing file should throw exception. | |
| 666 Expect.throws(() => file.deleteSync(), | |
| 667 (e) => checkDeleteNonExistentFileException(e)); | |
| 668 | |
| 669 file.delete(() => Expect.fail("Unreachable code")); | |
| 670 file.onError = (e) => checkDeleteNonExistentFileException(e); | |
| 671 } | |
| 672 | |
| 673 { | |
| 674 var file = new File("${tempDir}/nonExistentDirectory/newFile"); | |
| 675 | |
| 676 // Create in non-existent directory should throw exception. | |
| 677 Expect.throws(() => file.createSync(), | |
| 678 (e) => checkCreateInNonExistentDirectoryException(e)); | |
| 679 | |
| 680 file.create(() => Expect.fail("Unreachable code")); | |
| 681 file.onError = (e) => checkCreateInNonExistentDirectoryException(e); | |
| 682 } | |
| 683 | |
| 684 { | |
| 685 var file = new File("${tempDir}/nonExistentDirectory"); | |
| 686 | |
| 687 // Create in non-existent directory should throw exception. | |
| 688 Expect.throws(() => file.fullPathSync(), | |
| 689 (e) => checkFullPathOnNonExistentDirectoryException(e)); | |
| 690 | |
| 691 file.fullPath((path) => Expect.fail("Unreachable code $path")); | |
| 692 file.onError = (e) => checkFullPathOnNonExistentDirectoryException(e); | |
| 693 } | |
| 694 | |
| 695 { | |
| 696 var file = new File("${tempDir}/nonExistentDirectory/newFile"); | |
| 697 | |
| 698 // Create in non-existent directory should throw exception. | |
| 699 Expect.throws(() => file.directorySync(), | |
| 700 (e) => checkDirectoryInNonExistentDirectoryException(e)); | |
| 701 | |
| 702 file.directory((directory) => Expect.fail("Unreachable code")); | |
| 703 file.onError = (e) => checkDirectoryInNonExistentDirectoryException(e); | |
| 704 } | |
| 705 | |
| 706 { | |
| 707 var file = new File("${tempDir}/nonExistentFile3"); | |
| 708 | |
| 709 // Non-existing file should throw exception. | |
| 710 Expect.throws(() => file.readAsBytesSync(), | |
| 711 (e) => checkOpenNonExistentFileException(e)); | |
| 712 | |
| 713 // TODO(sgjesse): Handle error for file.readAsBytes as well. | |
| 714 } | |
| 715 | |
| 716 { | |
| 717 var file = new File("${tempDir}/nonExistentFile4"); | |
| 718 | |
| 719 // Non-existing file should throw exception. | |
| 720 Expect.throws(() => file.readAsTextSync(), | |
| 721 (e) => checkOpenNonExistentFileException(e)); | |
| 722 | |
| 723 // TODO(sgjesse): Handle error for file.readAsText as well. | |
| 724 } | |
| 725 | |
| 726 { | |
| 727 var file = new File("${tempDir}/nonExistentFile5"); | |
| 728 | |
| 729 // Non-existing file should throw exception. | |
| 730 Expect.throws(() => file.readAsLinesSync(), | |
| 731 (e) => checkOpenNonExistentFileException(e)); | |
| 732 | |
| 733 // TODO(sgjesse): Handle error for file.readAsLines as well. | |
| 734 } | |
| 735 } | |
| 736 | |
| 737 | |
| 537 // Test for file length functionality. | 738 // Test for file length functionality. |
| 538 static void testLength() { | 739 static void testLength() { |
| 539 String filename = getFilename("tests/vm/data/fixed_length_file"); | 740 String filename = getFilename("tests/vm/data/fixed_length_file"); |
| 540 RandomAccessFile input = (new File(filename)).openSync(); | 741 RandomAccessFile input = (new File(filename)).openSync(); |
| 541 input.onError = (s) { | 742 input.onError = (s) { |
| 542 Expect.fail("No errors expected"); | 743 Expect.fail("No errors expected"); |
| 543 }; | 744 }; |
| 544 input.length((length) { | 745 input.length((length) { |
| 545 Expect.equals(42, length); | 746 Expect.equals(42, length); |
| 546 input.close(() => null); | 747 input.close(() => null); |
| (...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1099 testCloseExceptionStream(); | 1300 testCloseExceptionStream(); |
| 1100 testBufferOutOfBoundsException(); | 1301 testBufferOutOfBoundsException(); |
| 1101 testAppend(); | 1302 testAppend(); |
| 1102 testAppendSync(); | 1303 testAppendSync(); |
| 1103 testWriteAppend(); | 1304 testWriteAppend(); |
| 1104 testOutputStreamWriteAppend(); | 1305 testOutputStreamWriteAppend(); |
| 1105 testOutputStreamWriteString(); | 1306 testOutputStreamWriteString(); |
| 1106 testWriteVariousLists(); | 1307 testWriteVariousLists(); |
| 1107 testDirectory(); | 1308 testDirectory(); |
| 1108 testDirectorySync(); | 1309 testDirectorySync(); |
| 1310 testFileError(); | |
| 1109 }); | 1311 }); |
| 1110 } | 1312 } |
| 1111 } | 1313 } |
| 1112 | 1314 |
| 1113 main() { | 1315 main() { |
| 1114 FileTest.testMain(); | 1316 FileTest.testMain(); |
| 1115 } | 1317 } |
| OLD | NEW |