michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: 'use strict' michael@0: michael@0: const { defer: async } = require('sdk/lang/functional'); michael@0: const { before, after } = require('sdk/test/utils'); michael@0: michael@0: let AFTER_RUN = 0; michael@0: let BEFORE_RUN = 0; michael@0: michael@0: /* michael@0: * Tests are dependent on ordering, as the before and after functions michael@0: * are called outside of each test, and sometimes checked in the next test michael@0: * (like in the `after` tests) michael@0: */ michael@0: exports.testABeforeAsync = function (assert, done) { michael@0: assert.equal(BEFORE_RUN, 1, 'before function was called'); michael@0: BEFORE_RUN = 0; michael@0: AFTER_RUN = 0; michael@0: async(done)(); michael@0: }; michael@0: michael@0: exports.testABeforeNameAsync = function (assert, done) { michael@0: assert.equal(BEFORE_RUN, 2, 'before function was called with name'); michael@0: BEFORE_RUN = 0; michael@0: AFTER_RUN = 0; michael@0: async(done)(); michael@0: }; michael@0: michael@0: exports.testAfterAsync = function (assert, done) { michael@0: assert.equal(AFTER_RUN, 1, 'after function was called previously'); michael@0: BEFORE_RUN = 0; michael@0: AFTER_RUN = 0; michael@0: async(done)(); michael@0: }; michael@0: michael@0: exports.testAfterNameAsync = function (assert, done) { michael@0: assert.equal(AFTER_RUN, 2, 'after function was called with name'); michael@0: BEFORE_RUN = 0; michael@0: AFTER_RUN = 0; michael@0: async(done)(); michael@0: }; michael@0: michael@0: exports.testSyncABefore = function (assert) { michael@0: assert.equal(BEFORE_RUN, 1, 'before function was called for sync test'); michael@0: BEFORE_RUN = 0; michael@0: AFTER_RUN = 0; michael@0: }; michael@0: michael@0: exports.testSyncAfter = function (assert) { michael@0: assert.equal(AFTER_RUN, 1, 'after function was called for sync test'); michael@0: BEFORE_RUN = 0; michael@0: AFTER_RUN = 0; michael@0: }; michael@0: michael@0: before(exports, (name, assert) => { michael@0: if (name === 'testABeforeNameAsync') michael@0: BEFORE_RUN = 2; michael@0: else michael@0: BEFORE_RUN = 1; michael@0: assert.pass('assert passed into before function'); michael@0: }); michael@0: michael@0: after(exports, (name, assert) => { michael@0: // testAfterName runs after testAfter, which is where this michael@0: // check occurs in the assertation michael@0: if (name === 'testAfterAsync') michael@0: AFTER_RUN = 2; michael@0: else michael@0: AFTER_RUN = 1; michael@0: assert.pass('assert passed into after function'); michael@0: }); michael@0: michael@0: require('sdk/test').run(exports);