mirror of
https://github.com/dart-lang/sdk
synced 2024-09-19 15:31:32 +00:00
420f50a392
Closes #41727 These are invalid on linux, but treated as valid on mac. Change-Id: I0ccee97048b163f419ad88f8cfcd3d5cde427ea9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145641 Commit-Queue: Nate Bosch <nbosch@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com> Auto-Submit: Nate Bosch <nbosch@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com>
222 lines
8 KiB
Dart
222 lines
8 KiB
Dart
// 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.
|
|
|
|
import 'dart:io';
|
|
import 'dart:convert';
|
|
import 'dart:typed_data';
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
void testDefaultAddresses() {
|
|
var loopback4 = InternetAddress.loopbackIPv4;
|
|
Expect.isNotNull(loopback4);
|
|
Expect.equals(InternetAddressType.IPv4, loopback4.type);
|
|
Expect.equals("127.0.0.1", loopback4.host);
|
|
Expect.equals("127.0.0.1", loopback4.address);
|
|
Expect.listEquals([127, 0, 0, 1], loopback4.rawAddress);
|
|
|
|
var loopback6 = InternetAddress.loopbackIPv6;
|
|
Expect.isNotNull(loopback6);
|
|
Expect.equals(InternetAddressType.IPv6, loopback6.type);
|
|
Expect.equals("::1", loopback6.host);
|
|
Expect.equals("::1", loopback6.address);
|
|
Expect.listEquals(
|
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], loopback6.rawAddress);
|
|
|
|
var any4 = InternetAddress.anyIPv4;
|
|
Expect.isNotNull(any4);
|
|
Expect.equals(InternetAddressType.IPv4, any4.type);
|
|
Expect.equals("0.0.0.0", any4.host);
|
|
Expect.equals("0.0.0.0", any4.address);
|
|
|
|
var any6 = InternetAddress.anyIPv6;
|
|
Expect.isNotNull(any6);
|
|
Expect.equals(InternetAddressType.IPv6, any6.type);
|
|
Expect.equals("::", any6.host);
|
|
Expect.equals("::", any6.address);
|
|
}
|
|
|
|
void testConstructor() {
|
|
var loopback4 = new InternetAddress("127.0.0.1");
|
|
Expect.equals(InternetAddressType.IPv4, loopback4.type);
|
|
Expect.equals("127.0.0.1", loopback4.host);
|
|
Expect.equals("127.0.0.1", loopback4.address);
|
|
Expect.isFalse(loopback4.isMulticast);
|
|
|
|
var loopback6 = new InternetAddress("::1");
|
|
Expect.equals(InternetAddressType.IPv6, loopback6.type);
|
|
Expect.equals("::1", loopback6.host);
|
|
Expect.equals("::1", loopback6.address);
|
|
Expect.isFalse(loopback6.isMulticast);
|
|
|
|
var ip4 = new InternetAddress("10.20.30.40");
|
|
Expect.equals(InternetAddressType.IPv4, ip4.type);
|
|
Expect.equals("10.20.30.40", ip4.host);
|
|
Expect.equals("10.20.30.40", ip4.address);
|
|
Expect.isFalse(ip4.isMulticast);
|
|
|
|
var ip6 = new InternetAddress("10:20::30:40");
|
|
Expect.equals(InternetAddressType.IPv6, ip6.type);
|
|
Expect.equals("10:20::30:40", ip6.host);
|
|
Expect.equals("10:20::30:40", ip6.address);
|
|
Expect.isFalse(ip6.isMulticast);
|
|
|
|
var multicast4 = new InternetAddress("224.1.2.3");
|
|
Expect.equals(InternetAddressType.IPv4, multicast4.type);
|
|
Expect.isTrue(multicast4.isMulticast);
|
|
|
|
var multicast6 = new InternetAddress("FF00::1:2:3");
|
|
Expect.equals(InternetAddressType.IPv6, multicast6.type);
|
|
Expect.isTrue(multicast6.isMulticast);
|
|
|
|
Expect.throwsArgumentError(() => new InternetAddress("1.2.3"));
|
|
Expect.throwsArgumentError(() => new InternetAddress("::FFFF::1"));
|
|
}
|
|
|
|
void testTryParse() {
|
|
var loopback4 = InternetAddress.tryParse("127.0.0.1");
|
|
Expect.equals(InternetAddressType.IPv4, loopback4.type);
|
|
Expect.equals("127.0.0.1", loopback4.host);
|
|
Expect.equals("127.0.0.1", loopback4.address);
|
|
Expect.isFalse(loopback4.isMulticast);
|
|
|
|
var loopback6 = InternetAddress.tryParse("::1");
|
|
Expect.equals(InternetAddressType.IPv6, loopback6.type);
|
|
Expect.equals("::1", loopback6.host);
|
|
Expect.equals("::1", loopback6.address);
|
|
Expect.isFalse(loopback6.isMulticast);
|
|
|
|
var ip4 = InternetAddress.tryParse("10.20.30.40");
|
|
Expect.equals(InternetAddressType.IPv4, ip4.type);
|
|
Expect.equals("10.20.30.40", ip4.host);
|
|
Expect.equals("10.20.30.40", ip4.address);
|
|
Expect.isFalse(ip4.isMulticast);
|
|
|
|
var ip6 = InternetAddress.tryParse("10:20::30:40");
|
|
Expect.equals(InternetAddressType.IPv6, ip6.type);
|
|
Expect.equals("10:20::30:40", ip6.host);
|
|
Expect.equals("10:20::30:40", ip6.address);
|
|
Expect.isFalse(ip6.isMulticast);
|
|
|
|
var multicast4 = InternetAddress.tryParse("224.1.2.3");
|
|
Expect.equals(InternetAddressType.IPv4, multicast4.type);
|
|
Expect.isTrue(multicast4.isMulticast);
|
|
|
|
var multicast6 = InternetAddress.tryParse("FF00::1:2:3");
|
|
Expect.equals(InternetAddressType.IPv6, multicast6.type);
|
|
Expect.isTrue(multicast6.isMulticast);
|
|
|
|
var lowercase = InternetAddress.tryParse("ff00::1:2:3");
|
|
Expect.equals(InternetAddressType.IPv6, lowercase.type);
|
|
Expect.equals("ff00::1:2:3", lowercase.host);
|
|
Expect.equals("ff00::1:2:3", lowercase.address);
|
|
|
|
Expect.isNull(InternetAddress.tryParse("1.2.3"));
|
|
Expect.isNull(InternetAddress.tryParse("1.2.3.4.5"));
|
|
Expect.isNull(InternetAddress.tryParse("192.168.256.0"));
|
|
Expect.isNull(InternetAddress.tryParse("192.168.999.0"));
|
|
Expect.isNull(InternetAddress.tryParse("1.-2.3.4"));
|
|
Expect.isNull(InternetAddress.tryParse(""));
|
|
Expect.isNull(InternetAddress.tryParse("FFFG::0"));
|
|
Expect.isNull(InternetAddress.tryParse("FFF@::0"));
|
|
Expect.isNull(InternetAddress.tryParse("::FFFF::1"));
|
|
}
|
|
|
|
void testEquality() {
|
|
Expect.equals(
|
|
new InternetAddress("127.0.0.1"), new InternetAddress("127.0.0.1"));
|
|
Expect.equals(new InternetAddress("127.0.0.1"), InternetAddress.loopbackIPv4);
|
|
Expect.equals(new InternetAddress("::1"), new InternetAddress("::1"));
|
|
Expect.equals(new InternetAddress("::1"), InternetAddress.loopbackIPv6);
|
|
Expect.equals(new InternetAddress("1:2:3:4:5:6:7:8"),
|
|
new InternetAddress("1:2:3:4:5:6:7:8"));
|
|
Expect.equals(
|
|
new InternetAddress("1::2"), new InternetAddress("1:0:0:0:0:0:0:2"));
|
|
Expect.equals(new InternetAddress("::FFFF:0:0:16.32.48.64"),
|
|
new InternetAddress("::FFFF:0:0:1020:3040"));
|
|
|
|
var set = new Set();
|
|
set.add(new InternetAddress("127.0.0.1"));
|
|
set.add(new InternetAddress("::1"));
|
|
set.add(new InternetAddress("1:2:3:4:5:6:7:8"));
|
|
Expect.isTrue(set.contains(new InternetAddress("127.0.0.1")));
|
|
Expect.isTrue(set.contains(InternetAddress.loopbackIPv4));
|
|
Expect.isFalse(set.contains(new InternetAddress("127.0.0.2")));
|
|
Expect.isTrue(set.contains(new InternetAddress("::1")));
|
|
Expect.isTrue(set.contains(InternetAddress.loopbackIPv6));
|
|
Expect.isFalse(set.contains(new InternetAddress("::2")));
|
|
Expect.isTrue(set.contains(new InternetAddress("1:2:3:4:5:6:7:8")));
|
|
Expect.isFalse(set.contains(new InternetAddress("1:2:3:4:5:6:7:9")));
|
|
Expect.isFalse(set.contains(new InternetAddress("0:2:3:4:5:6:7:8")));
|
|
}
|
|
|
|
void testLookup() {
|
|
InternetAddress.lookup("127.0.0.1").then((addresses) {
|
|
Expect.equals(1, addresses.length);
|
|
Expect.equals("127.0.0.1", addresses[0].address);
|
|
});
|
|
|
|
InternetAddress.lookup("::1").then((addresses) {
|
|
Expect.equals(1, addresses.length);
|
|
Expect.equals("::1", addresses[0].address);
|
|
});
|
|
}
|
|
|
|
void testReverseLookup() {
|
|
InternetAddress.lookup('localhost').then((addrs) {
|
|
addrs.first.reverse().then((addr) {
|
|
Expect.isNotNull(addr.host);
|
|
Expect.isNotNull(addr.rawAddress);
|
|
});
|
|
});
|
|
|
|
InternetAddress.lookup('127.0.0.1').then((addrs) {
|
|
Expect.equals('127.0.0.1', addrs.first.host);
|
|
Expect.listEquals([127, 0, 0, 1], addrs.first.rawAddress);
|
|
addrs.first.reverse().then((addr) {
|
|
Expect.isNotNull(addr.host);
|
|
Expect.notEquals('127.0.0.1', addr.host);
|
|
Expect.listEquals([127, 0, 0, 1], addr.rawAddress);
|
|
});
|
|
});
|
|
}
|
|
|
|
void testRawAddress() {
|
|
Uint8List addr = Uint8List.fromList([127, 0, 0, 1]);
|
|
var address = InternetAddress.fromRawAddress(addr);
|
|
Expect.equals('127.0.0.1', address.address);
|
|
Expect.equals(address.address, address.host);
|
|
Expect.equals(InternetAddressType.IPv4, address.type);
|
|
}
|
|
|
|
void testRawAddressIPv6() {
|
|
Uint8List addr =
|
|
Uint8List.fromList([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
|
|
var address = InternetAddress.fromRawAddress(addr);
|
|
Expect.equals('::1', address.address);
|
|
Expect.equals(address.address, address.host);
|
|
Expect.equals(InternetAddressType.IPv6, address.type);
|
|
}
|
|
|
|
void testRawPath() {
|
|
var name = 'test_raw_path';
|
|
var address = InternetAddress.fromRawAddress(utf8.encode(name),
|
|
type: InternetAddressType.unix);
|
|
Expect.equals(name, address.address);
|
|
Expect.equals(address.address, address.host);
|
|
Expect.equals(InternetAddressType.unix, address.type);
|
|
}
|
|
|
|
void main() {
|
|
testDefaultAddresses();
|
|
testConstructor();
|
|
testTryParse();
|
|
testEquality();
|
|
testLookup();
|
|
testReverseLookup();
|
|
testRawAddress();
|
|
testRawAddressIPv6();
|
|
testRawPath();
|
|
}
|