0a59b2ff90
Change-Id: I758d66d5112de631283adc791c0e33b3b98edfc1 Reviewed-on: https://dart-review.googlesource.com/60707 Reviewed-by: Bob Nystrom <rnystrom@google.com> Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
84 lines
2.5 KiB
Dart
84 lines
2.5 KiB
Dart
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
//
|
|
// Dart test program for testing file I/O.
|
|
|
|
import 'dart:async';
|
|
import 'dart:io';
|
|
|
|
import "package:async_helper/async_helper.dart";
|
|
import "package:expect/expect.dart";
|
|
|
|
Future withTempDir(String prefix, Future<void> test(Directory dir)) async {
|
|
var tempDir = Directory.systemTemp.createTempSync(prefix);
|
|
try {
|
|
await test(tempDir);
|
|
} finally {
|
|
tempDir.deleteSync(recursive: true);
|
|
}
|
|
}
|
|
|
|
void withTempDirSync(String prefix, void test(Directory dir)) {
|
|
var tempDir = Directory.systemTemp.createTempSync(prefix);
|
|
try {
|
|
test(tempDir);
|
|
} finally {
|
|
tempDir.deleteSync(recursive: true);
|
|
}
|
|
}
|
|
|
|
Future expectThrowsAsync(Future future, String message) {
|
|
return future.then((r) => Expect.fail(message)).catchError((e) {});
|
|
}
|
|
|
|
Future write(Directory dir) async {
|
|
var f = new File("${dir.path}${Platform.pathSeparator}write");
|
|
var raf = await f.open(mode: FileMode.writeOnly);
|
|
await raf.writeString('Hello');
|
|
await raf.setPosition(0);
|
|
await raf.writeString('Hello');
|
|
await raf.setPosition(0);
|
|
await expectThrowsAsync(
|
|
raf.readByte(), 'Read from write only file succeeded');
|
|
await raf.close();
|
|
raf = await f.open(mode: FileMode.writeOnlyAppend);
|
|
await raf.writeString('Hello');
|
|
await expectThrowsAsync(
|
|
raf.readByte(), 'Read from write only file succeeded');
|
|
await raf.setPosition(0);
|
|
await raf.writeString('Hello');
|
|
await raf.close();
|
|
Expect.equals(f.lengthSync(), 10);
|
|
}
|
|
|
|
void writeSync(Directory dir) {
|
|
var f = new File("${dir.path}${Platform.pathSeparator}write_sync");
|
|
var raf = f.openSync(mode: FileMode.writeOnly);
|
|
raf.writeStringSync('Hello');
|
|
raf.setPositionSync(0);
|
|
raf.writeStringSync('Hello');
|
|
raf.setPositionSync(0);
|
|
Expect.throws(() => raf.readByteSync());
|
|
raf.closeSync();
|
|
}
|
|
|
|
Future openWrite(Directory dir) async {
|
|
var f = new File("${dir.path}${Platform.pathSeparator}open_write");
|
|
var sink = f.openWrite(mode: FileMode.writeOnly);
|
|
sink.write('Hello');
|
|
await sink.close();
|
|
sink = await f.openWrite(mode: FileMode.writeOnlyAppend);
|
|
sink.write('Hello');
|
|
await sink.close();
|
|
Expect.equals(f.lengthSync(), 10);
|
|
}
|
|
|
|
main() async {
|
|
asyncStart();
|
|
await withTempDir('file_write_only_test_1_', write);
|
|
withTempDirSync('file_write_only_test_2_', writeSync);
|
|
await withTempDir('file_write_only_test_3_', openWrite);
|
|
asyncEnd();
|
|
}
|