// Copyright 2018 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 'package:flutter_tools/src/emulator.dart'; import 'package:test/test.dart'; import 'src/context.dart'; void main() { group('EmulatorManager', () { testUsingContext('getEmulators', () async { // Test that EmulatorManager.getEmulators() doesn't throw. final EmulatorManager emulatorManager = new EmulatorManager(); final List emulators = await emulatorManager.getAllAvailableEmulators().toList(); expect(emulators, isList); }); testUsingContext('getEmulatorsById', () async { final _MockEmulator emulator1 = new _MockEmulator('Nexus_5', 'Nexus 5', 'Google', ''); final _MockEmulator emulator2 = new _MockEmulator('Nexus_5X_API_27_x86', 'Nexus 5X', 'Google', ''); final _MockEmulator emulator3 = new _MockEmulator('iOS Simulator', 'iOS Simulator', 'Apple', ''); final List emulators = [emulator1, emulator2, emulator3]; final EmulatorManager emulatorManager = new TestEmulatorManager(emulators); Future expectEmulator(String id, List expected) async { expect(await emulatorManager.getEmulatorsById(id).toList(), expected); } expectEmulator('Nexus_5', [emulator1]); expectEmulator('Nexus_5X', [emulator2]); expectEmulator('Nexus_5X_API_27_x86', [emulator2]); expectEmulator('Nexus', [emulator1, emulator2]); expectEmulator('iOS Simulator', [emulator3]); expectEmulator('ios', [emulator3]); }); }); } class TestEmulatorManager extends EmulatorManager { final List allEmulators; TestEmulatorManager(this.allEmulators); @override Stream getAllAvailableEmulators() { return new Stream.fromIterable(allEmulators); } } class _MockEmulator extends Emulator { _MockEmulator(String id, this.name, this.manufacturer, this.label) : super(id, true); @override final String name; @override final String manufacturer; @override final String label; }