Index: tests/standalone/src/FileTest.dart |
diff --git a/tests/standalone/src/FileTest.dart b/tests/standalone/src/FileTest.dart |
index 9fb38efa870adc9e1fadaa8a6fb24e6ed6a0f7d4..96f99e7976d3cb0ac134f0881d9d51ceca86c611 100644 |
--- a/tests/standalone/src/FileTest.dart |
+++ b/tests/standalone/src/FileTest.dart |
@@ -28,7 +28,7 @@ class FileTest { |
} |
// Test for file read functionality. |
- static int testReadStream() { |
+ static void testReadStream() { |
// Read a file and check part of it's contents. |
String filename = getFilename("bin/file_test.cc"); |
File file = new File(filename); |
@@ -51,11 +51,11 @@ class FileTest { |
Expect.equals(103, buffer[9]); // represents 'g' in the file. |
Expect.equals(104, buffer[10]); // represents 'h' in the file. |
Expect.equals(116, buffer[11]); // represents 't' in the file. |
- return 1; |
} |
// Test for file read and write functionality. |
- static int testReadWriteStream() { |
+ static void testReadWriteStream() { |
+ // Read a file. |
String inFilename = getFilename("tests/vm/data/fixed_length_file"); |
File file; |
InputStream input; |
@@ -116,10 +116,9 @@ class FileTest { |
// Delete the output file. |
file.deleteSync(); |
Expect.isFalse(file.existsSync()); |
- return 1; |
} |
- static int testRead() { |
+ static void testRead() { |
// Read a file and check part of it's contents. |
String filename = getFilename("bin/file_test.cc"); |
File file = new File(filename); |
@@ -149,10 +148,9 @@ class FileTest { |
file.readList(buffer, 0, 5); |
}; |
file.open(); |
- return 1; |
} |
- static int testReadSync() { |
+ static void testReadSync() { |
// Read a file and check part of it's contents. |
String filename = getFilename("bin/file_test.cc"); |
RandomAccessFile file = (new File(filename)).openSync(); |
@@ -174,11 +172,10 @@ class FileTest { |
Expect.equals(103, buffer[9]); // represents 'g' in the file. |
Expect.equals(104, buffer[10]); // represents 'h' in the file. |
Expect.equals(116, buffer[11]); // represents 't' in the file. |
- return 1; |
} |
// Test for file read and write functionality. |
- static int testReadWrite() { |
+ static void testReadWrite() { |
// Read a file. |
String inFilename = getFilename("tests/vm/data/fixed_length_file"); |
File file = new File(inFilename); |
@@ -241,7 +238,7 @@ class FileTest { |
}; |
openedFile.writeList(buffer1, 0, bytes_read); |
}; |
- file.open(true); |
+ file.open(FileMode.WRITE); |
}; |
file.fullPath(); |
}; |
@@ -253,11 +250,9 @@ class FileTest { |
}; |
asyncTestStarted(); |
file.open(); |
- return 1; |
- |
} |
- static int testReadWriteSync() { |
+ static void testReadWriteSync() { |
// Read a file. |
String inFilename = getFilename("tests/vm/data/fixed_length_file"); |
RandomAccessFile file = (new File(inFilename)).openSync(); |
@@ -276,7 +271,7 @@ class FileTest { |
Expect.fail("Not a full path"); |
} |
Expect.isTrue(new File(path).existsSync()); |
- RandomAccessFile openedFile = outFile.openSync(true); |
+ RandomAccessFile openedFile = outFile.openSync(FileMode.WRITE); |
openedFile.writeListSync(buffer1, 0, bytes_read); |
openedFile.closeSync(); |
// Now read the contents of the file just written. |
@@ -293,19 +288,17 @@ class FileTest { |
// Delete the output file. |
outFile.deleteSync(); |
Expect.isFalse(outFile.existsSync()); |
- return 1; |
} |
- static int testReadEmptyFileSync() { |
+ static void testReadEmptyFileSync() { |
String fileName = tempDirectory.path + "/empty_file_sync"; |
File file = new File(fileName); |
file.createSync(); |
RandomAccessFile openedFile = file.openSync(); |
Expect.throws(() => openedFile.readByteSync(), (e) => e is FileIOException); |
- return 1; |
} |
- static int testReadEmptyFile() { |
+ static void testReadEmptyFile() { |
String fileName = tempDirectory.path + "/empty_file"; |
File file = new File(fileName); |
file.createHandler = () { |
@@ -322,11 +315,10 @@ class FileTest { |
}; |
asyncTestStarted(); |
file.create(); |
- return 1; |
} |
// Test for file length functionality. |
- static int testLength() { |
+ static void testLength() { |
String filename = getFilename("tests/vm/data/fixed_length_file"); |
RandomAccessFile input = (new File(filename)).openSync(); |
input.errorHandler = (s) { |
@@ -337,19 +329,17 @@ class FileTest { |
input.close(); |
}; |
input.length(); |
- return 1; |
} |
- static int testLengthSync() { |
+ static void testLengthSync() { |
String filename = getFilename("tests/vm/data/fixed_length_file"); |
RandomAccessFile input = (new File(filename)).openSync(); |
Expect.equals(42, input.lengthSync()); |
input.closeSync(); |
- return 1; |
} |
// Test for file position functionality. |
- static int testPosition() { |
+ static void testPosition() { |
String filename = getFilename("tests/vm/data/fixed_length_file"); |
RandomAccessFile input = (new File(filename)).openSync(); |
input.errorHandler = (s) { |
@@ -381,10 +371,9 @@ class FileTest { |
input.readList(buffer, 0, 12); |
}; |
input.position(); |
- return 1; |
} |
- static int testPositionSync() { |
+ static void testPositionSync() { |
String filename = getFilename("tests/vm/data/fixed_length_file"); |
RandomAccessFile input = (new File(filename)).openSync(); |
Expect.equals(0, input.positionSync()); |
@@ -396,10 +385,9 @@ class FileTest { |
input.setPositionSync(8); |
Expect.equals(8, input.positionSync()); |
input.closeSync(); |
- return 1; |
} |
- static int testTruncate() { |
+ static void testTruncate() { |
File file = new File(tempDirectory.path + "/out_truncate"); |
List buffer = const [65, 65, 65, 65, 65, 65, 65, 65, 65, 65]; |
file.errorHandler = (error) { |
@@ -433,14 +421,13 @@ class FileTest { |
openedFile.writeList(buffer, 0, 10); |
}; |
asyncTestStarted(); |
- file.open(true); |
- return 1; |
+ file.open(FileMode.WRITE); |
} |
- static int testTruncateSync() { |
+ static void testTruncateSync() { |
File file = new File(tempDirectory.path + "/out_truncate_sync"); |
List buffer = const [65, 65, 65, 65, 65, 65, 65, 65, 65, 65]; |
- RandomAccessFile openedFile = file.openSync(true); |
+ RandomAccessFile openedFile = file.openSync(FileMode.WRITE); |
openedFile.writeListSync(buffer, 0, 10); |
Expect.equals(10, openedFile.lengthSync()); |
openedFile.truncateSync(5); |
@@ -448,15 +435,14 @@ class FileTest { |
openedFile.closeSync(); |
file.deleteSync(); |
Expect.isFalse(file.existsSync()); |
- return 1; |
} |
// Tests exception handling after file was closed. |
- static int testCloseException() { |
+ static void testCloseException() { |
bool exceptionCaught = false; |
bool wrongExceptionCaught = false; |
File input = new File(tempDirectory.path + "/out_close_exception"); |
- RandomAccessFile openedFile = input.openSync(true); |
+ RandomAccessFile openedFile = input.openSync(FileMode.WRITE); |
openedFile.closeSync(); |
try { |
openedFile.readByteSync(); |
@@ -540,11 +526,10 @@ class FileTest { |
Expect.equals(true, exceptionCaught); |
Expect.equals(true, !wrongExceptionCaught); |
input.deleteSync(); |
- return 1; |
} |
// Tests stream exception handling after file was closed. |
- static int testCloseExceptionStream() { |
+ static void testCloseExceptionStream() { |
List<int> buffer = new List<int>(42); |
File file = new File(tempDirectory.path + "/out_close_exception_stream"); |
file.createSync(); |
@@ -556,15 +541,14 @@ class FileTest { |
Expect.throws(( ) => output.writeFrom(buffer, 0, 12), |
(e) => e is FileIOException); |
file.deleteSync(); |
- return 1; |
} |
// Tests buffer out of bounds exception. |
- static int testBufferOutOfBoundsException() { |
+ static void testBufferOutOfBoundsException() { |
bool exceptionCaught = false; |
bool wrongExceptionCaught = false; |
File file = new File(tempDirectory.path + "/out_buffer_out_of_bounds"); |
- RandomAccessFile openedFile = file.openSync(true); |
+ RandomAccessFile openedFile = file.openSync(FileMode.WRITE); |
try { |
List<int> buffer = new List<int>(10); |
bool readDone = openedFile.readListSync(buffer, 0, 12); |
@@ -654,10 +638,9 @@ class FileTest { |
Expect.equals(true, !wrongExceptionCaught); |
openedFile.closeSync(); |
file.deleteSync(); |
- return 1; |
} |
- static int testMixedSyncAndAsync() { |
+ static void testMixedSyncAndAsync() { |
var name = getFilename("tests/vm/data/fixed_length_file"); |
var f = new File(name); |
f.errorHandler = (s) { |
@@ -672,7 +655,65 @@ class FileTest { |
} |
}; |
f.exists(); |
- return 1; |
+ } |
+ |
+ // Test that opens the same file for writing then for appending to test |
+ // that the file is not truncated when opened for appending. |
+ static void testAppend() { |
+ var file = new File('${tempDirectory.path}/out_append'); |
+ file.openHandler = (openedFile) { |
+ openedFile.noPendingWriteHandler = () { |
+ openedFile.closeHandler = () { |
+ file.openHandler = (openedFile) { |
+ openedFile.lengthHandler = (length) { |
+ Expect.equals(4, length); |
+ openedFile.setPositionHandler = () { |
+ openedFile.noPendingWriteHandler = () { |
+ openedFile.lengthHandler = (length) { |
+ Expect.equals(8, length); |
+ openedFile.closeHandler = () { |
+ file.deleteHandler = () { |
+ file.existsHandler = (exists) { |
+ Expect.isFalse(exists); |
+ asyncTestDone(); |
+ }; |
+ file.exists(); |
+ }; |
+ file.delete(); |
+ }; |
+ openedFile.close(); |
+ }; |
+ openedFile.length(); |
+ }; |
+ openedFile.writeString("asdf"); |
+ }; |
+ openedFile.setPosition(4); |
+ }; |
+ openedFile.length(); |
+ }; |
+ file.open(FileMode.APPEND); |
+ }; |
+ openedFile.close(); |
+ }; |
+ openedFile.writeString("asdf"); |
+ }; |
+ asyncTestStarted(); |
+ file.open(FileMode.WRITE); |
+ } |
+ |
+ static void testAppendSync() { |
+ var file = new File('${tempDirectory.path}/out_append_sync'); |
+ var openedFile = file.openSync(FileMode.WRITE); |
+ openedFile.writeStringSync("asdf"); |
+ Expect.equals(4, openedFile.lengthSync()); |
+ openedFile.closeSync(); |
+ openedFile = file.openSync(FileMode.WRITE); |
+ openedFile.setPositionSync(4); |
+ openedFile.writeStringSync("asdf"); |
+ Expect.equals(8, openedFile.lengthSync()); |
+ openedFile.closeSync(); |
+ file.deleteSync(); |
+ Expect.isFalse(file.existsSync()); |
} |
// Helper method to be able to run the test from the runtime |
@@ -682,26 +723,28 @@ class FileTest { |
// Main test entrypoint. |
static testMain() { |
- Expect.equals(1, testRead()); |
- Expect.equals(1, testReadSync()); |
- Expect.equals(1, testReadStream()); |
- Expect.equals(1, testLength()); |
- Expect.equals(1, testLengthSync()); |
- Expect.equals(1, testPosition()); |
- Expect.equals(1, testPositionSync()); |
- Expect.equals(1, testMixedSyncAndAsync()); |
+ testRead(); |
+ testReadSync(); |
+ testReadStream(); |
+ testLength(); |
+ testLengthSync(); |
+ testPosition(); |
+ testPositionSync(); |
+ testMixedSyncAndAsync(); |
asyncTestStarted(); |
createTempDirectory(() { |
- Expect.equals(1, testReadWrite()); |
- Expect.equals(1, testReadWriteSync()); |
- Expect.equals(1, testReadWriteStream()); |
- Expect.equals(1, testReadEmptyFileSync()); |
- Expect.equals(1, testReadEmptyFile()); |
- Expect.equals(1, testTruncate()); |
- Expect.equals(1, testTruncateSync()); |
- Expect.equals(1, testCloseException()); |
- Expect.equals(1, testCloseExceptionStream()); |
- Expect.equals(1, testBufferOutOfBoundsException()); |
+ testReadWrite(); |
+ testReadWriteSync(); |
+ testReadWriteStream(); |
+ testReadEmptyFileSync(); |
+ testReadEmptyFile(); |
+ testTruncate(); |
+ testTruncateSync(); |
+ testCloseException(); |
+ testCloseExceptionStream(); |
+ testBufferOutOfBoundsException(); |
+ testAppend(); |
+ testAppendSync(); |
asyncTestDone(); |
}); |
} |