// 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 List<int> parseIPv4Address(String host)
 * ...
 * Throws a FormatException if host is not a valid IPv4 address representation.
 * @description Checks that FormatException is thrown if host is not a valid
 * IPv4 address representation
 * @author sgrekhov@unipro.ru
 */
import "../../../Utils/expect.dart";

main() {
  Expect.throws(() {
    Uri.parseIPv4Address("127.0.0.1:8080");
  }, (e) => e is FormatException);

  Expect.throws(() {
    Uri.parseIPv4Address("http://127.0.0.1");
  }, (e) => e is FormatException);
}
