blob: 9e02bcd5c2724b10bbee73ea66f2203ad65237cb [file] [log] [blame]
// 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 "package:expect/expect.dart";
import 'dart:async';
import 'dart:io';
import 'dart:isolate';
import 'dart:typed_data';
void testWriteInt8ListAndView() {
ReceivePort port = new ReceivePort();
Int8List list = new Int8List(8);
for (int i = 0; i < 8; i++) list[i] = i;
var view = new Int8List.view(list.buffer, 2, 4);
new Directory('').createTemp().then((temp) {
var file = new File("${temp.path}/test");
file.open(mode: FileMode.WRITE).then((raf) {
return raf.writeFrom(list, 0, 8);
}).then((raf) {
return raf.writeFrom(view, 0, 4);
}).then((raf) {
return raf.close();
}).then((_) {
var expected = [];
expected.addAll(list);
expected.addAll(view);
var content = file.readAsBytesSync();
Expect.listEquals(expected, content);
temp.deleteSync(recursive: true);
port.close();
});
});
}
void testWriteUint8ListAndView() {
ReceivePort port = new ReceivePort();
Uint8List list = new Uint8List(8);
for (int i = 0; i < 8; i++) list[i] = i;
var view = new Uint8List.view(list.buffer, 2, 4);
new Directory('').createTemp().then((temp) {
var file = new File("${temp.path}/test");
file.open(mode: FileMode.WRITE).then((raf) {
return raf.writeFrom(list, 0, 8);
}).then((raf) {
return raf.writeFrom(view, 0, 4);
}).then((raf) {
return raf.close();
}).then((_) {
var expected = [];
expected.addAll(list);
expected.addAll(view);
var content = file.readAsBytesSync();
Expect.listEquals(expected, content);
temp.deleteSync(recursive: true);
port.close();
});
});
}
void testWriteUint8ClampedListAndView() {
ReceivePort port = new ReceivePort();
Uint8ClampedList list = new Uint8ClampedList(8);
for (int i = 0; i < 8; i++) list[i] = i;
var view = new Uint8ClampedList.view(list.buffer, 2, 4);
new Directory('').createTemp().then((temp) {
var file = new File("${temp.path}/test");
file.open(mode: FileMode.WRITE).then((raf) {
return raf.writeFrom(list, 0, 8);
}).then((raf) {
return raf.writeFrom(view, 0, 4);
}).then((raf) {
return raf.close();
}).then((_) {
var expected = [];
expected.addAll(list);
expected.addAll(view);
var content = file.readAsBytesSync();
Expect.listEquals(expected, content);
temp.deleteSync(recursive: true);
port.close();
});
});
}
void testWriteInt16ListAndView() {
ReceivePort port = new ReceivePort();
var list = new Int16List(8);
for (int i = 0; i < 8; i++) list[i] = i;
var view = new Int16List.view(list.buffer, 2, 4);
new Directory('').createTemp().then((temp) {
var file = new File("${temp.path}/test");
file.open(mode: FileMode.WRITE).then((raf) {
return raf.writeFrom(list, 0, 8);
}).then((raf) {
return raf.writeFrom(view, 0, 4);
}).then((raf) {
return raf.close();
}).then((_) {
var expected = [];
expected.addAll(list);
expected.addAll(view);
var content = file.readAsBytesSync();
var typed_data_content = new Uint8List(content.length);
for (int i = 0; i < content.length; i++) {
typed_data_content[i] = content[i];
}
Expect.listEquals(expected, new Int16List.view(typed_data_content));
temp.deleteSync(recursive: true);
port.close();
});
});
}
void testWriteUint16ListAndView() {
ReceivePort port = new ReceivePort();
var list = new Uint16List(8);
for (int i = 0; i < 8; i++) list[i] = i;
var view = new Uint16List.view(list.buffer, 2, 4);
new Directory('').createTemp().then((temp) {
var file = new File("${temp.path}/test");
file.open(mode: FileMode.WRITE).then((raf) {
return raf.writeFrom(list, 0, 8);
}).then((raf) {
return raf.writeFrom(view, 0, 4);
}).then((raf) {
return raf.close();
}).then((_) {
var expected = [];
expected.addAll(list);
expected.addAll(view);
var content = file.readAsBytesSync();
var typed_data_content = new Uint8List(content.length);
for (int i = 0; i < content.length; i++) {
typed_data_content[i] = content[i];
}
Expect.listEquals(expected, new Uint16List.view(typed_data_content));
temp.deleteSync(recursive: true);
port.close();
});
});
}
void testWriteInt32ListAndView() {
ReceivePort port = new ReceivePort();
var list = new Int32List(8);
for (int i = 0; i < 8; i++) list[i] = i;
var view = new Int32List.view(list.buffer, 2, 4);
new Directory('').createTemp().then((temp) {
var file = new File("${temp.path}/test");
file.open(mode: FileMode.WRITE).then((raf) {
return raf.writeFrom(list, 0, 8);
}).then((raf) {
return raf.writeFrom(view, 0, 4);
}).then((raf) {
return raf.close();
}).then((_) {
var expected = [];
expected.addAll(list);
expected.addAll(view);
var content = file.readAsBytesSync();
var typed_data_content = new Uint8List(content.length);
for (int i = 0; i < content.length; i++) {
typed_data_content[i] = content[i];
}
Expect.listEquals(expected, new Int32List.view(typed_data_content));
temp.deleteSync(recursive: true);
port.close();
});
});
}
void testWriteUint32ListAndView() {
ReceivePort port = new ReceivePort();
var list = new Uint32List(8);
for (int i = 0; i < 8; i++) list[i] = i;
var view = new Uint32List.view(list.buffer, 2, 4);
new Directory('').createTemp().then((temp) {
var file = new File("${temp.path}/test");
file.open(mode: FileMode.WRITE).then((raf) {
return raf.writeFrom(list, 0, 8);
}).then((raf) {
return raf.writeFrom(view, 0, 4);
}).then((raf) {
return raf.close();
}).then((_) {
var expected = [];
expected.addAll(list);
expected.addAll(view);
var content = file.readAsBytesSync();
var typed_data_content = new Uint8List(content.length);
for (int i = 0; i < content.length; i++) {
typed_data_content[i] = content[i];
}
Expect.listEquals(expected, new Uint32List.view(typed_data_content));
temp.deleteSync(recursive: true);
port.close();
});
});
}
void testWriteInt64ListAndView() {
ReceivePort port = new ReceivePort();
var list = new Int64List(8);
for (int i = 0; i < 8; i++) list[i] = i;
var view = new Int64List.view(list.buffer, 2, 4);
new Directory('').createTemp().then((temp) {
var file = new File("${temp.path}/test");
file.open(mode: FileMode.WRITE).then((raf) {
return raf.writeFrom(list, 0, 8);
}).then((raf) {
// return raf.writeList(view, 0, 4);
//}).then((raf) {
return raf.close();
}).then((_) {
var expected = [];
expected.addAll(list);
//expected.addAll(view);
var content = file.readAsBytesSync();
var typed_data_content = new Uint8List(content.length);
for (int i = 0; i < content.length; i++) {
typed_data_content[i] = content[i];
}
Expect.listEquals(expected, new Int64List.view(typed_data_content));
temp.deleteSync(recursive: true);
port.close();
});
});
}
void testWriteUint64ListAndView() {
ReceivePort port = new ReceivePort();
var list = new Uint64List(8);
for (int i = 0; i < 8; i++) list[i] = i;
var view = new Uint64List.view(list.buffer, 2, 4);
new Directory('').createTemp().then((temp) {
var file = new File("${temp.path}/test");
file.open(mode: FileMode.WRITE).then((raf) {
return raf.writeFrom(list, 0, 8);
}).then((raf) {
return raf.writeFrom(view, 0, 4);
}).then((raf) {
return raf.close();
}).then((_) {
var expected = [];
expected.addAll(list);
expected.addAll(view);
var content = file.readAsBytesSync();
var typed_data_content = new Uint8List(content.length);
for (int i = 0; i < content.length; i++) {
typed_data_content[i] = content[i];
}
Expect.listEquals(expected, new Uint64List.view(typed_data_content));
temp.deleteSync(recursive: true);
port.close();
});
});
}
main() {
testWriteInt8ListAndView();
testWriteUint8ListAndView();
testWriteUint8ClampedListAndView();
testWriteInt16ListAndView();
testWriteUint16ListAndView();
testWriteInt32ListAndView();
testWriteUint32ListAndView();
testWriteInt64ListAndView();
testWriteUint64ListAndView();
}