Path: blob/main/extensions/copilot/src/util/node/test/lock.spec.ts
13401 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/4import assert from 'assert';5import { suite, test } from 'vitest';6import { Lock } from '../../common/lock';78suite('Lock', async function () {9test('acquire and release', async function () {10const lock = new Lock();11await lock.acquire();12assert.strictEqual(lock.locked, true);13lock.release();14assert.strictEqual(lock.locked, false);15});1617test('queueing', async function () {18const lock = new Lock();19await lock.acquire();20assert.strictEqual(lock.locked, true);2122let released = false;23lock.acquire().then(() => {24released = true;25});2627assert.strictEqual(released, false);28lock.release();2930// wait 1 tick31await new Promise((resolve) => setTimeout(resolve, 0));3233assert.strictEqual(released, true);34assert.strictEqual(lock.locked, true);3536lock.release();37assert.strictEqual(lock.locked, false);38});39});404142