"use strict";

describe("integer primitives", function () {
  describe("arithmetic", function () {
    it("should add", function () {
      expect(1 + 1, "to be", 2);
      expect(2 + 2, "to be", 4);
    });

    it("should subtract", function () {
      expect(1 - 1, "to be", 0);
      expect(2 - 1, "to be", 1);
    });
  });
});

describe("integer primitives", function () {
  describe("arithmetic is not", function () {
    it("should add", function () {
      expect(1 + 1, "not to equal", 3);
      expect(2 + 2, "not to equal", 5);
    });
  });
});

context("test suite", function () {
  beforeEach(function () {
    this.number = 5;
  });

  specify("share a property", function () {
    expect(this.number, "to be", 5);
  });
});

describe("pending suite", function () {
  describe.skip("this is pending suite", function () {
    it("should not run", function () {
      expect(1 + 1, "to be", 3);
    });
  });
});

describe("pending tests", function () {
  it.skip("should not run", function () {
    expect(1 + 1, "to be", 3);
  });
});

describe("setting timeout by appending it to test", function () {
  var runningTest =
    it("enables users to call timeout on active tests", function () {
      expect(1 + 1, "to be", 2);
    }).timeout(1003);

  var skippedTest =
    xit("enables users to call timeout on pending tests", function () {
      expect(1 + 1, "to be", 3);
    }).timeout(1002);

  it("sets timeout on pending tests", function () {
    expect(skippedTest._timeout, "to be", 1002);
  });

  it("sets timeout on running tests", function () {
    expect(runningTest._timeout, "to be", 1003);
  });
});
