2011-09-07 08:35:18 +02:00
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
2014-07-22 01:09:02 +02:00
/ * - - -
2018-01-05 18:26:51 +01:00
info : |
2014-07-22 01:09:02 +02:00
If B = 11110 xxx ( n = 4 ) and ( string . charAt ( k + 4 ) and
string . charAt ( k + 5 ) ) or ( string . charAt ( k + 7 ) and
string . charAt ( k + 8 ) ) or ( string . charAt ( k + 10 ) and
string . charAt ( k + 11 ) ) do not represent hexadecimal digits , throw URIError
2017-06-29 21:49:38 +02:00
esid : sec - decodeuri - encodeduri
2014-07-22 01:09:02 +02:00
description : >
Complex tests , string . charAt ( k + 7 ) and string . charAt ( k + 7 ) do
not represent hexadecimal digits
-- - * /
2011-09-07 08:35:18 +02:00
//CHECK
var result = true ;
2018-02-15 21:50:18 +01:00
var interval = [
2018-07-08 20:32:34 +02:00
[ 0x00 , 0x2F ] ,
[ 0x3A , 0x40 ] ,
2018-02-15 21:50:18 +01:00
[ 0x47 , 0x60 ] ,
[ 0x67 , 0xFFFF ]
] ;
2011-09-07 08:35:18 +02:00
for ( var indexI = 0 ; indexI < interval . length ; indexI ++ ) {
for ( var indexJ = interval [ indexI ] [ 0 ] ; indexJ <= interval [ indexI ] [ 1 ] ; indexJ ++ ) {
try {
2017-11-27 18:28:17 +01:00
decodeURI ( "%F0" + "%A0%" + String . fromCharCode ( indexJ , indexJ ) + "%A0" ) ;
2017-06-29 21:49:49 +02:00
result = false ;
} catch ( e ) {
2011-09-07 08:35:18 +02:00
if ( ( e instanceof URIError ) !== true ) {
2017-06-29 21:49:49 +02:00
result = false ;
2011-09-07 08:35:18 +02:00
}
2017-06-29 21:49:49 +02:00
}
}
}
2011-09-07 08:35:18 +02:00
2017-06-29 21:49:49 +02:00
if ( result !== true ) {
2021-07-21 21:37:52 +02:00
throw new Test262Error ( '#1: If B = 11110xxx (n = 4) and (string.charAt(k + 7) and string.charAt(k + 8)) do not represent hexadecimal digits, throw URIError' ) ;
2011-09-07 08:35:18 +02:00
}