js/src/tests/js1_7/extensions/regress-363040-02.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);
    24 // Print x as a continued fraction in compact abbreviated notation and return
    25 // the convergent [n, d] such that x - (n / d) <= epsilon.
    26   function contfrac(x, epsilon) {
    27     let i = Math.floor(x);
    28     let a = [i];
    29     x = x - i;
    30     let maxerr = x;
    31     while (maxerr > epsilon) {
    32       x = 1 / x;
    33       i = Math.floor(x);
    34       a.push(i);
    35       x = x - i;
    36       maxerr = x * maxerr / i;
    37     }
    38     print(uneval(a));
    39     return a.reduceRight(function (x, y) {return [x[0] * y + x[1], x[0]];}, [1, 0]);
    40   }
    42   if (!Array.prototype.reduceRight)
    43   {
    44     print('Test skipped. Array.prototype.reduceRight not implemented');
    45   }
    46   else
    47   {
    48 // Show contfrac in action on some interesting numbers.
    49     for each (num in [Math.PI, Math.sqrt(2), 1 / (Math.sqrt(Math.E) - 1)]) {
    50       print('Continued fractions for', num);
    51       for each (eps in [1e-2, 1e-3, 1e-5, 1e-7, 1e-10]) {
    52         let frac = contfrac(num, eps);
    53         let est = frac[0] / frac[1];
    54         let err = num - est;
    55         print(uneval(frac), est, err);
    56       }
    57       print();
    58     }
    59   }
    61   reportCompare(expect, actual, summary);
    63   exitFunc ('test');
    64 }

mercurial