mirror of
https://github.com/coder/code-server.git
synced 2026-05-14 16:27:27 +02:00
These conflicts will be resolved in the following commits. We do it this way so that PR review is possible.
127 lines
3.2 KiB
TypeScript
127 lines
3.2 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
import * as assert from 'assert';
|
|
import { CancellationTokenSource, CancellationToken } from 'vs/base/common/cancellation';
|
|
|
|
suite('CancellationToken', function () {
|
|
|
|
test('None', () => {
|
|
assert.strictEqual(CancellationToken.None.isCancellationRequested, false);
|
|
assert.strictEqual(typeof CancellationToken.None.onCancellationRequested, 'function');
|
|
});
|
|
|
|
test('cancel before token', function (done) {
|
|
|
|
const source = new CancellationTokenSource();
|
|
assert.strictEqual(source.token.isCancellationRequested, false);
|
|
source.cancel();
|
|
|
|
assert.strictEqual(source.token.isCancellationRequested, true);
|
|
|
|
source.token.onCancellationRequested(function () {
|
|
assert.ok(true);
|
|
done();
|
|
});
|
|
});
|
|
|
|
test('cancel happens only once', function () {
|
|
|
|
let source = new CancellationTokenSource();
|
|
assert.strictEqual(source.token.isCancellationRequested, false);
|
|
|
|
let cancelCount = 0;
|
|
function onCancel() {
|
|
cancelCount += 1;
|
|
}
|
|
|
|
source.token.onCancellationRequested(onCancel);
|
|
|
|
source.cancel();
|
|
source.cancel();
|
|
|
|
assert.strictEqual(cancelCount, 1);
|
|
});
|
|
|
|
test('cancel calls all listeners', function () {
|
|
|
|
let count = 0;
|
|
|
|
let source = new CancellationTokenSource();
|
|
source.token.onCancellationRequested(function () {
|
|
count += 1;
|
|
});
|
|
source.token.onCancellationRequested(function () {
|
|
count += 1;
|
|
});
|
|
source.token.onCancellationRequested(function () {
|
|
count += 1;
|
|
});
|
|
|
|
source.cancel();
|
|
assert.strictEqual(count, 3);
|
|
});
|
|
|
|
test('token stays the same', function () {
|
|
|
|
let source = new CancellationTokenSource();
|
|
let token = source.token;
|
|
assert.ok(token === source.token); // doesn't change on get
|
|
|
|
source.cancel();
|
|
assert.ok(token === source.token); // doesn't change after cancel
|
|
|
|
source.cancel();
|
|
assert.ok(token === source.token); // doesn't change after 2nd cancel
|
|
|
|
source = new CancellationTokenSource();
|
|
source.cancel();
|
|
token = source.token;
|
|
assert.ok(token === source.token); // doesn't change on get
|
|
});
|
|
|
|
test('dispose calls no listeners', function () {
|
|
|
|
let count = 0;
|
|
|
|
let source = new CancellationTokenSource();
|
|
source.token.onCancellationRequested(function () {
|
|
count += 1;
|
|
});
|
|
|
|
source.dispose();
|
|
source.cancel();
|
|
assert.strictEqual(count, 0);
|
|
});
|
|
|
|
test('dispose calls no listeners (unless told to cancel)', function () {
|
|
|
|
let count = 0;
|
|
|
|
let source = new CancellationTokenSource();
|
|
source.token.onCancellationRequested(function () {
|
|
count += 1;
|
|
});
|
|
|
|
source.dispose(true);
|
|
// source.cancel();
|
|
assert.strictEqual(count, 1);
|
|
});
|
|
|
|
test('parent cancels child', function () {
|
|
|
|
let parent = new CancellationTokenSource();
|
|
let child = new CancellationTokenSource(parent.token);
|
|
|
|
let count = 0;
|
|
child.token.onCancellationRequested(() => count += 1);
|
|
|
|
parent.cancel();
|
|
|
|
assert.strictEqual(count, 1);
|
|
assert.strictEqual(child.token.isCancellationRequested, true);
|
|
assert.strictEqual(parent.token.isCancellationRequested, true);
|
|
});
|
|
});
|