forked from jhomlala/betterplayer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmock_method_channel.dart
50 lines (43 loc) · 1.51 KB
/
mock_method_channel.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
class MockMethodChannel {
final MethodChannel channel = const MethodChannel("better_player_channel");
final List<MethodChannel> eventsChannels = [];
Future<Object?>? handle(MethodCall methodCall) async {
if (methodCall.method == "create") {
final int id = getNextId();
_createEventChannel(id);
return _getCreateResult(id);
}
if (methodCall.method == "setDataSource") {
//return
}
return <String, String>{};
}
int getNextId() {
return eventsChannels.length;
}
Map<String, dynamic> _getCreateResult(int id) =>
<String, dynamic>{"textureId": id};
Map<String, dynamic> _getInitResult() => <String, dynamic>{
"event": "initialized",
"height": 720.0,
"width:": 1280.0,
"duration": 100
};
void _createEventChannel(int id) {
final MethodChannel eventChannel =
MethodChannel("better_player_channel/videoEvents$id");
TestDefaultBinaryMessengerBinding.instance!.defaultBinaryMessenger
.setMockMethodCallHandler(eventChannel, (MethodCall methodCall) async {
TestDefaultBinaryMessengerBinding.instance!.defaultBinaryMessenger
.handlePlatformMessage(
"better_player_channel/videoEvents$id",
const StandardMethodCodec()
.encodeSuccessEnvelope(_getInitResult()),
(ByteData? data) {});
return null;
});
eventsChannels.add(eventChannel);
}
}