| // 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. |
| |
| // @dart = 2.9 |
| |
| import 'dart:async'; |
| import 'dart:io'; |
| import 'dart:typed_data'; |
| |
| import "package:async_helper/async_helper.dart"; |
| import "package:expect/expect.dart"; |
| |
| void testWriteInt8ListAndView() { |
| asyncStart(); |
| const int LIST_LENGTH = 8; |
| const int OFFSET_IN_BYTES_FOR_VIEW = 2 * Int8List.bytesPerElement; |
| const int VIEW_LENGTH = 4; |
| Int8List list = new Int8List(LIST_LENGTH); |
| for (int i = 0; i < LIST_LENGTH; i++) list[i] = i; |
| var view = |
| new Int8List.view(list.buffer, OFFSET_IN_BYTES_FOR_VIEW, VIEW_LENGTH); |
| |
| Directory.systemTemp.createTemp('dart_file_typed_data').then((temp) { |
| var file = new File("${temp.path}/test"); |
| file.open(mode: FileMode.write).then((raf) { |
| return raf.writeFrom(list, 0, LIST_LENGTH); |
| }).then((raf) { |
| return raf.writeFrom(view, 0, VIEW_LENGTH); |
| }).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); |
| asyncEnd(); |
| }); |
| }); |
| } |
| |
| void testWriteUint8ListAndView() { |
| asyncStart(); |
| const int LIST_LENGTH = 8; |
| const int OFFSET_IN_BYTES_FOR_VIEW = 2 * Uint8List.bytesPerElement; |
| const int VIEW_LENGTH = 4; |
| Uint8List list = new Uint8List(LIST_LENGTH); |
| for (int i = 0; i < LIST_LENGTH; i++) list[i] = i; |
| var view = |
| new Uint8List.view(list.buffer, OFFSET_IN_BYTES_FOR_VIEW, VIEW_LENGTH); |
| |
| Directory.systemTemp.createTemp('dart_file_typed_data').then((temp) { |
| var file = new File("${temp.path}/test"); |
| file.open(mode: FileMode.write).then((raf) { |
| return raf.writeFrom(list, 0, LIST_LENGTH); |
| }).then((raf) { |
| return raf.writeFrom(view, 0, VIEW_LENGTH); |
| }).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); |
| asyncEnd(); |
| }); |
| }); |
| } |
| |
| void testWriteUint8ClampedListAndView() { |
| asyncStart(); |
| const int LIST_LENGTH = 8; |
| const int OFFSET_IN_BYTES_FOR_VIEW = 2 * Uint8ClampedList.bytesPerElement; |
| const int VIEW_LENGTH = 4; |
| Uint8ClampedList list = new Uint8ClampedList(LIST_LENGTH); |
| for (int i = 0; i < LIST_LENGTH; i++) list[i] = i; |
| var view = new Uint8ClampedList.view( |
| list.buffer, OFFSET_IN_BYTES_FOR_VIEW, VIEW_LENGTH); |
| |
| Directory.systemTemp.createTemp('dart_file_typed_data').then((temp) { |
| var file = new File("${temp.path}/test"); |
| file.open(mode: FileMode.write).then((raf) { |
| return raf.writeFrom(list, 0, LIST_LENGTH); |
| }).then((raf) { |
| return raf.writeFrom(view, 0, VIEW_LENGTH); |
| }).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); |
| asyncEnd(); |
| }); |
| }); |
| } |
| |
| void testWriteInt16ListAndView() { |
| asyncStart(); |
| const int LIST_LENGTH = 8; |
| const int LIST_LENGTH_IN_BYTES = LIST_LENGTH * Int16List.bytesPerElement; |
| const int OFFSET_IN_BYTES_FOR_VIEW = 2 * Int16List.bytesPerElement; |
| const int VIEW_LENGTH = 4; |
| const int VIEW_LENGTH_IN_BYTES = VIEW_LENGTH * Int16List.bytesPerElement; |
| var list = new Int16List(LIST_LENGTH); |
| for (int i = 0; i < LIST_LENGTH; i++) list[i] = i; |
| var view = |
| new Int16List.view(list.buffer, OFFSET_IN_BYTES_FOR_VIEW, VIEW_LENGTH); |
| |
| Directory.systemTemp.createTemp('dart_file_typed_data').then((temp) { |
| var file = new File("${temp.path}/test"); |
| file.open(mode: FileMode.write).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view(list.buffer), 0, LIST_LENGTH_IN_BYTES); |
| }).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view( |
| view.buffer, view.offsetInBytes, view.lengthInBytes), |
| 0, |
| VIEW_LENGTH_IN_BYTES); |
| }).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.buffer)); |
| temp.deleteSync(recursive: true); |
| asyncEnd(); |
| }); |
| }); |
| } |
| |
| void testWriteUint16ListAndView() { |
| asyncStart(); |
| const int LIST_LENGTH = 8; |
| const int LIST_LENGTH_IN_BYTES = LIST_LENGTH * Uint16List.bytesPerElement; |
| const int OFFSET_IN_BYTES_FOR_VIEW = 2 * Uint16List.bytesPerElement; |
| const int VIEW_LENGTH = 4; |
| const int VIEW_LENGTH_IN_BYTES = VIEW_LENGTH * Uint16List.bytesPerElement; |
| var list = new Uint16List(LIST_LENGTH); |
| for (int i = 0; i < LIST_LENGTH; i++) list[i] = i; |
| var view = |
| new Uint16List.view(list.buffer, OFFSET_IN_BYTES_FOR_VIEW, VIEW_LENGTH); |
| |
| Directory.systemTemp.createTemp('dart_file_typed_data').then((temp) { |
| var file = new File("${temp.path}/test"); |
| file.open(mode: FileMode.write).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view(list.buffer), 0, LIST_LENGTH_IN_BYTES); |
| }).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view( |
| view.buffer, view.offsetInBytes, view.lengthInBytes), |
| 0, |
| VIEW_LENGTH_IN_BYTES); |
| }).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.buffer)); |
| temp.deleteSync(recursive: true); |
| asyncEnd(); |
| }); |
| }); |
| } |
| |
| void testWriteInt32ListAndView() { |
| asyncStart(); |
| const int LIST_LENGTH = 8; |
| const int LIST_LENGTH_IN_BYTES = LIST_LENGTH * Int32List.bytesPerElement; |
| const int OFFSET_IN_BYTES_FOR_VIEW = 2 * Int32List.bytesPerElement; |
| const int VIEW_LENGTH = 4; |
| const int VIEW_LENGTH_IN_BYTES = VIEW_LENGTH * Int32List.bytesPerElement; |
| var list = new Int32List(LIST_LENGTH); |
| for (int i = 0; i < LIST_LENGTH; i++) list[i] = i; |
| var view = |
| new Int32List.view(list.buffer, OFFSET_IN_BYTES_FOR_VIEW, VIEW_LENGTH); |
| |
| Directory.systemTemp.createTemp('dart_file_typed_data').then((temp) { |
| var file = new File("${temp.path}/test"); |
| file.open(mode: FileMode.write).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view(list.buffer), 0, LIST_LENGTH_IN_BYTES); |
| }).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view( |
| view.buffer, view.offsetInBytes, view.lengthInBytes), |
| 0, |
| VIEW_LENGTH_IN_BYTES); |
| }).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.buffer)); |
| temp.deleteSync(recursive: true); |
| asyncEnd(); |
| }); |
| }); |
| } |
| |
| void testWriteUint32ListAndView() { |
| asyncStart(); |
| const int LIST_LENGTH = 8; |
| const int LIST_LENGTH_IN_BYTES = LIST_LENGTH * Int32List.bytesPerElement; |
| const int OFFSET_IN_BYTES_FOR_VIEW = 2 * Int32List.bytesPerElement; |
| const int VIEW_LENGTH = 4; |
| const int VIEW_LENGTH_IN_BYTES = VIEW_LENGTH * Int32List.bytesPerElement; |
| var list = new Uint32List(LIST_LENGTH); |
| for (int i = 0; i < LIST_LENGTH; i++) list[i] = i; |
| var view = |
| new Uint32List.view(list.buffer, OFFSET_IN_BYTES_FOR_VIEW, VIEW_LENGTH); |
| |
| Directory.systemTemp.createTemp('dart_file_typed_data').then((temp) { |
| var file = new File("${temp.path}/test"); |
| file.open(mode: FileMode.write).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view(list.buffer), 0, LIST_LENGTH_IN_BYTES); |
| }).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view( |
| view.buffer, view.offsetInBytes, view.lengthInBytes), |
| 0, |
| VIEW_LENGTH_IN_BYTES); |
| }).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.buffer)); |
| temp.deleteSync(recursive: true); |
| asyncEnd(); |
| }); |
| }); |
| } |
| |
| void testWriteInt64ListAndView() { |
| asyncStart(); |
| const int LIST_LENGTH = 8; |
| const int LIST_LENGTH_IN_BYTES = LIST_LENGTH * Int64List.bytesPerElement; |
| const int OFFSET_IN_BYTES_FOR_VIEW = 2 * Int64List.bytesPerElement; |
| const int VIEW_LENGTH = 4; |
| const int VIEW_LENGTH_IN_BYTES = VIEW_LENGTH * Int64List.bytesPerElement; |
| var list = new Int64List(LIST_LENGTH); |
| for (int i = 0; i < LIST_LENGTH; i++) list[i] = i; |
| var view = |
| new Int64List.view(list.buffer, OFFSET_IN_BYTES_FOR_VIEW, VIEW_LENGTH); |
| |
| Directory.systemTemp.createTemp('dart_file_typed_data').then((temp) { |
| var file = new File("${temp.path}/test"); |
| file.open(mode: FileMode.write).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view(list.buffer), 0, LIST_LENGTH_IN_BYTES); |
| }).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view( |
| view.buffer, view.offsetInBytes, view.lengthInBytes), |
| 0, |
| VIEW_LENGTH_IN_BYTES); |
| }).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.buffer)); |
| temp.deleteSync(recursive: true); |
| asyncEnd(); |
| }); |
| }); |
| } |
| |
| void testWriteUint64ListAndView() { |
| asyncStart(); |
| const int LIST_LENGTH = 8; |
| const int LIST_LENGTH_IN_BYTES = LIST_LENGTH * Uint64List.bytesPerElement; |
| const int OFFSET_IN_BYTES_FOR_VIEW = 2 * Uint64List.bytesPerElement; |
| const int VIEW_LENGTH = 4; |
| const int VIEW_LENGTH_IN_BYTES = VIEW_LENGTH * Uint64List.bytesPerElement; |
| var list = new Uint64List(LIST_LENGTH); |
| for (int i = 0; i < LIST_LENGTH; i++) list[i] = i; |
| var view = |
| new Uint64List.view(list.buffer, OFFSET_IN_BYTES_FOR_VIEW, VIEW_LENGTH); |
| |
| Directory.systemTemp.createTemp('dart_file_typed_data').then((temp) { |
| var file = new File("${temp.path}/test"); |
| file.open(mode: FileMode.write).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view(list.buffer), 0, LIST_LENGTH_IN_BYTES); |
| }).then((raf) { |
| return raf.writeFrom( |
| new Uint8List.view( |
| view.buffer, view.offsetInBytes, view.lengthInBytes), |
| 0, |
| VIEW_LENGTH_IN_BYTES); |
| }).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.buffer)); |
| temp.deleteSync(recursive: true); |
| asyncEnd(); |
| }); |
| }); |
| } |
| |
| main() { |
| testWriteInt8ListAndView(); |
| testWriteUint8ListAndView(); |
| testWriteUint8ClampedListAndView(); |
| testWriteInt16ListAndView(); |
| testWriteUint16ListAndView(); |
| testWriteInt32ListAndView(); |
| testWriteUint32ListAndView(); |
| testWriteInt64ListAndView(); |
| testWriteUint64ListAndView(); |
| } |