// 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 Dart source text is represented as a sequence of Unicode code
/// points.
/// @description Checks that various whitespaces represented in UTF-8 format are
/// recognized as Unicode code points.
/// @author iefremov

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

  List<String> unicode = [
     "\u0009", "\u000a", "\u000b", "\u000c",
     //"\u000d", -- problematic character, converted to 0x0A by dart
     "\u0020", "\u0085", "\u00a0", "\u1680", "\u180e",
     "\u2000", "\u2001", "\u2002", "\u2003", "\u2004",
     "\u2005", "\u2006", "\u2007", "\u2008", "\u2009",
     "\u200a", "\u202f", "\u205f", "\u3000", "\ufeff"
    ];

  List characters = [
    r''':	''', r''':
''', r''':''', r''':''', //r''':
//''',
    r''': ''', r''':''', r''': ''', r''': ''', r''':᠎''',
    r''': ''', r''': ''', r''': ''', r''': ''', r''': ''',
    r''': ''', r''': ''', r''': ''', r''': ''', r''': ''',
    r''': ''', r''': ''', r''': ''', r''':　''', r''':﻿'''
  ];

main() {
  Expect.equals(unicode.length, characters.length);
  for (int k = 0; k < unicode.length; k++) {
    String str1 = unicode[k];
    String str2 = characters[k];
    int code1 = str1.codeUnitAt(0);
    int code2 = str2.codeUnitAt(1);
    Expect.equals(code1, code2, "code at $k");
  }
}
