tor-browser

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

regress-208496-001.js (2392B)


      1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 /*
      7 *
      8 * Date:    05 June 2003
      9 * SUMMARY: Testing |with (f)| inside the definition of |function f()|
     10 *
     11 * See http://bugzilla.mozilla.org/show_bug.cgi?id=208496
     12 *
     13 */
     14 //-----------------------------------------------------------------------------
     15 var UBound = 0;
     16 var BUGNUMBER = 208496;
     17 var summary = 'Testing |with (f)| inside the definition of |function f()|';
     18 var status = '';
     19 var statusitems = [];
     20 var actual = '(TEST FAILURE)';
     21 var actualvalues = [];
     22 var expect= '';
     23 var expectedvalues = [];
     24 
     25 
     26 /*
     27 * GLOBAL SCOPE
     28 */
     29 function f(par)
     30 {
     31  var a = par;
     32 
     33  with(f)
     34  {
     35    var b = par;
     36    actual = b;
     37  }
     38 }
     39 
     40 status = inSection(1);
     41 f('abc'); // this sets |actual|
     42 expect = 'abc';
     43 addThis();
     44 
     45 status = inSection(2);
     46 f(111 + 222); // sets |actual|
     47 expect = 333;
     48 addThis();
     49 
     50 
     51 /*
     52 * EVAL SCOPE
     53 */
     54 var s = '';
     55 s += 'function F(par)';
     56 s += '{';
     57 s += '  var a = par;';
     58 
     59 s += '  with(F)';
     60 s += '  {';
     61 s += '    var b = par;';
     62 s += '    actual = b;';
     63 s += '  }';
     64 s += '}';
     65 
     66 s += 'status = inSection(3);';
     67 s += 'F("abc");'; // sets |actual|
     68 s += 'expect = "abc";';
     69 s += 'addThis();';
     70 
     71 s += 'status = inSection(4);';
     72 s += 'F(111 + 222);'; // sets |actual|
     73 s += 'expect = 333;';
     74 s += 'addThis();';
     75 eval(s);
     76 
     77 
     78 /*
     79 * FUNCTION SCOPE
     80 */
     81 function g(par)
     82 {
     83  // Add outer variables to complicate the scope chain -
     84  var a = '(TEST FAILURE)';
     85  var b = '(TEST FAILURE)';
     86  h(par);
     87 
     88  function h(par)
     89  {
     90    var a = par;
     91 
     92    with(h)
     93    {
     94      var b = par;
     95      actual = b;
     96    }
     97  }
     98 }
     99 
    100 status = inSection(5);
    101 g('abc'); // sets |actual|
    102 expect = 'abc';
    103 addThis();
    104 
    105 status = inSection(6);
    106 g(111 + 222); // sets |actual|
    107 expect = 333;
    108 addThis();
    109 
    110 
    111 
    112 
    113 //-----------------------------------------------------------------------------
    114 test();
    115 //-----------------------------------------------------------------------------
    116 
    117 
    118 
    119 function addThis()
    120 {
    121  statusitems[UBound] = status;
    122  actualvalues[UBound] = actual;
    123  expectedvalues[UBound] = expect;
    124  UBound++;
    125 }
    126 
    127 
    128 function test()
    129 {
    130  printBugNumber(BUGNUMBER);
    131  printStatus(summary);
    132 
    133  for (var i=0; i<UBound; i++)
    134  {
    135    reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
    136  }
    137 }