diff --git a/packages/flutter_tools/lib/src/emulator.dart b/packages/flutter_tools/lib/src/emulator.dart index 673e4b55695..57c647a55f3 100644 --- a/packages/flutter_tools/lib/src/emulator.dart +++ b/packages/flutter_tools/lib/src/emulator.dart @@ -119,7 +119,7 @@ abstract class Emulator { final String id; - String get name; + String get name => id; @override int get hashCode => id.hashCode; diff --git a/packages/flutter_tools/test/emulator_test.dart b/packages/flutter_tools/test/emulator_test.dart new file mode 100644 index 00000000000..784d3266a46 --- /dev/null +++ b/packages/flutter_tools/test/emulator_test.dart @@ -0,0 +1,57 @@ +// 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'); + final _MockEmulator emulator2 = new _MockEmulator('Nexus_5X_API_27_x86'); + final _MockEmulator emulator3 = new _MockEmulator('iOS Simulator'); + 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) : super(id); + + @override + void noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); +}