// 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.

/**
 * @assertion Object convert(String input)
 * Throws FormatException if the input is not valid JSON text.
 * @description checks that this method throws when a syntax error
 * in input string is encountered.
 * @author kaigorodov
 */
import "dart:convert";
import "../../../Utils/expect.dart";
import "table3.lib.dart" show table;

main() {
  for (String source in table) {
    JsonDecoder jdec = new JsonDecoder(null);
    Expect.throws((){
        jdec.convert(source);
      }, (e) => e is FormatException, "Bad string $source parsed");
  }
}
