// 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 String encodeFull(String uri)
/// Encode the string uri using percent-encoding to make it safe for literal
/// use as a full URI.
/// All characters except uppercase and lowercase letters, digits
/// and the characters !$&'()*+,-./:;=?@_~ are percent-encoded.
/// @description Checks that basic and extended unicode characters are encoded
/// @author ilya

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

encodeOctet(int x) =>
  (x < 0x10 ? '%0${x.toRadixString(16)}' : '%${x.toRadixString(16)}')
  .toUpperCase();

manuallyEncodeFull(String s) => s.runes
  .map((x) =>
      utf8.encode(new String.fromCharCode(x)).map(encodeOctet).join(''))
  .join('');

main() {
  var x = '\u1111\u2222\u3333\u{10000}\u{10001}';
  Expect.equals(manuallyEncodeFull(x), Uri.encodeFull(x));
}
