Code coverage report for modules/__tests__/SerialDisposable-test.js

Statements: 100% (75 / 75)      Branches: 75% (3 / 4)      Functions: 100% (16 / 16)      Lines: 100% (74 / 74)      Ignored: none     

All files » modules/__tests__/ » SerialDisposable-test.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107    3   1   1   1   1   1   1   1 1 1 1   1 6 5   6 2   6 1       1 1 1 1   1 1   1 1   1 1       1 1 1 1 1 1 1 1 1 1 1     1 1 1 1 1 1     1 1 1 1 1 1 1 1     1 1 1 1 1 1 1 1 1 1 1 1 1     1 1 1 1 1   1 1 1      
'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==