forked from flutter-webrtc/flutter-webrtc
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrtc_peerconnection_test.dart
87 lines (75 loc) · 2.39 KB
/
rtc_peerconnection_test.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Flutter imports:
import 'package:flutter/services.dart';
// Package imports:
import 'package:flutter_test/flutter_test.dart';
// Project imports:
import 'package:flutter_webrtc_plus/src/native/rtc_data_channel_impl.dart';
import 'package:flutter_webrtc_plus/src/native/rtc_peerconnection_impl.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
final channel = MethodChannel('FlutterWebRTC.Method');
setUp(() {
channel.setMockMethodCallHandler((MethodCall methodCall) async {
await ServicesBinding.instance.defaultBinaryMessenger
.handlePlatformMessage(
'FlutterWebRTC/peerConnectionEvent', null, (ByteData? data) {});
await ServicesBinding.instance.defaultBinaryMessenger
.handlePlatformMessage(
'FlutterWebRTC/dataChannelEvent', null, (ByteData? data) {});
});
});
tearDown(() {
channel.setMockMethodCallHandler(null);
});
test(
'Validate that not setting any public delegate this will not break the implementation by throwing NPE',
() {
final pc = RTCPeerConnectionNative('', {});
final events = [
'signalingState',
'iceGatheringState',
'iceConnectionState',
'onCandidate',
'onAddStream',
'onRemoveStream',
'onAddTrack',
'onRemoveTrack',
'didOpenDataChannel',
'onRenegotiationNeeded'
];
pc.onDataChannel = (dc) {
final channel = dc as RTCDataChannelNative;
channel.eventListener(<String, dynamic>{
'event': 'dataChannelStateChanged',
'id': 0,
'flutterId': '',
'state': 'open'
});
};
for (var event in events) {
pc.eventListener(<String, dynamic>{
'event': event,
//Minimum values for signalingState, iceGatheringState, iceConnectionState
'state': 'stable', // just picking one valid value from the list
//Minimum values for onCandidate
'candidate': {'candidate': '', 'sdpMid': '', 'sdpMLineIndex': 1},
//Minimum values for onAddStream
'streamId': '',
'audioTracks': [],
'videoTracks': [],
//Minimum values for onRemoveTrack
'trackId': '',
//Minimum values for onAddTrack
'track': {
'id': '',
'label': '',
'kind': '',
'enabled': false,
},
'id': 0,
'label': '',
'flutterId': '',
});
}
});
}