tor-browser

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

S15.1.3.3_A2.1_T1.js (2312B)


      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]\[uriReserved, uriUnescaped, #],
      7    return 1 octet (00000000 0zzzzzzz -> 0zzzzzzz)
      8 esid: sec-encodeuri-uri
      9 description: Complex tests, use RFC 3629
     10 includes: [decimalToHexString.js]
     11 ---*/
     12 
     13 var uriReserved = [";", "/", "?", ":", "@", "&", "=", "+", "$", ","];
     14 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"];
     15 var errorCount = 0;
     16 var count = 0;
     17 var indexP;
     18 var indexO = 0;
     19 
     20 l:
     21  for (var index = 0x0000; index <= 0x007F; index++) {
     22    count++;
     23    var str = String.fromCharCode(index);
     24    for (var indexC = 0; indexC < uriReserved.length; indexC++) {
     25      if (uriReserved[indexC] === str) continue l;
     26    }
     27    for (indexC = 0; indexC < uriUnescaped.length; indexC++) {
     28      if (uriUnescaped[indexC] === str) continue l;
     29    }
     30    if ("#" === str) continue l;
     31    if (encodeURI(str).toUpperCase() === decimalToPercentHexString(index)) continue l;
     32 
     33    if (indexO === 0) {
     34      indexO = index;
     35    } else {
     36      if ((index - indexP) !== 1) {
     37        if ((indexP - indexO) !== 0) {
     38          var hexP = decimalToHexString(indexP);
     39          var hexO = decimalToHexString(indexO);
     40          throw new Test262Error('#' + hexO + '-' + hexP + ' ');
     41        }
     42        else {
     43          var hexP = decimalToHexString(indexP);
     44          throw new Test262Error('#' + hexP + ' ');
     45        }
     46        indexO = index;
     47      }
     48    }
     49    indexP = index;
     50    errorCount++;
     51  }
     52 
     53 if (errorCount > 0) {
     54  if ((indexP - indexO) !== 0) {
     55    var hexP = decimalToHexString(indexP);
     56    var hexO = decimalToHexString(indexO);
     57    throw new Test262Error('#' + hexO + '-' + hexP + ' ');
     58  } else {
     59    var hexP = decimalToHexString(indexP);
     60    throw new Test262Error('#' + hexP + ' ');
     61  }
     62  throw new Test262Error('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
     63 }
     64 
     65 reportCompare(0, 0);