blob: 24fdebedf2885d91b57e619f53dd04893b943be6 [file] [log] [blame]
// Copyright 2019 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:io';
import 'package:glob/glob.dart';
import 'package:test/test.dart';
// ignore: avoid_as
import 'package:sl4f/sl4f.dart' as sl4f;
void main() {
sl4f.Dump dump;
Directory dumpDir;
group(sl4f.Dump, () {
setUp(() {
dumpDir = Directory.systemTemp.createTempSync('dump-test');
dump = sl4f.Dump(dumpDir.path);
});
tearDown(() {
dumpDir.deleteSync(recursive: true);
});
test('writeAsBytes creates expected file', () async {
File file = await dump.writeAsBytes(
'write-as-bytes', 'tmp', [0x68, 0x65, 0x6c, 0x6c, 0x6f]);
expect(file.path, startsWith(dumpDir.path));
expect(
file.path,
matches(RegExp(r'.*\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{1,6}'
r'-write-as-bytes.tmp$')));
expect(FileStat.statSync(file.path).size, greaterThan(0));
expect(file.readAsStringSync(), 'hello');
});
test('openForWrite creates expected file', () async {
IOSink sink = dump.openForWrite('open-for-write', 'tmp');
// Can't do cascaded invocations together with await, silly rabbit.
// ignore: cascade_invocations
sink.write('hello');
await sink.flush();
await sink.close();
final File file =
Glob('*-open-for-write.tmp').listSync(root: dumpDir.path).single;
expect(file.path, startsWith(dumpDir.path));
expect(
file.path,
matches(RegExp(r'.*\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{1,6}'
r'-open-for-write.tmp$')));
expect(FileStat.statSync(file.path).size, greaterThan(0));
expect(file.readAsStringSync(), 'hello');
});
});
test('constructor creates directory', () {
dumpDir = Directory.systemTemp.createTempSync('dump-test');
dump = sl4f.Dump('${dumpDir.path}/foo/bar');
addTearDown(() => dumpDir.deleteSync(recursive: true));
expect(Directory('${dumpDir.path}/foo/bar').existsSync(), isTrue);
});
}