Home | History | Annotate | Download | only in LexicalConventions
      1 /* The contents of this file are subject to the Netscape Public
      2  * License Version 1.1 (the "License"); you may not use this file
      3  * except in compliance with the License. You may obtain a copy of
      4  * the License at http://www.mozilla.org/NPL/
      5  *
      6  * Software distributed under the License is distributed on an "AS
      7  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
      8  * implied. See the License for the specific language governing
      9  * rights and limitations under the License.
     10  *
     11  * The Original Code is Mozilla Communicator client code, released March
     12  * 31, 1998.
     13  *
     14  * The Initial Developer of the Original Code is Netscape Communications
     15  * Corporation. Portions created by Netscape are
     16  * Copyright (C) 1998 Netscape Communications Corporation. All
     17  * Rights Reserved.
     18  *
     19  * Contributor(s):
     20  *
     21  */
     22 /**
     23     File Name:          7.6.js
     24     ECMA Section:       Punctuators
     25     Description:
     26 
     27     This tests verifies that all ECMA punctutors are recognized as a
     28     token separator, but does not attempt to verify the functionality
     29     of any punctuator.
     30 
     31     Author:             christine (at) netscape.com
     32     Date:               12 november 1997
     33 */
     34 
     35     var SECTION = "7.6";
     36     var VERSION = "ECMA_1";
     37     startTest();
     38     var TITLE   = "Punctuators";
     39 
     40     writeHeaderToLog( SECTION + " "+ TITLE);
     41 
     42     var testcases = new Array();
     43 
     44     // ==
     45     testcases[tc++] = new TestCase( SECTION,
     46                                     "var c,d;c==d",
     47                                     true,
     48                                     eval("var c,d;c==d") );
     49 
     50     // =
     51 
     52     testcases[tc++] = new TestCase( SECTION,
     53                                     "var a=true;a",
     54                                     true,
     55                                     eval("var a=true;a") );
     56 
     57     // >
     58     testcases[tc++] = new TestCase( SECTION,
     59                                     "var a=true,b=false;a>b",
     60                                     true,
     61                                     eval("var a=true,b=false;a>b") );
     62 
     63     // <
     64     testcases[tc++] = new TestCase( SECTION,
     65                                     "var a=true,b=false;a<b",
     66                                     false,
     67                                     eval("var a=true,b=false;a<b") );
     68 
     69     // <=
     70     testcases[tc++] = new TestCase( SECTION,
     71                                     "var a=0xFFFF,b=0X0FFF;a<=b",
     72                                     false,
     73                                     eval("var a=0xFFFF,b=0X0FFF;a<=b") );
     74 
     75     // >=
     76     testcases[tc++] = new TestCase( SECTION,
     77                                     "var a=0xFFFF,b=0XFFFE;a>=b",
     78                                     true,
     79                                     eval("var a=0xFFFF,b=0XFFFE;a>=b") );
     80 
     81     // !=
     82     testcases[tc++] = new TestCase( SECTION,
     83                                     "var a=true,b=false;a!=b",
     84                                     true,
     85                                     eval("var a=true,b=false;a!=b") );
     86 
     87     testcases[tc++] = new TestCase( SECTION,
     88                                     "var a=false,b=false;a!=b",
     89                                     false,
     90                                     eval("var a=false,b=false;a!=b") );
     91     // ,
     92         testcases[tc++] = new TestCase( SECTION,
     93                                     "var a=true,b=false;a,b",
     94                                     false,
     95                                     eval("var a=true,b=false;a,b") );
     96     // !
     97         testcases[tc++] = new TestCase( SECTION,
     98                                     "var a=true,b=false;!a",
     99                                     false,
    100                                     eval("var a=true,b=false;!a") );
    101 
    102     // ~
    103         testcases[tc++] = new TestCase( SECTION,
    104                                     "var a=true;~a",
    105                                     -2,
    106                                     eval("var a=true;~a") );
    107     // ?
    108         testcases[tc++] = new TestCase( SECTION,
    109                                     "var a=true; (a ? 'PASS' : '')",
    110                                     "PASS",
    111                                     eval("var a=true; (a ? 'PASS' : '')") );
    112 
    113     // :
    114 
    115         testcases[tc++] = new TestCase( SECTION,
    116                                     "var a=false; (a ? 'FAIL' : 'PASS')",
    117                                     "PASS",
    118                                     eval("var a=false; (a ? 'FAIL' : 'PASS')") );
    119     // .
    120 
    121         testcases[tc++] = new TestCase( SECTION,
    122                                         "var a=Number;a.NaN",
    123                                         NaN,
    124                                         eval("var a=Number;a.NaN") );
    125 
    126     // &&
    127         testcases[tc++] = new TestCase( SECTION,
    128                                         "var a=true,b=true;if(a&&b)'PASS';else'FAIL'",
    129                                         "PASS",
    130                                         eval("var a=true,b=true;if(a&&b)'PASS';else'FAIL'") );
    131 
    132     // ||
    133         testcases[tc++] = new TestCase( SECTION,
    134                                         "var a=false,b=false;if(a||b)'FAIL';else'PASS'",
    135                                         "PASS",
    136                                         eval("var a=false,b=false;if(a||b)'FAIL';else'PASS'") );
    137     // ++
    138         testcases[tc++] = new TestCase( SECTION,
    139                                         "var a=false,b=false;++a",
    140                                         1,
    141                                         eval("var a=false,b=false;++a") );
    142     // --
    143         testcases[tc++] = new TestCase( SECTION,
    144                                         "var a=true,b=false--a",
    145                                         0,
    146                                         eval("var a=true,b=false;--a") );
    147     // +
    148 
    149         testcases[tc++] = new TestCase( SECTION,
    150                                         "var a=true,b=true;a+b",
    151                                         2,
    152                                         eval("var a=true,b=true;a+b") );
    153     // -
    154         testcases[tc++] = new TestCase( SECTION,
    155                                         "var a=true,b=true;a-b",
    156                                         0,
    157                                         eval("var a=true,b=true;a-b") );
    158     // *
    159         testcases[tc++] = new TestCase( SECTION,
    160                                         "var a=true,b=true;a*b",
    161                                         1,
    162                                         eval("var a=true,b=true;a*b") );
    163     // /
    164         testcases[tc++] = new TestCase( SECTION,
    165                                         "var a=true,b=true;a/b",
    166                                         1,
    167                                         eval("var a=true,b=true;a/b") );
    168     // &
    169         testcases[tc++] = new TestCase( SECTION,
    170                                         "var a=3,b=2;a&b",
    171                                         2,
    172                                         eval("var a=3,b=2;a&b") );
    173     // |
    174         testcases[tc++] = new TestCase( SECTION,
    175                                         "var a=4,b=3;a|b",
    176                                         7,
    177                                         eval("var a=4,b=3;a|b") );
    178 
    179     // |
    180         testcases[tc++] = new TestCase( SECTION,
    181                                         "var a=4,b=3;a^b",
    182                                         7,
    183                                         eval("var a=4,b=3;a^b") );
    184 
    185     // %
    186         testcases[tc++] = new TestCase( SECTION,
    187                                         "var a=4,b=3;a|b",
    188                                         1,
    189                                         eval("var a=4,b=3;a%b") );
    190 
    191     // <<
    192         testcases[tc++] = new TestCase( SECTION,
    193                                         "var a=4,b=3;a<<b",
    194                                         32,
    195                                         eval("var a=4,b=3;a<<b") );
    196 
    197     //  >>
    198         testcases[tc++] = new TestCase( SECTION,
    199                                         "var a=4,b=1;a>>b",
    200                                         2,
    201                                         eval("var a=4,b=1;a>>b") );
    202 
    203     //  >>>
    204         testcases[tc++] = new TestCase( SECTION,
    205                                         "var a=1,b=1;a>>>b",
    206                                         0,
    207                                         eval("var a=1,b=1;a>>>b") );
    208     //  +=
    209         testcases[tc++] = new TestCase( SECTION,
    210                                         "var a=4,b=3;a+=b;a",
    211                                         7,
    212                                         eval("var a=4,b=3;a+=b;a") );
    213 
    214     //  -=
    215         testcases[tc++] = new TestCase( SECTION,
    216                                         "var a=4,b=3;a-=b;a",
    217                                         1,
    218                                         eval("var a=4,b=3;a-=b;a") );
    219     //  *=
    220         testcases[tc++] = new TestCase( SECTION,
    221                                         "var a=4,b=3;a*=b;a",
    222                                         12,
    223                                         eval("var a=4,b=3;a*=b;a") );
    224     //  +=
    225         testcases[tc++] = new TestCase( SECTION,
    226                                         "var a=4,b=3;a+=b;a",
    227                                         7,
    228                                         eval("var a=4,b=3;a+=b;a") );
    229     //  /=
    230         testcases[tc++] = new TestCase( SECTION,
    231                                         "var a=12,b=3;a/=b;a",
    232                                         4,
    233                                         eval("var a=12,b=3;a/=b;a") );
    234 
    235     //  &=
    236         testcases[tc++] = new TestCase( SECTION,
    237                                         "var a=4,b=5;a&=b;a",
    238                                         4,
    239                                         eval("var a=4,b=5;a&=b;a") );
    240 
    241     // |=
    242         testcases[tc++] = new TestCase( SECTION,
    243                                         "var a=4,b=5;a&=b;a",
    244                                         5,
    245                                         eval("var a=4,b=5;a|=b;a") );
    246     //  ^=
    247         testcases[tc++] = new TestCase( SECTION,
    248                                         "var a=4,b=5;a^=b;a",
    249                                         1,
    250                                         eval("var a=4,b=5;a^=b;a") );
    251     // %=
    252         testcases[tc++] = new TestCase( SECTION,
    253                                         "var a=12,b=5;a%=b;a",
    254                                         2,
    255                                         eval("var a=12,b=5;a%=b;a") );
    256     // <<=
    257         testcases[tc++] = new TestCase( SECTION,
    258                                         "var a=4,b=3;a<<=b;a",
    259                                         32,
    260                                         eval("var a=4,b=3;a<<=b;a") );
    261 
    262     //  >>
    263         testcases[tc++] = new TestCase( SECTION,
    264                                         "var a=4,b=1;a>>=b;a",
    265                                         2,
    266                                         eval("var a=4,b=1;a>>=b;a") );
    267 
    268     //  >>>
    269         testcases[tc++] = new TestCase( SECTION,
    270                                         "var a=1,b=1;a>>>=b;a",
    271                                         0,
    272                                         eval("var a=1,b=1;a>>>=b;a") );
    273 
    274     // ()
    275         testcases[tc++] = new TestCase( SECTION,
    276                                         "var a=4,b=3;(a)",
    277                                         4,
    278                                         eval("var a=4,b=3;(a)") );
    279     // {}
    280         testcases[tc++] = new TestCase( SECTION,
    281                                         "var a=4,b=3;{b}",
    282                                         3,
    283                                         eval("var a=4,b=3;{b}") );
    284 
    285     // []
    286         testcases[tc++] = new TestCase( SECTION,
    287                                         "var a=new Array('hi');a[0]",
    288                                         "hi",
    289                                         eval("var a=new Array('hi');a[0]") );
    290     // []
    291         testcases[tc++] = new TestCase( SECTION,
    292                                         ";",
    293                                         void 0,
    294                                         eval(";") );
    295     test();
    296 
    297 function test() {
    298     for ( tc=0; tc < testcases.length; tc++ ) {
    299         testcases[tc].passed = writeTestCaseResult(
    300                             testcases[tc].expect,
    301                             testcases[tc].actual,
    302                             testcases[tc].description +" = "+
    303                             testcases[tc].actual );
    304 
    305         testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value ";
    306     }
    307     stopTest();
    308     return ( testcases );
    309 }
    310