// 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 Encoding getByName(String name)
/// Gets an Encoding object from the name of the character set name. The names
/// used are the IANA official names for the character set (see
/// http://www.iana.org/assignments/character-sets/character-sets.xml).
///
/// The name passed is case insensitive.
/// ...
/// @description Checks that this method is case insensitive
/// @author sgrekhov@unipro.ru

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

List<String> encodings = [
  "US-ASCII",
  "us-ascii",
  "Us-Ascii",
  "ISO-8859-1",
  "iso-8859-1",
  "Iso-8859-1",
  "iSO-8859-1",
  "UTF-8",
  "utf-8",
  "uTf-8",
];

main() {
  encodings.forEach((String encodingName) {
    Encoding? e = Encoding.getByName(encodingName);
    Expect.isNotNull(e, "Encoding " + encodingName + " is not supported");
  });
}
