js/src/tests/js1_7/extensions/regress-363040-01.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 -*- */
     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/. */
     6 //-----------------------------------------------------------------------------
     7 var BUGNUMBER = 363040;
     8 var summary = 'Array.prototype.reduce application in continued fraction';
     9 var actual = '';
    10 var expect = '';
    13 //-----------------------------------------------------------------------------
    14 test();
    15 //-----------------------------------------------------------------------------
    17 function test()
    18 {
    19   enterFunc ('test');
    20   printBugNumber(BUGNUMBER);
    21   printStatus (summary);
    23 // Print x as a continued fraction in compact abbreviated notation and return
    24 // the convergent [n, d] such that x - (n / d) <= epsilon.
    25   function contfrac(x, epsilon) {
    26     let i = Math.floor(x);
    27     let a = [i];
    28     x = x - i;
    29     let maxerr = x;
    30     while (maxerr > epsilon) {
    31       x = 1 / x;
    32       i = Math.floor(x);
    33       a.push(i);
    34       x = x - i;
    35       maxerr = x * maxerr / i;
    36     }
    37     print(uneval(a));
    38     a.push([1, 0]);
    39     a.reverse();
    40     return a.reduce(function (x, y) {return [x[0] * y + x[1], x[0]];});
    41   }
    43   if (!Array.prototype.reduce)
    44   {
    45     print('Test skipped. Array.prototype.reduce not implemented');
    46   }
    47   else
    48   {
    49 // Show contfrac in action.
    50     for each (num in [Math.PI, Math.sqrt(2), 1 / (Math.sqrt(Math.E) - 1)]) {
    51       print('Continued fractions for', num);
    52       for each (eps in [1e-2, 1e-3, 1e-5, 1e-7, 1e-10]) {
    53         let frac = contfrac(num, eps);
    54         let est = frac[0] / frac[1];
    55         let err = num - est;
    56         print(uneval(frac), est, err);
    57       }
    58       print();
    59     }
    60   }
    62   reportCompare(expect, actual, summary);
    64   exitFunc ('test');
    65 }

mercurial