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

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/tests/ecma_5/strict/11.1.5.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,171 @@
     1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     1.5 +
     1.6 +/*
     1.7 + * Any copyright is dedicated to the Public Domain.
     1.8 + * http://creativecommons.org/licenses/publicdomain/
     1.9 + */
    1.10 +
    1.11 +/* Simple identifier labels. */
    1.12 +assertEq(testLenientAndStrict('({x:1, x:1})',
    1.13 +                              parsesSuccessfully,
    1.14 +                              parseRaisesException(SyntaxError)),
    1.15 +         true);
    1.16 +
    1.17 +assertEq(testLenientAndStrict('({x:1, y:1})',
    1.18 +                              parsesSuccessfully,
    1.19 +                              parsesSuccessfully),
    1.20 +         true);
    1.21 +
    1.22 +assertEq(testLenientAndStrict('({x:1, y:1, x:1})',
    1.23 +                              parsesSuccessfully,
    1.24 +                              parseRaisesException(SyntaxError)),
    1.25 +         true);
    1.26 +
    1.27 +/* Property names can be written as strings, too. */
    1.28 +assertEq(testLenientAndStrict('({x:1,   "x":1})',
    1.29 +                              parsesSuccessfully,
    1.30 +                              parseRaisesException(SyntaxError)),
    1.31 +         true);
    1.32 +
    1.33 +assertEq(testLenientAndStrict('({"x":1, x:1})',
    1.34 +                              parsesSuccessfully,
    1.35 +                              parseRaisesException(SyntaxError)),
    1.36 +         true);
    1.37 +
    1.38 +assertEq(testLenientAndStrict('({"x":1, "x":1})',
    1.39 +                              parsesSuccessfully,
    1.40 +                              parseRaisesException(SyntaxError)),
    1.41 +         true);
    1.42 +
    1.43 +/* Numeric property names. */
    1.44 +assertEq(testLenientAndStrict('({1.5:1, 1.5:1})',
    1.45 +                              parsesSuccessfully,
    1.46 +                              parseRaisesException(SyntaxError)),
    1.47 +         true);
    1.48 +
    1.49 +assertEq(testLenientAndStrict('({1.5:1, 15e-1:1})',
    1.50 +                              parsesSuccessfully,
    1.51 +                              parseRaisesException(SyntaxError)),
    1.52 +         true);
    1.53 +
    1.54 +assertEq(testLenientAndStrict('({6.02214179e23:1, 6.02214179e23:1})',
    1.55 +                              parsesSuccessfully,
    1.56 +                              parseRaisesException(SyntaxError)),
    1.57 +         true);
    1.58 +
    1.59 +assertEq(testLenientAndStrict('({6.02214179e23:1, 3.1415926535:1})',
    1.60 +                              parsesSuccessfully,
    1.61 +                              parsesSuccessfully),
    1.62 +         true);
    1.63 +
    1.64 +assertEq(testLenientAndStrict('({ 1: 1, "1": 2 })',
    1.65 +                              parsesSuccessfully,
    1.66 +                              parseRaisesException(SyntaxError)),
    1.67 +         true);
    1.68 +
    1.69 +assertEq(testLenientAndStrict('({ "1": 1, 1: 2 })',
    1.70 +                              parsesSuccessfully,
    1.71 +                              parseRaisesException(SyntaxError)),
    1.72 +         true);
    1.73 +
    1.74 +assertEq(testLenientAndStrict('({ 2.5: 1, "2.5": 2 })',
    1.75 +                              parsesSuccessfully,
    1.76 +                              parseRaisesException(SyntaxError)),
    1.77 +         true);
    1.78 +
    1.79 +assertEq(testLenientAndStrict('({ "2.5": 1, 2.5: 2 })',
    1.80 +                              parsesSuccessfully,
    1.81 +                              parseRaisesException(SyntaxError)),
    1.82 +         true);
    1.83 +
    1.84 +/* Many properties, to exercise JSAtomList's hash-table variant. */
    1.85 +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})',
    1.86 +                              parsesSuccessfully,
    1.87 +                              parsesSuccessfully),
    1.88 +         true);
    1.89 +
    1.90 +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})',
    1.91 +                              parsesSuccessfully,
    1.92 +                              parseRaisesException(SyntaxError)),
    1.93 +         true);
    1.94 +
    1.95 +/*
    1.96 + * Getters, setters, and value properties should conflict only when
    1.97 + * appropriate.
    1.98 + */
    1.99 +assertEq(testLenientAndStrict('({get x() {}, x:1})',
   1.100 +                              parseRaisesException(SyntaxError),
   1.101 +                              parseRaisesException(SyntaxError)),
   1.102 +         true);
   1.103 +
   1.104 +assertEq(testLenientAndStrict('({x:1, get x() {}})',
   1.105 +                              parseRaisesException(SyntaxError),
   1.106 +                              parseRaisesException(SyntaxError)),
   1.107 +         true);
   1.108 +
   1.109 +assertEq(testLenientAndStrict('({set x(q) {}, x:1})',
   1.110 +                              parseRaisesException(SyntaxError),
   1.111 +                              parseRaisesException(SyntaxError)),
   1.112 +         true);
   1.113 +
   1.114 +assertEq(testLenientAndStrict('({x:1, set x(q) {}})',
   1.115 +                              parseRaisesException(SyntaxError),
   1.116 +                              parseRaisesException(SyntaxError)),
   1.117 +         true);
   1.118 +
   1.119 +assertEq(testLenientAndStrict('({1:1, set 1(q) {}})',
   1.120 +                              parseRaisesException(SyntaxError),
   1.121 +                              parseRaisesException(SyntaxError)),
   1.122 +         true);
   1.123 +
   1.124 +assertEq(testLenientAndStrict('({set 1(q) {}, 1:1})',
   1.125 +                              parseRaisesException(SyntaxError),
   1.126 +                              parseRaisesException(SyntaxError)),
   1.127 +         true);
   1.128 +
   1.129 +assertEq(testLenientAndStrict('({"1":1, set 1(q) {}})',
   1.130 +                              parseRaisesException(SyntaxError),
   1.131 +                              parseRaisesException(SyntaxError)),
   1.132 +         true);
   1.133 +
   1.134 +assertEq(testLenientAndStrict('({set 1(q) {}, "1":1})',
   1.135 +                              parseRaisesException(SyntaxError),
   1.136 +                              parseRaisesException(SyntaxError)),
   1.137 +         true);
   1.138 +
   1.139 +assertEq(testLenientAndStrict('({get x() {}, set x(q) {}})',
   1.140 +                              parsesSuccessfully,
   1.141 +                              parsesSuccessfully),
   1.142 +         true);
   1.143 +
   1.144 +assertEq(testLenientAndStrict('({set x(q) {}, get x() {}})',
   1.145 +                              parsesSuccessfully,
   1.146 +                              parsesSuccessfully),
   1.147 +         true);
   1.148 +
   1.149 +assertEq(testLenientAndStrict('({get x() {}, set x(q) {}, x:1})',
   1.150 +                              parseRaisesException(SyntaxError),
   1.151 +                              parseRaisesException(SyntaxError)),
   1.152 +         true);
   1.153 +
   1.154 +assertEq(testLenientAndStrict('({set x(q) {}, get x() {}, x:1})',
   1.155 +                              parseRaisesException(SyntaxError),
   1.156 +                              parseRaisesException(SyntaxError)),
   1.157 +         true);
   1.158 +
   1.159 +assertEq(testLenientAndStrict('({get x() {}, get x() {}})',
   1.160 +                              parseRaisesException(SyntaxError),
   1.161 +                              parseRaisesException(SyntaxError)),
   1.162 +         true);
   1.163 +
   1.164 +assertEq(testLenientAndStrict('({set x() {}, set x() {}})',
   1.165 +                              parseRaisesException(SyntaxError),
   1.166 +                              parseRaisesException(SyntaxError)),
   1.167 +         true);
   1.168 +
   1.169 +assertEq(testLenientAndStrict('({get x() {}, set x(q) {}, y:1})',
   1.170 +                              parsesSuccessfully,
   1.171 +                              parsesSuccessfully),
   1.172 +         true);
   1.173 +
   1.174 +reportCompare(true, true);

mercurial