// Copyright 2017 The Chromium 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:async';
import 'dart:convert';
import 'dart:io';

import 'package:flutter_tools/src/commands/fuchsia_reload.dart';
import 'package:mockito/mockito.dart';
import 'package:process/process.dart';
import 'package:test/test.dart';

import '../src/context.dart';

void main() {
  group('FuchsiaDeviceCommandRunner', () {
    testUsingContext('a test', () async {
      final FuchsiaDeviceCommandRunner commandRunner =
          new FuchsiaDeviceCommandRunner('8.8.9.9',
                                         '~/fuchsia/out/release-x86-64');
      final List<String> ports = await commandRunner.run('ls /tmp');
      expect(ports, hasLength(3));
      expect(ports[0], equals('1234'));
      expect(ports[1], equals('5678'));
      expect(ports[2], equals('5'));
    }, overrides: <Type, Generator>{
      ProcessManager: () => new MockProcessManager(),
    });
  });
}

class MockProcessManager extends Mock implements ProcessManager {
  @override
  Future<ProcessResult> run(
    List<dynamic> command, {
    String workingDirectory,
    Map<String, String> environment,
    bool includeParentEnvironment = true,
    bool runInShell = false,
    Encoding stdoutEncoding = SYSTEM_ENCODING, // ignore: deprecated_member_use
    Encoding stderrEncoding = SYSTEM_ENCODING, // ignore: deprecated_member_use
  }) async {
    return new ProcessResult(0, 0, '1234\n5678\n5', '');
  }
}
