Index: pkg/analysis_server/test/mocks.dart |
diff --git a/pkg/analysis_server/test/mocks.dart b/pkg/analysis_server/test/mocks.dart |
index 1c87b0e331bd0b7d75ef2cd5c316f3ae46c82633..c8b8078ccc431f9b3400795c841c096330133f90 100644 |
--- a/pkg/analysis_server/test/mocks.dart |
+++ b/pkg/analysis_server/test/mocks.dart |
@@ -4,35 +4,50 @@ |
library mocks; |
-import 'dart:io'; |
import 'dart:async'; |
+import 'dart:convert'; |
+import 'dart:io'; |
/** |
- * A mock [WebSocket] that immediately passes data to the listener. |
+ * A mock [WebSocket] for testing. |
*/ |
class MockSocket<T> implements WebSocket { |
- var onData; |
- StreamSubscription<T> listen(void onData(T event), |
- {Function onError, void onDone(), bool cancelOnError}) { |
- this.onData = onData; |
- return null; |
+ |
+ final JsonEncoder jsonEncoder = const JsonEncoder(null); |
+ |
+ final JsonDecoder jsonDecoder = const JsonDecoder(null); |
+ |
+ StreamController controller = new StreamController(); |
+ MockSocket twin; |
+ Stream stream; |
+ |
+ factory MockSocket.pair() { |
+ MockSocket socket1 = new MockSocket(); |
+ MockSocket socket2 = new MockSocket(); |
+ socket1.twin = socket2; |
+ socket2.twin = socket1; |
+ socket1.stream = socket2.controller.stream; |
+ socket2.stream = socket1.controller.stream; |
+ return socket1; |
} |
- void add(T event) => onData(event); |
- noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
-} |
-/** |
- * A mock [WebSocket] for sending invalid JSON data and counting responses. |
- */ |
-class InvalidJsonMockSocket<T> implements WebSocket { |
- int responseCount = 0; |
- var onData; |
- StreamSubscription<T> listen(void onData(T event), |
- {Function onError, void onDone(), bool cancelOnError}) { |
- this.onData = onData; |
- return null; |
+ MockSocket(); |
+ |
+ void add(T text) => controller.add(text); |
+ |
+ void allowMultipleListeners() { |
+ stream = stream.asBroadcastStream(); |
} |
- void addInvalid(T event) => onData(event); |
- void add(T event) { responseCount++; } |
+ |
+ Future close([int code, String reason]) => controller.close() |
+ .then((_) => twin.controller.close()); |
+ |
+ StreamSubscription<T> listen(void onData(T event), |
+ { Function onError, void onDone(), bool cancelOnError}) => |
+ stream.listen(onData, onError: onError, onDone: onDone, |
+ cancelOnError: cancelOnError); |
+ |
+ Stream<T> where(bool test(T)) => stream.where(test); |
+ |
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
} |