// 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 const Base64Codec.urlSafe()
/// @description Checks that this constructor creates valid Base64Codec in
/// "URL and Filename safe" Base 64 Alphabet
/// @author sgrekhov@unipro.ru

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

RegExp alphabet = new RegExp("[A-Za-z0-9_=-]");

check(Base64Codec codec, List<int> toEncode) {
  String encoded = codec.encode(toEncode);
  Expect.listEquals(toEncode, codec.decode(encoded));

  for (int i = 0; i < encoded.length - 1; i++) {
    String char = encoded.substring(i, i + 1);
    Expect.isTrue(alphabet.hasMatch(char), "Wrong character " + char);
  }
}

main() {
  Base64Codec codec = new Base64Codec.urlSafe();
  for (int i = 0; i < 256; i++) {
    check(codec, [i]);
  }
}
