Skip to content
Snippets Groups Projects
Commit ce217fff authored by Daniel Ehrenberg's avatar Daniel Ehrenberg Committed by Rick Waldron
Browse files

Improve invalid \c escape tests

parent 2086f66c
No related branches found
No related tags found
No related merge requests found
......@@ -5,19 +5,54 @@
info: "CharacterEscape :: c ControlLetter"
es5id: 15.10.2.10_A2.1_T3
es6id: B.1.4
description: "ControlLetter :: RUSSIAN ALPHABET is incorrect"
description: >
"ControlLetter :: RUSSIAN ALPHABET is incorrect"
Instead, fall back to semantics to match literal "\\c"
---*/
//CHECK#0410-042F
for (var alpha = 0x0410; alpha <= 0x042F; alpha++) {
var str = String.fromCharCode(alpha % 32);
var arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str);
assert.sameValue(arr, null, 'RUSSIAN CAPITAL ALPHABET: ' + alpha);
function* invalidControls() {
// Check upper case Cyrillic
for (var alpha = 0x0410; alpha <= 0x042F; alpha++) {
yield String.fromCharCode(alpha);
}
// Check lower case Cyrillic
for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
yield String.fromCharCode(alpha);
}
// Check ASCII characters which are not in the extended range or syntax
// characters
for (alpha = 0x00; alpha <= 0x7F; alpha++) {
let letter = String.fromCharCode(alpha);
if (!letter.match(/[0-9A-Za-z_\$(|)\[\]\/\\^]/)) {
yield letter;
}
}
// Check for end of string
yield "";
}
//CHECK#0430-044F
for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
str = String.fromCharCode(alpha % 32);
arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str);
assert.sameValue(arr, null, 'russian small alphabet: ' + alpha);
for (let letter of invalidControls()) {
var source = "\\c" + letter;
var re = new RegExp(source);
if (letter.length > 0) {
var char = letter.charCodeAt(0);
var str = String.fromCharCode(char % 32);
var arr = re.exec(str);
if (arr !== null) {
$ERROR(`Character ${letter} unreasonably wrapped around as a control character`);
}
}
arr = re.exec(source.substring(1))
if (arr !== null) {
$ERROR(`invalid \\c escape matched c rather than \\c when followed by ${letter}`);
}
arr = re.exec(source)
if (arr === null) {
$ERROR(`invalid \\c escape failed to match \\c when followed by ${letter}`);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment