Files
sdk/tests/standalone/src/FileInputStreamTest.dart
T
ager@google.com 4efd1f98fa Split dart:builtin into dart:builtin and dart:io.
- dart:builtin is implicitly imported.
- dart:io has to be explicitly imported.

I will update the macos and windows stable test binaries when we
are happy with the solution.

R=iposva@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9254026

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@3537 260f80e4-7a28-3924-810f-c04153c831b5
2012-01-24 07:36:59 +00:00

93 lines
2.9 KiB
Dart

// Copyright (c) 2011, 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.
// Testing file input stream, VM-only, standalone test.
#import("dart:io");
// Helper method to be able to run the test from the runtime
// directory, or the top directory.
String getFilename(String path) =>
new File(path).existsSync() ? path : '../' + path;
void testStringInputStreamSync() {
String fileName = getFilename("tests/standalone/src/readuntil_test.dat");
// File contains "Hello Dart\nwassup!\n"
File file = new File(fileName);
StringInputStream x = new StringInputStream(file.openInputStream());
x.lineHandler = () {
// The file input stream is known (for now) to have read the whole
// file when the data handler is called.
String line = x.readLine();
Expect.equals("Hello Dart", line);
line = x.readLine();
Expect.equals("wassup!", line);
};
}
void testInputStreamAsync() {
String fileName = getFilename("tests/standalone/src/readuntil_test.dat");
// File contains "Hello Dart\nwassup!\n"
var expected = "Hello Dart\nwassup!\n".charCodes();
InputStream x = (new File(fileName)).openInputStream();
var byteCount = 0;
x.dataHandler = () {
Expect.equals(expected[byteCount], x.read(1)[0]);
byteCount++;
};
x.closeHandler = () {
Expect.equals(expected.length, byteCount);
};
}
void testStringInputStreamAsync(String name, int length) {
String fileName = getFilename("tests/standalone/src/$name");
// File contains 10 lines.
File file = new File(fileName);
Expect.equals(length, file.openSync().lengthSync());
StringInputStream x = new StringInputStream(file.openInputStream());
int lineCount = 0;
x.lineHandler = () {
var line = x.readLine();
lineCount++;
Expect.isTrue(lineCount <= 10);
if (line[0] != "#") {
Expect.equals("Line $lineCount", line);
}
};
x.closeHandler = () {
Expect.equals(10, lineCount);
};
}
void testChunkedInputStream() {
String fileName = getFilename("tests/standalone/src/readuntil_test.dat");
// File contains 19 bytes ("Hello Dart\nwassup!")
File file = new File(fileName);
ChunkedInputStream x = new ChunkedInputStream(file.openInputStream());
x.chunkSize = 9;
List<int> chunk = x.read();
Expect.equals(9, chunk.length);
x.chunkSize = 5;
chunk = x.read();
Expect.equals(5, chunk.length);
chunk = x.read();
Expect.equals(5, chunk.length);
chunk = x.read();
Expect.equals(null, chunk);
}
main() {
testStringInputStreamSync();
testInputStreamAsync();
// Check the length of these files as both are text files where one
// is without a terminating line separator which can easily be added
// back if accidentally opened in a text editor.
testStringInputStreamAsync("readline_test1.dat", 111);
testStringInputStreamAsync("readline_test2.dat", 114);
testChunkedInputStream();
}