/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

//-----------------------------------------------------------------------------
var BUGNUMBER     = "(none)";
var summary = "A (slow) generator of pi";
var actual, expect;

printBugNumber(BUGNUMBER);
printStatus(summary);

/**************
 * BEGIN TEST *
 **************/

function pi()
{
  var val = 0;
  var curr = 1;
  var isNeg = false;
  while (true)
  {
    if (isNeg)
      yield val -= 4/curr;
    else
      yield val += 4/curr;
    curr += 2;
    isNeg = !isNeg;
  }
}

var failed = false;
var it = pi();

var vals =
  [4,
   4 - 4/3,
   4 - 4/3 + 4/5,
   4 - 4/3 + 4/5 - 4/7];

try
{
  for (var i = 0, sz = vals.length; i < sz; i++)
    if (it.next() != vals[i])
      throw vals[i];
}
catch (e)
{
  failed = e;
}



expect = false;
actual = failed;

reportCompare(expect, actual, summary);
