mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-09 17:52:34 -05:00
SQL Operations Studio Public Preview 1 (0.23) release source code
This commit is contained in:
90
src/vs/base/test/common/lifecycle.test.ts
Normal file
90
src/vs/base/test/common/lifecycle.test.ts
Normal file
@@ -0,0 +1,90 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
import * as assert from 'assert';
|
||||
import { IDisposable, dispose, ReferenceCollection } from 'vs/base/common/lifecycle';
|
||||
|
||||
class Disposable implements IDisposable {
|
||||
isDisposed = false;
|
||||
dispose() { this.isDisposed = true; }
|
||||
}
|
||||
|
||||
suite('Lifecycle', () => {
|
||||
|
||||
test('dispose single disposable', () => {
|
||||
const disposable = new Disposable();
|
||||
|
||||
assert(!disposable.isDisposed);
|
||||
|
||||
dispose(disposable);
|
||||
|
||||
assert(disposable.isDisposed);
|
||||
});
|
||||
|
||||
test('dispose disposable array', () => {
|
||||
const disposable = new Disposable();
|
||||
const disposable2 = new Disposable();
|
||||
|
||||
assert(!disposable.isDisposed);
|
||||
assert(!disposable2.isDisposed);
|
||||
|
||||
dispose([disposable, disposable2]);
|
||||
|
||||
assert(disposable.isDisposed);
|
||||
assert(disposable2.isDisposed);
|
||||
});
|
||||
|
||||
test('dispose disposables', () => {
|
||||
const disposable = new Disposable();
|
||||
const disposable2 = new Disposable();
|
||||
|
||||
assert(!disposable.isDisposed);
|
||||
assert(!disposable2.isDisposed);
|
||||
|
||||
dispose(disposable, disposable2);
|
||||
|
||||
assert(disposable.isDisposed);
|
||||
assert(disposable2.isDisposed);
|
||||
});
|
||||
});
|
||||
|
||||
suite('Reference Collection', () => {
|
||||
class Collection extends ReferenceCollection<number> {
|
||||
private _count = 0;
|
||||
get count() { return this._count; }
|
||||
protected createReferencedObject(key: string): number { this._count++; return key.length; }
|
||||
protected destroyReferencedObject(object: number): void { this._count--; }
|
||||
}
|
||||
|
||||
test('simple', () => {
|
||||
const collection = new Collection();
|
||||
|
||||
const ref1 = collection.acquire('test');
|
||||
assert(ref1);
|
||||
assert.equal(ref1.object, 4);
|
||||
assert.equal(collection.count, 1);
|
||||
ref1.dispose();
|
||||
assert.equal(collection.count, 0);
|
||||
|
||||
const ref2 = collection.acquire('test');
|
||||
const ref3 = collection.acquire('test');
|
||||
assert.equal(ref2.object, ref3.object);
|
||||
assert.equal(collection.count, 1);
|
||||
|
||||
const ref4 = collection.acquire('monkey');
|
||||
assert.equal(ref4.object, 6);
|
||||
assert.equal(collection.count, 2);
|
||||
|
||||
ref2.dispose();
|
||||
assert.equal(collection.count, 2);
|
||||
|
||||
ref3.dispose();
|
||||
assert.equal(collection.count, 1);
|
||||
|
||||
ref4.dispose();
|
||||
assert.equal(collection.count, 0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user