| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 // OtherResources=empty_file |
| 8 // OtherResources=file_test.txt |
| 7 // OtherResources=fixed_length_file | 9 // OtherResources=fixed_length_file |
| 8 // OtherResources=read_as_text.dat | 10 // OtherResources=read_as_text.dat |
| 9 // OtherResources=readline_test1.dat | 11 // OtherResources=readline_test1.dat |
| 10 | 12 |
| 11 import 'dart:async'; | 13 import 'dart:async'; |
| 12 import 'dart:convert'; | 14 import 'dart:convert'; |
| 13 import 'dart:collection'; | 15 import 'dart:collection'; |
| 14 import 'dart:io'; | 16 import 'dart:io'; |
| 15 | 17 |
| 16 import "package:async_helper/async_helper.dart"; | 18 import "package:async_helper/async_helper.dart"; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 }); | 58 }); |
| 57 } | 59 } |
| 58 | 60 |
| 59 static void deleteTempDirectory() { | 61 static void deleteTempDirectory() { |
| 60 tempDirectory.deleteSync(recursive: true); | 62 tempDirectory.deleteSync(recursive: true); |
| 61 } | 63 } |
| 62 | 64 |
| 63 // Test for file read functionality. | 65 // Test for file read functionality. |
| 64 static void testReadStream() { | 66 static void testReadStream() { |
| 65 // Read a file and check part of it's contents. | 67 // Read a file and check part of it's contents. |
| 66 String filename = getFilename("bin/file_test.cc"); | 68 String filename = getFilename("file_test.txt"); |
| 67 File file = new File(filename); | 69 File file = new File(filename); |
| 68 Expect.isTrue('$file'.contains(file.path)); | 70 Expect.isTrue('$file'.contains(file.path)); |
| 69 var subscription; | 71 var subscription; |
| 70 List<int> buffer = new List<int>(); | 72 List<int> buffer = new List<int>(); |
| 71 subscription = file.openRead().listen( | 73 subscription = file.openRead().listen( |
| 72 (d) { | 74 (d) { |
| 73 buffer.addAll(d); | 75 buffer.addAll(d); |
| 74 if (buffer.length >= 12) { | 76 if (buffer.length >= 12) { |
| 75 subscription.cancel(); | 77 subscription.cancel(); |
| 76 Expect.equals(47, buffer[0]); // represents '/' in the file. | 78 Expect.equals(47, buffer[0]); // represents '/' in the file. |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 Expect.equals(2 * buffer.length, position); | 225 Expect.equals(2 * buffer.length, position); |
| 224 outputFile.delete().then((ignore) { done.complete(); }); | 226 outputFile.delete().then((ignore) { done.complete(); }); |
| 225 }); | 227 }); |
| 226 }); | 228 }); |
| 227 return done.future; | 229 return done.future; |
| 228 } | 230 } |
| 229 | 231 |
| 230 static void testRead() { | 232 static void testRead() { |
| 231 asyncStart(); | 233 asyncStart(); |
| 232 // Read a file and check part of it's contents. | 234 // Read a file and check part of it's contents. |
| 233 String filename = getFilename("bin/file_test.cc"); | 235 String filename = getFilename("file_test.txt"); |
| 234 File file = new File(filename); | 236 File file = new File(filename); |
| 235 file.open(mode: READ).then((RandomAccessFile file) { | 237 file.open(mode: READ).then((RandomAccessFile file) { |
| 236 List<int> buffer = new List<int>(10); | 238 List<int> buffer = new List<int>(10); |
| 237 file.readInto(buffer, 0, 5).then((bytes_read) { | 239 file.readInto(buffer, 0, 5).then((bytes_read) { |
| 238 Expect.equals(5, bytes_read); | 240 Expect.equals(5, bytes_read); |
| 239 file.readInto(buffer, 5, 10).then((bytes_read) { | 241 file.readInto(buffer, 5, 10).then((bytes_read) { |
| 240 Expect.equals(5, bytes_read); | 242 Expect.equals(5, bytes_read); |
| 241 Expect.equals(47, buffer[0]); // represents '/' in the file. | 243 Expect.equals(47, buffer[0]); // represents '/' in the file. |
| 242 Expect.equals(47, buffer[1]); // represents '/' in the file. | 244 Expect.equals(47, buffer[1]); // represents '/' in the file. |
| 243 Expect.equals(32, buffer[2]); // represents ' ' in the file. | 245 Expect.equals(32, buffer[2]); // represents ' ' in the file. |
| 244 Expect.equals(67, buffer[3]); // represents 'C' in the file. | 246 Expect.equals(67, buffer[3]); // represents 'C' in the file. |
| 245 Expect.equals(111, buffer[4]); // represents 'o' in the file. | 247 Expect.equals(111, buffer[4]); // represents 'o' in the file. |
| 246 Expect.equals(112, buffer[5]); // represents 'p' in the file. | 248 Expect.equals(112, buffer[5]); // represents 'p' in the file. |
| 247 Expect.equals(121, buffer[6]); // represents 'y' in the file. | 249 Expect.equals(121, buffer[6]); // represents 'y' in the file. |
| 248 Expect.equals(114, buffer[7]); // represents 'r' in the file. | 250 Expect.equals(114, buffer[7]); // represents 'r' in the file. |
| 249 Expect.equals(105, buffer[8]); // represents 'i' in the file. | 251 Expect.equals(105, buffer[8]); // represents 'i' in the file. |
| 250 Expect.equals(103, buffer[9]); // represents 'g' in the file. | 252 Expect.equals(103, buffer[9]); // represents 'g' in the file. |
| 251 file.close().then((ignore) => asyncEnd()); | 253 file.close().then((ignore) => asyncEnd()); |
| 252 }); | 254 }); |
| 253 }); | 255 }); |
| 254 }); | 256 }); |
| 255 } | 257 } |
| 256 | 258 |
| 257 static void testReadSync() { | 259 static void testReadSync() { |
| 258 // Read a file and check part of it's contents. | 260 // Read a file and check part of it's contents. |
| 259 String filename = getFilename("bin/file_test.cc"); | 261 String filename = getFilename("file_test.txt"); |
| 260 RandomAccessFile raf = (new File(filename)).openSync(); | 262 RandomAccessFile raf = (new File(filename)).openSync(); |
| 261 List<int> buffer = new List<int>(42); | 263 List<int> buffer = new List<int>(42); |
| 262 int bytes_read = 0; | 264 int bytes_read = 0; |
| 263 bytes_read = raf.readIntoSync(buffer, 0, 12); | 265 bytes_read = raf.readIntoSync(buffer, 0, 12); |
| 264 Expect.equals(12, bytes_read); | 266 Expect.equals(12, bytes_read); |
| 265 bytes_read = raf.readIntoSync(buffer, 12, 42); | 267 bytes_read = raf.readIntoSync(buffer, 12, 42); |
| 266 Expect.equals(30, bytes_read); | 268 Expect.equals(30, bytes_read); |
| 267 Expect.equals(47, buffer[0]); // represents '/' in the file. | 269 Expect.equals(47, buffer[0]); // represents '/' in the file. |
| 268 Expect.equals(47, buffer[1]); // represents '/' in the file. | 270 Expect.equals(47, buffer[1]); // represents '/' in the file. |
| 269 Expect.equals(32, buffer[2]); // represents ' ' in the file. | 271 Expect.equals(32, buffer[2]); // represents ' ' in the file. |
| (...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1064 var f = new File(name); | 1066 var f = new File(name); |
| 1065 f.readAsBytes().then((bytes) { | 1067 f.readAsBytes().then((bytes) { |
| 1066 Expect.isTrue(new String.fromCharCodes(bytes).endsWith("42 bytes.")); | 1068 Expect.isTrue(new String.fromCharCodes(bytes).endsWith("42 bytes.")); |
| 1067 Expect.equals(42, bytes.length); | 1069 Expect.equals(42, bytes.length); |
| 1068 asyncTestDone("testReadAsBytes"); | 1070 asyncTestDone("testReadAsBytes"); |
| 1069 }); | 1071 }); |
| 1070 } | 1072 } |
| 1071 | 1073 |
| 1072 static void testReadAsBytesEmptyFile() { | 1074 static void testReadAsBytesEmptyFile() { |
| 1073 asyncTestStarted(); | 1075 asyncTestStarted(); |
| 1074 var name = getFilename("tests/vm/data/empty_file"); | 1076 var name = getFilename("empty_file"); |
| 1075 var f = new File(name); | 1077 var f = new File(name); |
| 1076 f.readAsBytes().then((bytes) { | 1078 f.readAsBytes().then((bytes) { |
| 1077 Expect.equals(0, bytes.length); | 1079 Expect.equals(0, bytes.length); |
| 1078 asyncTestDone("testReadAsBytesEmptyFile"); | 1080 asyncTestDone("testReadAsBytesEmptyFile"); |
| 1079 }); | 1081 }); |
| 1080 } | 1082 } |
| 1081 | 1083 |
| 1082 static void testReadAsBytesSync() { | 1084 static void testReadAsBytesSync() { |
| 1083 var name = getFilename("fixed_length_file"); | 1085 var name = getFilename("fixed_length_file"); |
| 1084 var bytes = new File(name).readAsBytesSync(); | 1086 var bytes = new File(name).readAsBytesSync(); |
| 1085 Expect.isTrue(new String.fromCharCodes(bytes).endsWith("42 bytes.")); | 1087 Expect.isTrue(new String.fromCharCodes(bytes).endsWith("42 bytes.")); |
| 1086 Expect.equals(bytes.length, 42); | 1088 Expect.equals(bytes.length, 42); |
| 1087 } | 1089 } |
| 1088 | 1090 |
| 1089 static void testReadAsBytesSyncEmptyFile() { | 1091 static void testReadAsBytesSyncEmptyFile() { |
| 1090 var name = getFilename("tests/vm/data/empty_file"); | 1092 var name = getFilename("empty_file"); |
| 1091 var bytes = new File(name).readAsBytesSync(); | 1093 var bytes = new File(name).readAsBytesSync(); |
| 1092 Expect.equals(bytes.length, 0); | 1094 Expect.equals(bytes.length, 0); |
| 1093 } | 1095 } |
| 1094 | 1096 |
| 1095 static void testReadAsText() { | 1097 static void testReadAsText() { |
| 1096 asyncTestStarted(); | 1098 asyncTestStarted(); |
| 1097 var name = getFilename("fixed_length_file"); | 1099 var name = getFilename("fixed_length_file"); |
| 1098 var f = new File(name); | 1100 var f = new File(name); |
| 1099 f.readAsString(encoding: UTF8).then((text) { | 1101 f.readAsString(encoding: UTF8).then((text) { |
| 1100 Expect.isTrue(text.endsWith("42 bytes.")); | 1102 Expect.isTrue(text.endsWith("42 bytes.")); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1115 }).catchError((e) { | 1117 }).catchError((e) { |
| 1116 asyncTestDone("testReadAsText"); | 1118 asyncTestDone("testReadAsText"); |
| 1117 }); | 1119 }); |
| 1118 }); | 1120 }); |
| 1119 }); | 1121 }); |
| 1120 }); | 1122 }); |
| 1121 } | 1123 } |
| 1122 | 1124 |
| 1123 static void testReadAsTextEmptyFile() { | 1125 static void testReadAsTextEmptyFile() { |
| 1124 asyncTestStarted(); | 1126 asyncTestStarted(); |
| 1125 var name = getFilename("tests/vm/data/empty_file"); | 1127 var name = getFilename("empty_file"); |
| 1126 var f = new File(name); | 1128 var f = new File(name); |
| 1127 f.readAsString(encoding: UTF8).then((text) { | 1129 f.readAsString(encoding: UTF8).then((text) { |
| 1128 Expect.equals(0, text.length); | 1130 Expect.equals(0, text.length); |
| 1129 asyncTestDone("testReadAsTextEmptyFile"); | 1131 asyncTestDone("testReadAsTextEmptyFile"); |
| 1130 return true; | 1132 return true; |
| 1131 }); | 1133 }); |
| 1132 } | 1134 } |
| 1133 | 1135 |
| 1134 static void testReadAsTextSync() { | 1136 static void testReadAsTextSync() { |
| 1135 var name = getFilename("fixed_length_file"); | 1137 var name = getFilename("fixed_length_file"); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1152 UNICODE_REPLACEMENT_CHARACTER_RUNE, | 1154 UNICODE_REPLACEMENT_CHARACTER_RUNE, |
| 1153 120, 46, 32, 120, 10]; | 1155 120, 46, 32, 120, 10]; |
| 1154 Expect.listEquals(expected, text.codeUnits); | 1156 Expect.listEquals(expected, text.codeUnits); |
| 1155 text = new File(name).readAsStringSync(encoding: LATIN1); | 1157 text = new File(name).readAsStringSync(encoding: LATIN1); |
| 1156 expected = [206, 187, 120, 46, 32, 120, 10]; | 1158 expected = [206, 187, 120, 46, 32, 120, 10]; |
| 1157 Expect.equals(7, text.length); | 1159 Expect.equals(7, text.length); |
| 1158 Expect.listEquals(expected, text.codeUnits); | 1160 Expect.listEquals(expected, text.codeUnits); |
| 1159 } | 1161 } |
| 1160 | 1162 |
| 1161 static void testReadAsTextSyncEmptyFile() { | 1163 static void testReadAsTextSyncEmptyFile() { |
| 1162 var name = getFilename("tests/vm/data/empty_file"); | 1164 var name = getFilename("empty_file"); |
| 1163 var text = new File(name).readAsStringSync(); | 1165 var text = new File(name).readAsStringSync(); |
| 1164 Expect.equals(0, text.length); | 1166 Expect.equals(0, text.length); |
| 1165 } | 1167 } |
| 1166 | 1168 |
| 1167 static void testReadAsLines() { | 1169 static void testReadAsLines() { |
| 1168 asyncTestStarted(); | 1170 asyncTestStarted(); |
| 1169 var name = getFilename("fixed_length_file"); | 1171 var name = getFilename("fixed_length_file"); |
| 1170 var f = new File(name); | 1172 var f = new File(name); |
| 1171 f.readAsLines(encoding: UTF8).then((lines) { | 1173 f.readAsLines(encoding: UTF8).then((lines) { |
| 1172 Expect.equals(1, lines.length); | 1174 Expect.equals(1, lines.length); |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1395 newfile.deleteSync(); | 1397 newfile.deleteSync(); |
| 1396 Expect.isFalse(newfile.existsSync()); | 1398 Expect.isFalse(newfile.existsSync()); |
| 1397 if (Platform.operatingSystem != "windows") { | 1399 if (Platform.operatingSystem != "windows") { |
| 1398 var brokenLink = new Link(source); | 1400 var brokenLink = new Link(source); |
| 1399 brokenLink.createSync(dest); | 1401 brokenLink.createSync(dest); |
| 1400 Expect.throws(() => file.renameSync('xxx')); | 1402 Expect.throws(() => file.renameSync('xxx')); |
| 1401 brokenLink.deleteSync(); | 1403 brokenLink.deleteSync(); |
| 1402 } | 1404 } |
| 1403 } | 1405 } |
| 1404 | 1406 |
| 1405 // Helper method to be able to run the test from the runtime | |
| 1406 // directory, or the top directory. | |
| 1407 static String getFilename(String path) { | 1407 static String getFilename(String path) { |
| 1408 var testPath = Platform.script.resolve(path); | 1408 return Platform.script.resolve(path).toFilePath(); |
| 1409 if (new File.fromUri(testPath).existsSync()) { | |
| 1410 return testPath.toFilePath(); | |
| 1411 } | |
| 1412 return Uri.parse(Platform.resolvedExecutable) | |
| 1413 .resolve('../../runtime/$path').toFilePath(); | |
| 1414 } | 1409 } |
| 1415 | 1410 |
| 1416 // Main test entrypoint. | 1411 // Main test entrypoint. |
| 1417 static testMain() { | 1412 static testMain() { |
| 1418 asyncStart(); | 1413 asyncStart(); |
| 1419 | 1414 |
| 1420 testRead(); | 1415 testRead(); |
| 1421 testReadSync(); | 1416 testReadSync(); |
| 1422 testReadStream(); | 1417 testReadStream(); |
| 1423 testLengthSync(); | 1418 testLengthSync(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 testLastModified(); | 1468 testLastModified(); |
| 1474 testDoubleAsyncOperation(); | 1469 testDoubleAsyncOperation(); |
| 1475 asyncEnd(); | 1470 asyncEnd(); |
| 1476 }); | 1471 }); |
| 1477 } | 1472 } |
| 1478 } | 1473 } |
| 1479 | 1474 |
| 1480 main() { | 1475 main() { |
| 1481 FileTest.testMain(); | 1476 FileTest.testMain(); |
| 1482 } | 1477 } |
| OLD | NEW |