/*
 * 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 String convert(List<int> input)
 * Converts input and returns the result of the conversion.
 * @description Checks that this method converts input and returns the result of
 * the conversion
 * @author sgrekhov@unipro.ru
 */
import "dart:convert";
import "../../../Utils/expect.dart";

main() {
  Base64Encoder encoder = new Base64Encoder();
  Expect.equals("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=",
      encoder.convert("abcdefghijklmnopqrstuvwxyz".codeUnits));
  Expect.equals("QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=",
      encoder.convert("ABCDEFGHIJKLMNOPQRSTUVWXYZ".codeUnits));
  Expect.equals("MDEyMzQ1Njc4OQ==",
      encoder.convert("0123456789".codeUnits));
  Expect.equals("", encoder.convert([]));
}
