|
1 | 1 | import 'dart:async';
|
2 |
| -import 'dart:io'; |
| 2 | +import 'dart:convert'; |
3 | 3 | import 'dart:typed_data';
|
4 | 4 | import 'package:connectme/connectme.dart';
|
5 | 5 | import 'package:serveme/serveme.dart';
|
6 | 6 | import 'package:test/test.dart';
|
7 | 7 | import 'generated/test.generated.dart';
|
8 | 8 | import 'modules/test.dart';
|
9 | 9 |
|
| 10 | +const Utf8Codec _utf8 = Utf8Codec(); |
| 11 | + |
10 | 12 | void main() {
|
11 | 13 | late ServeMe<ServeMeClient> server;
|
12 | 14 | late ConnectMeClient client;
|
@@ -38,7 +40,7 @@ void main() {
|
38 | 40 | });
|
39 | 41 | });
|
40 | 42 |
|
41 |
| - group('ServeMe data exchange tests', () { |
| 43 | + group('ServeMe WebSocket data exchange tests', () { |
42 | 44 | setUp(() async {
|
43 | 45 | timer = Timer(const Duration(seconds: 2), () => fail('Operation timed out'));
|
44 | 46 | server = ServeMe<ServeMeClient>(
|
@@ -114,6 +116,85 @@ void main() {
|
114 | 116 | });
|
115 | 117 | });
|
116 | 118 |
|
| 119 | + group('ServeMe TCP data exchange tests', () { |
| 120 | + setUp(() async { |
| 121 | + timer = Timer(const Duration(seconds: 2), () => fail('Operation timed out')); |
| 122 | + server = ServeMe<ServeMeClient>( |
| 123 | + type: ServeMeType.tcp, |
| 124 | + configFile: 'test/config_test.yaml', |
| 125 | + modules: <String, Module<ServeMeClient>>{ |
| 126 | + 'test': module = TestModule(), |
| 127 | + }, |
| 128 | + ); |
| 129 | + await server.run(); |
| 130 | + client = await ConnectMe.connect('127.0.0.1', port: 31337); |
| 131 | + }); |
| 132 | + |
| 133 | + tearDown(() async { |
| 134 | + await client.close(); |
| 135 | + await server.stop(); |
| 136 | + timer.cancel(); |
| 137 | + }); |
| 138 | + |
| 139 | + test('Client sends String to server', () async { |
| 140 | + final Completer<Uint8List> completer = Completer<Uint8List>(); |
| 141 | + server.listen<Uint8List>((Uint8List message, ConnectMeClient client) async { |
| 142 | + completer.complete(message); |
| 143 | + }); |
| 144 | + client.send('Test message from client'); |
| 145 | + final List<int> expected = _utf8.encode('Test message from client'); |
| 146 | + expect(await completer.future, expected); |
| 147 | + }); |
| 148 | + |
| 149 | + test('Server broadcasts String to clients', () async { |
| 150 | + final Completer<Uint8List> completer = Completer<Uint8List>(); |
| 151 | + client.listen<Uint8List>((Uint8List message) { |
| 152 | + completer.complete(message); |
| 153 | + }); |
| 154 | + server.broadcast('Test message from server'); |
| 155 | + final List<int> expected = _utf8.encode('Test message from server'); |
| 156 | + expect(await completer.future, expected); |
| 157 | + }); |
| 158 | + |
| 159 | + test('Client sends Uint8List to server', () async { |
| 160 | + final Completer<Uint8List> completer = Completer<Uint8List>(); |
| 161 | + server.listen<Uint8List>((Uint8List message, ConnectMeClient client) async { |
| 162 | + completer.complete(message); |
| 163 | + }); |
| 164 | + client.send(Uint8List.fromList(<int>[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])); |
| 165 | + expect(await completer.future, Uint8List.fromList(<int>[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])); |
| 166 | + }); |
| 167 | + |
| 168 | + test('Server broadcasts Uint8List to clients', () async { |
| 169 | + final Completer<Uint8List> completer = Completer<Uint8List>(); |
| 170 | + client.listen<Uint8List>((Uint8List message) { |
| 171 | + completer.complete(message); |
| 172 | + }); |
| 173 | + server.broadcast(Uint8List.fromList(<int>[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])); |
| 174 | + expect(await completer.future, Uint8List.fromList(<int>[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])); |
| 175 | + }); |
| 176 | + |
| 177 | + test('Client sends TestResponse query to server', () async { |
| 178 | + server.register(testMessageFactory); |
| 179 | + server.listen<TestRequest>((TestRequest request, ConnectMeClient client) async { |
| 180 | + client.send(request.$response(responseParam: request.requestParam)); |
| 181 | + }); |
| 182 | + client.register(testMessageFactory); |
| 183 | + final TestResponse response = await client.query<TestResponse>(TestRequest(requestParam: 3.1415926535)); |
| 184 | + expect(response.responseParam, 3.1415926535); |
| 185 | + }); |
| 186 | + |
| 187 | + test('Server sends TestResponse query to client', () async { |
| 188 | + client.register(testMessageFactory); |
| 189 | + client.listen<TestRequest>((TestRequest request) { |
| 190 | + client.send(request.$response(responseParam: request.requestParam)); |
| 191 | + }); |
| 192 | + server.register(testMessageFactory); |
| 193 | + final TestResponse response = await server.clients.first.query<TestResponse>(TestRequest(requestParam: 3.1415926535)); |
| 194 | + expect(response.responseParam, 3.1415926535); |
| 195 | + }); |
| 196 | + }); |
| 197 | + |
117 | 198 | group('ServeMe API tests', () {
|
118 | 199 | setUp(() async {
|
119 | 200 | timer = Timer(const Duration(seconds: 2), () => fail('Operation timed out'));
|
|
0 commit comments