зеркало из https://github.com/mozilla/gecko-dev.git
83 строки
2.0 KiB
JavaScript
83 строки
2.0 KiB
JavaScript
/* 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/. */
|
|
|
|
'use strict';
|
|
|
|
exports['test:add'] = function(assert) {
|
|
function Class() {}
|
|
let fixture = require('sdk/util/registry').Registry(Class);
|
|
let isAddEmitted = false;
|
|
fixture.on('add', function(item) {
|
|
assert.ok(
|
|
item instanceof Class,
|
|
'if object added is not an instance should construct instance from it'
|
|
);
|
|
assert.ok(
|
|
fixture.has(item),
|
|
'callback is called after instance is added'
|
|
);
|
|
assert.ok(
|
|
!isAddEmitted,
|
|
'callback should be called for the same item only once'
|
|
);
|
|
isAddEmitted = true;
|
|
});
|
|
|
|
let object = fixture.add({});
|
|
fixture.add(object);
|
|
};
|
|
|
|
exports['test:remove'] = function(assert) {
|
|
function Class() {}
|
|
let fixture = require('sdk/util/registry').Registry(Class);
|
|
fixture.on('remove', function(item) {
|
|
assert.ok(
|
|
item instanceof Class,
|
|
'if object removed can be only instance of Class'
|
|
);
|
|
assert.ok(
|
|
fixture.has(item),
|
|
'callback is called before instance is removed'
|
|
);
|
|
assert.ok(
|
|
!isRemoveEmitted,
|
|
'callback should be called for the same item only once'
|
|
);
|
|
isRemoveEmitted = true;
|
|
});
|
|
|
|
fixture.remove({});
|
|
let object = fixture.add({});
|
|
fixture.remove(object);
|
|
fixture.remove(object);
|
|
};
|
|
|
|
exports['test:items'] = function(assert) {
|
|
function Class() {}
|
|
let fixture = require('sdk/util/registry').Registry(Class),
|
|
actual,
|
|
times = 0;
|
|
|
|
function testItem(item) {
|
|
times ++;
|
|
assert.equal(
|
|
actual,
|
|
item,
|
|
'item should match actual item being added/removed'
|
|
);
|
|
}
|
|
|
|
actual = fixture.add({});
|
|
|
|
fixture.on('add', testItem);
|
|
fixture.on('remove', testItem);
|
|
|
|
fixture.remove(actual);
|
|
fixture.remove(fixture.add(actual = new Class()));
|
|
assert.equal(3, times, 'should notify listeners on each call');
|
|
};
|
|
|
|
require('sdk/test').run(exports);
|
|
|