js/src/tests/ecma_5/strict/11.1.5.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     3 /*
     4  * Any copyright is dedicated to the Public Domain.
     5  * http://creativecommons.org/licenses/publicdomain/
     6  */
     8 /* Simple identifier labels. */
     9 assertEq(testLenientAndStrict('({x:1, x:1})',
    10                               parsesSuccessfully,
    11                               parseRaisesException(SyntaxError)),
    12          true);
    14 assertEq(testLenientAndStrict('({x:1, y:1})',
    15                               parsesSuccessfully,
    16                               parsesSuccessfully),
    17          true);
    19 assertEq(testLenientAndStrict('({x:1, y:1, x:1})',
    20                               parsesSuccessfully,
    21                               parseRaisesException(SyntaxError)),
    22          true);
    24 /* Property names can be written as strings, too. */
    25 assertEq(testLenientAndStrict('({x:1,   "x":1})',
    26                               parsesSuccessfully,
    27                               parseRaisesException(SyntaxError)),
    28          true);
    30 assertEq(testLenientAndStrict('({"x":1, x:1})',
    31                               parsesSuccessfully,
    32                               parseRaisesException(SyntaxError)),
    33          true);
    35 assertEq(testLenientAndStrict('({"x":1, "x":1})',
    36                               parsesSuccessfully,
    37                               parseRaisesException(SyntaxError)),
    38          true);
    40 /* Numeric property names. */
    41 assertEq(testLenientAndStrict('({1.5:1, 1.5:1})',
    42                               parsesSuccessfully,
    43                               parseRaisesException(SyntaxError)),
    44          true);
    46 assertEq(testLenientAndStrict('({1.5:1, 15e-1:1})',
    47                               parsesSuccessfully,
    48                               parseRaisesException(SyntaxError)),
    49          true);
    51 assertEq(testLenientAndStrict('({6.02214179e23:1, 6.02214179e23:1})',
    52                               parsesSuccessfully,
    53                               parseRaisesException(SyntaxError)),
    54          true);
    56 assertEq(testLenientAndStrict('({6.02214179e23:1, 3.1415926535:1})',
    57                               parsesSuccessfully,
    58                               parsesSuccessfully),
    59          true);
    61 assertEq(testLenientAndStrict('({ 1: 1, "1": 2 })',
    62                               parsesSuccessfully,
    63                               parseRaisesException(SyntaxError)),
    64          true);
    66 assertEq(testLenientAndStrict('({ "1": 1, 1: 2 })',
    67                               parsesSuccessfully,
    68                               parseRaisesException(SyntaxError)),
    69          true);
    71 assertEq(testLenientAndStrict('({ 2.5: 1, "2.5": 2 })',
    72                               parsesSuccessfully,
    73                               parseRaisesException(SyntaxError)),
    74          true);
    76 assertEq(testLenientAndStrict('({ "2.5": 1, 2.5: 2 })',
    77                               parsesSuccessfully,
    78                               parseRaisesException(SyntaxError)),
    79          true);
    81 /* Many properties, to exercise JSAtomList's hash-table variant. */
    82 assertEq(testLenientAndStrict('({a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1, i:1, j:1, k:1, l:1, m:1, n:1, o:1, p:1, q:1, r:1, s:1, t:1, u:1, v:1, w:1, x:1, y:1, z:1})',
    83                               parsesSuccessfully,
    84                               parsesSuccessfully),
    85          true);
    87 assertEq(testLenientAndStrict('({a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1, i:1, j:1, k:1, l:1, m:1, n:1, o:1, p:1, q:1, r:1, s:1, t:1, u:1, v:1, w:1, x:1, y:1, a:1})',
    88                               parsesSuccessfully,
    89                               parseRaisesException(SyntaxError)),
    90          true);
    92 /*
    93  * Getters, setters, and value properties should conflict only when
    94  * appropriate.
    95  */
    96 assertEq(testLenientAndStrict('({get x() {}, x:1})',
    97                               parseRaisesException(SyntaxError),
    98                               parseRaisesException(SyntaxError)),
    99          true);
   101 assertEq(testLenientAndStrict('({x:1, get x() {}})',
   102                               parseRaisesException(SyntaxError),
   103                               parseRaisesException(SyntaxError)),
   104          true);
   106 assertEq(testLenientAndStrict('({set x(q) {}, x:1})',
   107                               parseRaisesException(SyntaxError),
   108                               parseRaisesException(SyntaxError)),
   109          true);
   111 assertEq(testLenientAndStrict('({x:1, set x(q) {}})',
   112                               parseRaisesException(SyntaxError),
   113                               parseRaisesException(SyntaxError)),
   114          true);
   116 assertEq(testLenientAndStrict('({1:1, set 1(q) {}})',
   117                               parseRaisesException(SyntaxError),
   118                               parseRaisesException(SyntaxError)),
   119          true);
   121 assertEq(testLenientAndStrict('({set 1(q) {}, 1:1})',
   122                               parseRaisesException(SyntaxError),
   123                               parseRaisesException(SyntaxError)),
   124          true);
   126 assertEq(testLenientAndStrict('({"1":1, set 1(q) {}})',
   127                               parseRaisesException(SyntaxError),
   128                               parseRaisesException(SyntaxError)),
   129          true);
   131 assertEq(testLenientAndStrict('({set 1(q) {}, "1":1})',
   132                               parseRaisesException(SyntaxError),
   133                               parseRaisesException(SyntaxError)),
   134          true);
   136 assertEq(testLenientAndStrict('({get x() {}, set x(q) {}})',
   137                               parsesSuccessfully,
   138                               parsesSuccessfully),
   139          true);
   141 assertEq(testLenientAndStrict('({set x(q) {}, get x() {}})',
   142                               parsesSuccessfully,
   143                               parsesSuccessfully),
   144          true);
   146 assertEq(testLenientAndStrict('({get x() {}, set x(q) {}, x:1})',
   147                               parseRaisesException(SyntaxError),
   148                               parseRaisesException(SyntaxError)),
   149          true);
   151 assertEq(testLenientAndStrict('({set x(q) {}, get x() {}, x:1})',
   152                               parseRaisesException(SyntaxError),
   153                               parseRaisesException(SyntaxError)),
   154          true);
   156 assertEq(testLenientAndStrict('({get x() {}, get x() {}})',
   157                               parseRaisesException(SyntaxError),
   158                               parseRaisesException(SyntaxError)),
   159          true);
   161 assertEq(testLenientAndStrict('({set x() {}, set x() {}})',
   162                               parseRaisesException(SyntaxError),
   163                               parseRaisesException(SyntaxError)),
   164          true);
   166 assertEq(testLenientAndStrict('({get x() {}, set x(q) {}, y:1})',
   167                               parsesSuccessfully,
   168                               parsesSuccessfully),
   169          true);
   171 reportCompare(true, true);

mercurial