blob: 5f1b41b4652f0f0b100c3cbc7d02198e0d8fbc69 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
import 'package:test/test.dart';
import 'package:zircon/zircon.dart';
void main() {
group('test vmo', () {
test('fromFile', () {
const String fuchsia = 'Fuchsia';
File f = new File('tmp/testdata')
..createSync()
..writeAsStringSync(fuchsia);
String readFuchsia = f.readAsStringSync();
expect(readFuchsia, equals(fuchsia));
SizedVmo fileVmo = new SizedVmo.fromFile('tmp/testdata');
Uint8List fileData = fileVmo.map();
String fileString = utf8.decode(fileData.sublist(0, fileVmo.size));
expect(fileString, equals(fuchsia));
});
test('duplicate', () {
const String fuchsia = 'Fuchsia';
Uint8List data = new Uint8List.fromList(fuchsia.codeUnits);
SizedVmo vmo = new SizedVmo.fromUint8List(data);
final Vmo duplicate =
vmo.duplicate(ZX.RIGHTS_BASIC | ZX.RIGHT_READ | ZX.RIGHT_MAP);
expect(duplicate.isValid, isTrue);
// Read from the duplicate.
final duplicatedVmo = SizedVmo(duplicate.handle, fuchsia.length);
Uint8List vmoData = duplicatedVmo.map();
String vmoString = utf8.decode(vmoData.sublist(0, vmo.size));
expect(vmoString, equals(fuchsia));
});
});
}