blob: 726a7d64493a37a560fff712d555f64c2fcd1f13 [file] [log] [blame]
// Copyright (c) 2015, 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:http2/transport.dart';
import 'package:test/test.dart';
void expectHeadersEqual(List<Header> headers, List<Header> expectedHeaders) {
expect(headers, hasLength(expectedHeaders.length));
for (var i = 0; i < expectedHeaders.length; i++) {
expect(headers[i].name, expectedHeaders[i].name);
expect(headers[i].value, expectedHeaders[i].value);
}
}
void expectEmptyStream(Stream s) {
s.listen(expectAsync1((_) {}, count: 0), onDone: expectAsync0(() {}));
}
void streamTest(
String name,
Future<void> Function(ClientTransportConnection, ServerTransportConnection)
func,
{ClientSettings? settings}) {
return test(name, () {
var bidirect = BidirectionalConnection();
bidirect.settings = settings;
var client = bidirect.clientConnection;
var server = bidirect.serverConnection;
return func(client, server);
});
}
class BidirectionalConnection {
ClientSettings? settings;
final StreamController<List<int>> writeA = StreamController();
final StreamController<List<int>> writeB = StreamController();
Stream<List<int>> get readA => writeA.stream;
Stream<List<int>> get readB => writeB.stream;
ClientTransportConnection get clientConnection =>
ClientTransportConnection.viaStreams(readA, writeB, settings: settings);
ServerTransportConnection get serverConnection =>
ServerTransportConnection.viaStreams(readB, writeA);
}