| // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file |
| |
| part of mocks; |
| |
| class TargetChangeEventMock implements M.TargetChangeEvent { |
| final TargetRepositoryMock repository; |
| const TargetChangeEventMock({this.repository}); |
| } |
| |
| typedef void TargetRepositoryMockStringCallback(String notification); |
| typedef void TargetRepositoryMockTargetCallback(M.Target notification); |
| |
| class TargetRepositoryMock implements M.TargetRepository { |
| final StreamController<M.TargetChangeEvent> _onChange = |
| new StreamController<M.TargetChangeEvent>.broadcast(); |
| Stream<M.TargetChangeEvent> get onChange => _onChange.stream; |
| |
| bool get hasListeners => _onChange.hasListener; |
| |
| final M.Target _current; |
| final Iterable<M.Target> _list; |
| final TargetRepositoryMockStringCallback _add; |
| final TargetRepositoryMockTargetCallback _setCurrent; |
| final TargetRepositoryMockTargetCallback _delete; |
| |
| bool currentInvoked = false; |
| bool addInvoked = false; |
| bool listInvoked = false; |
| bool setCurrentInvoked = false; |
| bool deleteInvoked = false; |
| |
| M.Target get current { |
| currentInvoked = true; |
| return _current; |
| } |
| |
| void add(String val) { |
| addInvoked = true; |
| if (_add != null) _add(val); |
| } |
| |
| Iterable<M.Target> list() { |
| listInvoked = true; |
| return _list; |
| } |
| |
| void setCurrent(M.Target target) { |
| setCurrentInvoked = true; |
| if (_setCurrent != null) _setCurrent(target); |
| } |
| |
| void delete(M.Target target) { |
| deleteInvoked = true; |
| if (_delete != null) _delete(target); |
| } |
| |
| void triggerChangeEvent() { |
| _onChange.add(new TargetChangeEventMock(repository: this)); |
| } |
| |
| TargetRepositoryMock({M.Target current, Iterable<M.Target> list : const [], |
| TargetRepositoryMockStringCallback add, |
| TargetRepositoryMockTargetCallback setCurrent, |
| TargetRepositoryMockTargetCallback delete}) |
| : _current = current, |
| _list = list, |
| _add = add, |
| _setCurrent = setCurrent, |
| _delete = delete; |
| } |