| // 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); |
| }); |
| } |