blob: 9ea874a8e94cd78837f609f6e2c52aa588dcc581 [file] [log] [blame]
// Copyright (c) 2017, 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.
/// @assertion
/// Future<List<NetworkInterface>> list({
/// bool includeLoopback: false,
/// bool includeLinkLocal: false,
/// InternetAddressType type: InternetAddressType.ANY
/// })
/// Query the system for NetworkInterfaces.
/// ...
/// If type is either InternetAddressType.IPv4 or InternetAddressType.IPv6 it
/// will only lookup addresses of the specified type. Default is
/// InternetAddressType.ANY.
///
/// @description Checks that if parameter 'type' of static method [list] is
/// InternetAddressType.ANY, addresses of InternetAddressType.IPv4 type and
/// InternetAddressType.IPv6 type are lookup.
/// @author ngl@unipro.ru
import "dart:async";
import "dart:io";
import "../../../Utils/expect.dart";
main() {
Future<List<NetworkInterface>> fList =
NetworkInterface.list(includeLoopback: true, includeLinkLocal: true);
asyncStart();
fList.then((fValue) {
var addressCount = 0;
var ipv4Count = 0;
var ipv6Count = 0;
for (int i = 0; i < fValue.length; i++) {
NetworkInterface nwInterface = fValue[i];
for (int j = 0; j < nwInterface.addresses.length; j++) {
addressCount++;
if (nwInterface.addresses[j].type.name == "IPv4") {
ipv4Count++;
}
if (nwInterface.addresses[j].type.name == "IPv6") {
ipv6Count++;
}
}
}
Expect.equals(addressCount, ipv4Count + ipv6Count);
asyncEnd();
});
}