Add some emulator tests
diff --git a/packages/flutter_tools/test/emulator_test.dart b/packages/flutter_tools/test/emulator_test.dart
new file mode 100644
index 0000000..784d326
--- /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<Emulator> 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<Emulator> emulators = <Emulator>[emulator1, emulator2, emulator3];
+ final EmulatorManager emulatorManager = new TestEmulatorManager(emulators);
+
+ Future<Null> expectEmulator(String id, List<Emulator> expected) async {
+ expect(await emulatorManager.getEmulatorsById(id).toList(), expected);
+ }
+ expectEmulator('Nexus_5', <Emulator>[emulator1]);
+ expectEmulator('Nexus_5X', <Emulator>[emulator2]);
+ expectEmulator('Nexus_5X_API_27_x86', <Emulator>[emulator2]);
+ expectEmulator('Nexus', <Emulator>[emulator1, emulator2]);
+ expectEmulator('iOS Simulator', <Emulator>[emulator3]);
+ expectEmulator('ios', <Emulator>[emulator3]);
+ });
+ });
+}
+
+class TestEmulatorManager extends EmulatorManager {
+ final List<Emulator> allEmulators;
+
+ TestEmulatorManager(this.allEmulators);
+
+ @override
+ Stream<Emulator> getAllAvailableEmulators() {
+ return new Stream<Emulator>.fromIterable(allEmulators);
+ }
+}
+
+class _MockEmulator extends Emulator {
+ _MockEmulator(String id) : super(id);
+
+ @override
+ void noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}