// Copyright (c) 2011, 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 Throws a FormatException if the input cannot be parsed
/// @description Checks that a FormatException exception is thrown if the input
/// cannot be parsed.
/// @author msyabro
/// @author sgrekhov@unipro.ru

import "../../../Utils/expect.dart";

dynamic getNull() => null;

main() {
  Expect.throws(() {
    DateTime.parse(getNull());
  }, (e) => e is TypeError || e is ArgumentError);

  Expect.throws(() {
    DateTime.parse("just text");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2000/01/01 00/00/00/0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2000 01 01 00 00 00 0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("23:23:23.23 2001-01-01");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2001-01-01 00:00:00.###");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2001-s-01 00:00:00.0");
  }, (e) => e is FormatException);

  //Incorrect number of digits
  Expect.throws(() {
    DateTime.parse("95-01-01 00:00:00.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2001-1-01 00:00:00.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2001-01-1 00:00:00.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2001-01-01 0:00:00.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2001-01-01 00:0:00.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2001-01-01 00:00:0.0");
  }, (e) => e is FormatException);

  //Missing components
  Expect.throws(() {
    DateTime.parse("2000");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2000-01");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("-01-01 00:00:00.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2000-01-01 :00:00.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2000-01-01 00::00.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2000-01-01 00:00:.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2000-01-01 00:00:00.");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2000--1 0:0:0.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("2000-1- 0:0:0.0");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("--- ::.");
  }, (e) => e is FormatException);

  // wrong characters
  Expect.throws(() {
    DateTime.parse("1985-W11-11 00:05:23");
  }, (e) => e is FormatException);
  Expect.throws(() {
    DateTime.parse("1985-01-01 00:05:23.123F");
  }, (e) => e is FormatException);
}
