emulator_test.dart 2.27 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// 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();
17
      final List<Emulator> emulators = await emulatorManager.getAllAvailableEmulators();
18 19 20 21
      expect(emulators, isList);
    });

    testUsingContext('getEmulatorsById', () async {
22 23 24
      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', '');
25 26 27 28
      final List<Emulator> emulators = <Emulator>[emulator1, emulator2, emulator3];
      final EmulatorManager emulatorManager = new TestEmulatorManager(emulators);

      Future<Null> expectEmulator(String id, List<Emulator> expected) async {
29
        expect(await emulatorManager.getEmulatorsMatching(id), expected);
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
      }
      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
47 48
  Future<List<Emulator>> getAllAvailableEmulators() {
    return new Future<List<Emulator>>.value(allEmulators);
49 50 51 52
  }
}

class _MockEmulator extends Emulator {
53
  _MockEmulator(String id, this.name, this.manufacturer, this.label) : super(id, true);
54 55

  @override
56 57 58 59 60 61 62 63
  final String name;
 
  @override
  final String manufacturer;
 
  @override
  final String label;

64 65 66 67
  @override
  void launch() {
    throw new UnimplementedError('Not implemented in Mock');
  }
68
}