blob: 367a0f2f14acfd63ec0694872ed219bf616a1d78 [file] [log] [blame]
// Copyright (c) 2023, 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.
import 'dart:async';
import 'package:test/test.dart';
import 'package:vm_service/vm_service.dart';
import 'common/test_helper.dart';
class _TestVmService extends VmService {
_TestVmService(
super.inStream,
super.writeMessage, {
super.log,
super.disposeHandler,
super.streamClosed,
super.wsUri,
});
static _TestVmService defaultFactory({
required Stream<dynamic> /*String|List<int>*/ inStream,
required void Function(String message) writeMessage,
Log? log,
DisposeHandler? disposeHandler,
Future? streamClosed,
String? wsUri,
}) {
return _TestVmService(
inStream,
writeMessage,
log: log,
disposeHandler: disposeHandler,
streamClosed: streamClosed,
wsUri: wsUri,
);
}
final callHistory = <String>[];
int callCount = 0;
@override
Future<T> wrapFuture<T>(String name, Future<T> future) async {
callHistory.add(name);
callCount++;
return future;
}
}
var tests = <VMTest>[
// Call a methods and verify wrapper was called.
(VmService service) async {
final testService = service as _TestVmService;
// Verify starting state.
expect(testService.callHistory, ['getVM']);
expect(testService.callCount, 1);
// Execute a few calls to ensure the wrapper continues to get called.
await testService.getVersion();
await testService.getVMTimelineMicros();
await testService.getFlagList();
expect(
testService.callHistory,
['getVM', 'getVersion', 'getVMTimelineMicros', 'getFlagList'],
);
expect(testService.callCount, 4);
},
];
void main([args = const <String>[]]) => runVMTests(
args,
tests,
'wrap_future_test.dart',
serviceFactory: _TestVmService.defaultFactory,
);