tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

S15.1.3.4_A2.1_T1.js (2101B)


      1 // Copyright 2009 the Sputnik authors.  All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 info: |
      6    If string.charAt(k) in [0x0000 - 0x007F]\[uriUnescaped], return 1 octet
      7    (00000000 0zzzzzzz -> 0zzzzzzz)
      8 esid: sec-encodeuricomponent-uricomponent
      9 description: Complex tests, use RFC 3629
     10 includes: [decimalToHexString.js]
     11 ---*/
     12 
     13 var uriUnescaped = ["-", "_", ".", "!", "~", "*", "'", "(", ")", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
     14 var errorCount = 0;
     15 var count = 0;
     16 var indexP;
     17 var indexO = 0;
     18 
     19 l:
     20  for (var index = 0x0000; index <= 0x007F; index++) {
     21    count++;
     22    var str = String.fromCharCode(index);
     23    for (var indexC = 0; indexC < uriUnescaped.length; indexC++) {
     24      if (uriUnescaped[indexC] === str) continue l;
     25    }
     26    if (encodeURIComponent(str).toUpperCase() === decimalToPercentHexString(index)) continue l;
     27 
     28    if (indexO === 0) {
     29      indexO = index;
     30    } else {
     31      if ((index - indexP) !== 1) {
     32        if ((indexP - indexO) !== 0) {
     33          var hexP = decimalToHexString(indexP);
     34          var hexO = decimalToHexString(indexO);
     35          throw new Test262Error('#' + hexO + '-' + hexP + ' ');
     36        }
     37        else {
     38          var hexP = decimalToHexString(indexP);
     39          throw new Test262Error('#' + hexP + ' ');
     40        }
     41        indexO = index;
     42      }
     43    }
     44    indexP = index;
     45    errorCount++;
     46  }
     47 
     48 if (errorCount > 0) {
     49  if ((indexP - indexO) !== 0) {
     50    var hexP = decimalToHexString(indexP);
     51    var hexO = decimalToHexString(indexO);
     52    throw new Test262Error('#' + hexO + '-' + hexP + ' ');
     53  } else {
     54    var hexP = decimalToHexString(indexP);
     55    throw new Test262Error('#' + hexP + ' ');
     56  }
     57  throw new Test262Error('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
     58 }
     59 
     60 reportCompare(0, 0);