describe(‘jasmine.Reporter’, function() {

var env;

beforeEach(function() {
  env = new jasmine.Env();
  env.updateInterval = 0;
});

it('should get called from the test runner', function() {
  env.describe('Suite for JSON Reporter with Callbacks', function () {
    env.it('should be a test', function() {
      this.runs(function () {
        this.expect(true).toEqual(true);
      });
    });
    env.it('should be a failing test', function() {
      this.runs(function () {
        this.expect(false).toEqual(true);
      });
    });
  });
  env.describe('Suite for JSON Reporter with Callbacks 2', function () {
    env.it('should be a test', function() {
      this.runs(function () {
        this.expect(true).toEqual(true);
      });
    });

  });

  var foo = 0;
  var bar = 0;
  var baz = 0;

  env.addReporter({
    reportSpecResults: function() {
      foo++;
    },
    reportSuiteResults: function() {
      bar++;
    },
    reportRunnerResults: function() {
      baz++;
    }
  });

  var runner = env.currentRunner();
  runner.execute();

  expect(foo).toEqual(3); // 'foo was expected to be 3, was ' + foo);
  expect(bar).toEqual(2); // 'bar was expected to be 2, was ' + bar);
  expect(baz).toEqual(1); // 'baz was expected to be 1, was ' + baz);
});

});