| // 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. |
| |
| // @dart = 2.9 |
| |
| /// @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.isTrue(null != 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.isTrue(null != re.firstMatch(str)); |
| } |
| } |