blob: 32f3173be0c2fc1161fbc8a497c4ddca54f8c81a [file] [log] [blame]
// 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 The production CharacterEscape :: c ControlLetter evaluates as
* follows:
* <ol>
* <li>Let ch be the character represented by ControlLetter.</li>
* <li>Let i be ch's code unit value.</li>
* <li>Let j be the remainder of dividing i by 32.</li>
* <li>Return the character whose code unit value is j.</li>
* </ol>
* <br/>ControlLetter :: one of
* <ul>
* <li>a-z</li>
* <li>A-Z</li>
* </ul>
* @description Checks that patterns with supported control letters evaluate to
* the specified characters.
* @3rdparty sputnik-v1:S15.10.2.10_A2.1_T1.js, S15.10.2.10_A2.1_T2.js
* @author rodionov
*/
import "../../../../Utils/expect.dart";
main() {
// ctrl+[A-Z]
for(var alpha = 0x0041; alpha <= 0x005A; alpha++) {
RegExp re = new RegExp("\\c${new String.fromCharCodes([alpha])}");
String str = new String.fromCharCodes([alpha % 32]);
Expect.isNotNull(re.firstMatch(str));
}
// ctrl+[a-z]
for(var alpha = 0x0061; alpha <= 0x007A; alpha++) {
RegExp re = new RegExp("\\c${new String.fromCharCodes([alpha])}");
String str = new String.fromCharCodes([alpha % 32]);
Expect.isNotNull(re.firstMatch(str));
}
}