mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-09 09:42:34 -05:00
Merge VS Code 1.31.1 (#4283)
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as assert from 'assert';
|
||||
import { IDisposable, dispose, ReferenceCollection } from 'vs/base/common/lifecycle';
|
||||
import { IDisposable, dispose, ReferenceCollection, Disposable as DisposableBase, toDisposable } from 'vs/base/common/lifecycle';
|
||||
|
||||
class Disposable implements IDisposable {
|
||||
isDisposed = false;
|
||||
@@ -49,6 +49,38 @@ suite('Lifecycle', () => {
|
||||
});
|
||||
});
|
||||
|
||||
suite('DisposableBase', () => {
|
||||
test('register should not leak if object has already been disposed', () => {
|
||||
let aCount = 0;
|
||||
let bCount = 0;
|
||||
|
||||
const disposable = new class extends DisposableBase {
|
||||
register(other: IDisposable) {
|
||||
this._register(other);
|
||||
}
|
||||
};
|
||||
|
||||
disposable.register(toDisposable(() => ++aCount));
|
||||
|
||||
assert.strictEqual(aCount, 0);
|
||||
assert.strictEqual(bCount, 0);
|
||||
|
||||
disposable.dispose();
|
||||
assert.strictEqual(aCount, 1);
|
||||
assert.strictEqual(bCount, 0);
|
||||
|
||||
// Any newly added disposables should be disposed of immediately
|
||||
disposable.register(toDisposable(() => ++bCount));
|
||||
assert.strictEqual(aCount, 1);
|
||||
assert.strictEqual(bCount, 1);
|
||||
|
||||
// Further dispose calls should have no effect
|
||||
disposable.dispose();
|
||||
assert.strictEqual(aCount, 1);
|
||||
assert.strictEqual(bCount, 1);
|
||||
});
|
||||
});
|
||||
|
||||
suite('Reference Collection', () => {
|
||||
class Collection extends ReferenceCollection<number> {
|
||||
private _count = 0;
|
||||
|
||||
Reference in New Issue
Block a user