'use strict';
var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; };
var _expect = require('expect.js');
var _expect2 = _interopRequireWildcard(_expect);
var _Disposable = require('../Disposable');
var _Disposable2 = _interopRequireWildcard(_Disposable);
var _SerialDisposable = require('../SerialDisposable');
var _SerialDisposable2 = _interopRequireWildcard(_SerialDisposable);
describe('SerialDisposable', function () {
var dispA = undefined;
var dispB = undefined;
var dispC = undefined;
beforeEach(function () {
dispA = new _Disposable2['default'](function () {
dispA.disposed = true;
});
dispB = new _Disposable2['default'](function () {
dispB.disposed = true;
});
dispC = new _Disposable2['default'](function () {
dispC.disposed = true;
});
});
it('throws on bad disposable', function () {
var serial = new _SerialDisposable2['default']();
_expect2['default'](function () {
return serial.setDisposable(42);
}).to.throwError();
_expect2['default'](function () {
return serial.setDisposable({});
}).to.throwError();
_expect2['default'](function () {
return serial.setDisposable(0);
}).to.throwError();
_expect2['default'](function () {
return serial.setDisposable('');
}).to.throwError();
});
it('lets you get and set the current disposable', function () {
var serial = new _SerialDisposable2['default']();
_expect2['default'](serial.getDisposable()).equal(null);
serial.setDisposable(dispA);
_expect2['default'](serial.getDisposable()).equal(dispA);
serial.setDisposable(null);
_expect2['default'](serial.getDisposable()).equal(null);
serial.setDisposable();
_expect2['default'](serial.getDisposable()).equal(null);
serial.setDisposable(dispA);
_expect2['default'](serial.getDisposable()).equal(dispA);
});
it('disposes the current disposable on own dispose', function () {
var serial = new _SerialDisposable2['default']();
serial.setDisposable(dispA);
_expect2['default'](dispA.disposed).to.equal(undefined);
serial.dispose();
_expect2['default'](dispA.disposed).to.equal(true);
});
it('disposes the just current disposable if is disposed itself', function () {
var serial = new _SerialDisposable2['default']();
serial.dispose();
serial.setDisposable(dispA);
_expect2['default'](dispA.disposed).to.equal(true);
serial.setDisposable(null);
serial.setDisposable(dispB);
_expect2['default'](dispB.disposed).to.equal(true);
});
it('disposes the previous disposable ', function () {
var serial = new _SerialDisposable2['default']();
serial.setDisposable(dispA);
_expect2['default'](dispA.disposed).to.equal(undefined);
serial.setDisposable(dispB);
_expect2['default'](dispA.disposed).to.equal(true);
_expect2['default'](dispB.disposed).to.equal(undefined);
serial.setDisposable(null);
_expect2['default'](dispB.disposed).to.equal(true);
serial.setDisposable(dispC);
_expect2['default'](dispC.disposed).to.equal(undefined);
serial.setDisposable(null);
_expect2['default'](dispC.disposed).to.equal(true);
});
it('does not attempt to dispose the child twice', function () {
var serial = new _SerialDisposable2['default']();
serial.setDisposable(dispA);
serial.dispose();
_expect2['default'](dispA.disposed).to.equal(true);
dispA.disposed = 42;
serial.dispose();
_expect2['default'](dispA.disposed).to.equal(42);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYW4vRG9jdW1lbnRzL1Byb2plY3RzL2Rpc3Bvc2FibGVzL21vZHVsZXMvX190ZXN0c19fL1NlcmlhbERpc3Bvc2FibGUtdGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3NCQUFtQixXQUFXOzs7OzBCQUNQLGVBQWU7Ozs7Z0NBQ1QscUJBQXFCOzs7O0FBRWxELFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxZQUFNO0FBQ2pDLE1BQUksS0FBSyxZQUFBLENBQUM7QUFDVixNQUFJLEtBQUssWUFBQSxDQUFDO0FBQ1YsTUFBSSxLQUFLLFlBQUEsQ0FBQzs7QUFFVixZQUFVLENBQUMsWUFBTTtBQUNmLFNBQUssR0FBRyw0QkFBZSxZQUFNO0FBQUUsV0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7S0FBRSxDQUFDLENBQUM7QUFDekQsU0FBSyxHQUFHLDRCQUFlLFlBQU07QUFBRSxXQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztLQUFFLENBQUMsQ0FBQztBQUN6RCxTQUFLLEdBQUcsNEJBQWUsWUFBTTtBQUFFLFdBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0tBQUUsQ0FBQyxDQUFDO0dBQzFELENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsMEJBQTBCLEVBQUUsWUFBTTtBQUNuQyxRQUFNLE1BQU0sR0FBRyxtQ0FBc0IsQ0FBQztBQUN0Qyx3QkFBTzthQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO0tBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN2RCx3QkFBTzthQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO0tBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN2RCx3QkFBTzthQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0tBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN0RCx3QkFBTzth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LElBQUksQ0FBQyxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsd0JBQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0MsVUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQix3QkFBTyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUN2QyxDQUFDLENBQUM7O0FBRUgsSUFBRSxDQUFDLDZDQUE2QyxFQUFFLFlBQU07QUFDdEQsUUFBTSxNQUFNLEdBQUcsbUNBQXNCLENBQUM7QUFDdEMsVUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixVQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDakIsd0JBQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXRDLFNBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFVBQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNqQix3QkFBTyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztHQUNyQyxDQUFDLENBQUM7Q0FDSixDQUFDLENBQUMiLCJmaWxlIjoiL1VzZXJzL2Rhbi9Eb2N1bWVudHMvUHJvamVjdHMvZGlzcG9zYWJsZXMvbW9kdWxlcy9fX3Rlc3RzX18vU2VyaWFsRGlzcG9zYWJsZS10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4cGVjdCBmcm9tICdleHBlY3QuanMnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vRGlzcG9zYWJsZSc7XG5pbXBvcnQgU2VyaWFsRGlzcG9zYWJsZSBmcm9tICcuLi9TZXJpYWxEaXNwb3NhYmxlJztcblxuZGVzY3JpYmUoJ1NlcmlhbERpc3Bvc2FibGUnLCAoKSA9PiB7XG4gIGxldCBkaXNwQTtcbiAgbGV0IGRpc3BCO1xuICBsZXQgZGlzcEM7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgZGlzcEEgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7IGRpc3BBLmRpc3Bvc2VkID0gdHJ1ZTsgfSk7XG4gICAgZGlzcEIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7IGRpc3BCLmRpc3Bvc2VkID0gdHJ1ZTsgfSk7XG4gICAgZGlzcEMgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7IGRpc3BDLmRpc3Bvc2VkID0gdHJ1ZTsgfSk7XG4gIH0pO1xuXG4gIGl0KCd0aHJvd3Mgb24gYmFkIGRpc3Bvc2FibGUnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VyaWFsID0gbmV3IFNlcmlhbERpc3Bvc2FibGUoKTtcbiAgICBleHBlY3QoKCkgPT4gc2VyaWFsLnNldERpc3Bvc2FibGUoNDIpKS50by50aHJvd0Vycm9yKCk7XG4gICAgZXhwZWN0KCgpID0+IHNlcmlhbC5zZXREaXNwb3NhYmxlKHt9KSkudG8udGhyb3dFcnJvcigpO1xuICAgIGV4cGVjdCgoKSA9PiBzZXJpYWwuc2V0RGlzcG9zYWJsZSgwKSkudG8udGhyb3dFcnJvcigpO1xuICAgIGV4cGVjdCgoKSA9PiBzZXJpYWwuc2V0RGlzcG9zYWJsZSgnJykpLnRvLnRocm93RXJyb3IoKTtcbiAgfSk7XG5cbiAgaXQoJ2xldHMgeW91IGdldCBhbmQgc2V0IHRoZSBjdXJyZW50IGRpc3Bvc2FibGUnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VyaWFsID0gbmV3IFNlcmlhbERpc3Bvc2FibGUoKTtcbiAgICBleHBlY3Qoc2VyaWFsLmdldERpc3Bvc2FibGUoKSkuZXF1YWwobnVsbCk7XG4gICAgc2VyaWFsLnNldERpc3Bvc2FibGUoZGlzcEEpO1xuICAgIGV4cGVjdChzZXJpYWwuZ2V0RGlzcG9zYWJsZSgpKS5lcXVhbChkaXNwQSk7XG4gICAgc2VyaWFsLnNldERpc3Bvc2FibGUobnVsbCk7XG4gICAgZXhwZWN0KHNlcmlhbC5nZXREaXNwb3NhYmxlKCkpLmVxdWFsKG51bGwpO1xuICAgIHNlcmlhbC5zZXREaXNwb3NhYmxlKCk7XG4gICAgZXhwZWN0KHNlcmlhbC5nZXREaXNwb3NhYmxlKCkpLmVxdWFsKG51bGwpO1xuICAgIHNlcmlhbC5zZXREaXNwb3NhYmxlKGRpc3BBKTtcbiAgICBleHBlY3Qoc2VyaWFsLmdldERpc3Bvc2FibGUoKSkuZXF1YWwoZGlzcEEpO1xuICB9KTtcblxuICBpdCgnZGlzcG9zZXMgdGhlIGN1cnJlbnQgZGlzcG9zYWJsZSBvbiBvd24gZGlzcG9zZScsICgpID0+IHtcbiAgICBjb25zdCBzZXJpYWwgPSBuZXcgU2VyaWFsRGlzcG9zYWJsZSgpO1xuICAgIHNlcmlhbC5zZXREaXNwb3NhYmxlKGRpc3BBKTtcbiAgICBleHBlY3QoZGlzcEEuZGlzcG9zZWQpLnRvLmVxdWFsKHVuZGVmaW5lZCk7XG4gICAgc2VyaWFsLmRpc3Bvc2UoKTtcbiAgICBleHBlY3QoZGlzcEEuZGlzcG9zZWQpLnRvLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnZGlzcG9zZXMgdGhlIGp1c3QgY3VycmVudCBkaXNwb3NhYmxlIGlmIGlzIGRpc3Bvc2VkIGl0c2VsZicsICgpID0+IHtcbiAgICBjb25zdCBzZXJpYWwgPSBuZXcgU2VyaWFsRGlzcG9zYWJsZSgpO1xuICAgIHNlcmlhbC5kaXNwb3NlKCk7XG4gICAgc2VyaWFsLnNldERpc3Bvc2FibGUoZGlzcEEpO1xuICAgIGV4cGVjdChkaXNwQS5kaXNwb3NlZCkudG8uZXF1YWwodHJ1ZSk7XG4gICAgc2VyaWFsLnNldERpc3Bvc2FibGUobnVsbCk7XG4gICAgc2VyaWFsLnNldERpc3Bvc2FibGUoZGlzcEIpO1xuICAgIGV4cGVjdChkaXNwQi5kaXNwb3NlZCkudG8uZXF1YWwodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdkaXNwb3NlcyB0aGUgcHJldmlvdXMgZGlzcG9zYWJsZSAnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VyaWFsID0gbmV3IFNlcmlhbERpc3Bvc2FibGUoKTtcbiAgICBzZXJpYWwuc2V0RGlzcG9zYWJsZShkaXNwQSk7XG4gICAgZXhwZWN0KGRpc3BBLmRpc3Bvc2VkKS50by5lcXVhbCh1bmRlZmluZWQpO1xuICAgIHNlcmlhbC5zZXREaXNwb3NhYmxlKGRpc3BCKTtcbiAgICBleHBlY3QoZGlzcEEuZGlzcG9zZWQpLnRvLmVxdWFsKHRydWUpO1xuICAgIGV4cGVjdChkaXNwQi5kaXNwb3NlZCkudG8uZXF1YWwodW5kZWZpbmVkKTtcbiAgICBzZXJpYWwuc2V0RGlzcG9zYWJsZShudWxsKTtcbiAgICBleHBlY3QoZGlzcEIuZGlzcG9zZWQpLnRvLmVxdWFsKHRydWUpO1xuICAgIHNlcmlhbC5zZXREaXNwb3NhYmxlKGRpc3BDKTtcbiAgICBleHBlY3QoZGlzcEMuZGlzcG9zZWQpLnRvLmVxdWFsKHVuZGVmaW5lZCk7XG4gICAgc2VyaWFsLnNldERpc3Bvc2FibGUobnVsbCk7XG4gICAgZXhwZWN0KGRpc3BDLmRpc3Bvc2VkKS50by5lcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IGF0dGVtcHQgdG8gZGlzcG9zZSB0aGUgY2hpbGQgdHdpY2UnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VyaWFsID0gbmV3IFNlcmlhbERpc3Bvc2FibGUoKTtcbiAgICBzZXJpYWwuc2V0RGlzcG9zYWJsZShkaXNwQSk7XG4gICAgc2VyaWFsLmRpc3Bvc2UoKTtcbiAgICBleHBlY3QoZGlzcEEuZGlzcG9zZWQpLnRvLmVxdWFsKHRydWUpO1xuXG4gICAgZGlzcEEuZGlzcG9zZWQgPSA0MjtcbiAgICBzZXJpYWwuZGlzcG9zZSgpO1xuICAgIGV4cGVjdChkaXNwQS5kaXNwb3NlZCkudG8uZXF1YWwoNDIpO1xuICB9KTtcbn0pOyJdfQ== |