blob: 90e176181fda9e8897efd9c342e6586be2d3ca2d [file] [log] [blame]
// Copyright (c) 2013, 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.
// @dart = 2.9
import "dart:async";
import "dart:io";
import "dart:typed_data";
import "package:expect/expect.dart";
void testHostAndPort() {
ServerSocket.bind("::1", 0).then((server) {
Socket.connect("::1", server.port).then((clientSocket) {
server.listen((socket) {
Expect.equals(socket.port, server.port);
Expect.equals(clientSocket.port, socket.remotePort);
Expect.equals(clientSocket.remotePort, socket.port);
Expect.equals(socket.remoteAddress.address, "::1");
Expect.equals(socket.remoteAddress.type, InternetAddressType.IPv6);
Expect.listEquals(socket.remoteAddress.rawAddress,
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
Expect.equals(clientSocket.remoteAddress.address, "::1");
Expect.equals(
clientSocket.remoteAddress.type, InternetAddressType.IPv6);
Expect.listEquals(clientSocket.remoteAddress.rawAddress,
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
socket.destroy();
clientSocket.destroy();
server.close();
});
});
});
}
Future<void> testRawAddress() async {
var list =
Uint8List.fromList([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
var addr = '::1';
var address = InternetAddress.fromRawAddress(list);
Expect.equals(address.address, addr);
var server = await ServerSocket.bind(address, 0);
var client = await Socket.connect(address, server.port);
var completer = Completer<void>();
server.listen((socket) async {
Expect.equals(socket.port, server.port);
Expect.equals(client.port, socket.remotePort);
Expect.equals(client.remotePort, socket.port);
Expect.equals(client.remoteAddress, address);
socket.destroy();
client.destroy();
await server.close();
completer.complete();
});
await completer.future;
}
void main() async {
testHostAndPort();
await testRawAddress();
}