Path: blob/main/components/gitpod-protocol/src/util/timeout.spec.ts
2500 views
/**1* Copyright (c) 2020 Gitpod GmbH. All rights reserved.2* Licensed under the GNU Affero General Public License (AGPL).3* See License.AGPL.txt in the project root for license information.4*/56import * as chai from "chai";7const expect = chai.expect;8import { suite, test } from "@testdeck/mocha";9import { Timeout } from "./timeout";1011@suite()12export class TimeoutSpec {13@test14async testSimpleRun() {15const timeout = new Timeout(1);16timeout.start();17await timeout.await();18expect(timeout.signal?.aborted).to.be.true;19}2021@test22async testSimpleRunNotStarted() {23const timeout = new Timeout(1);24await timeout.await();25expect(timeout.signal).to.be.undefined;26}2728@test29async testRestart() {30const timeout = new Timeout(20);31timeout.start();32await timeout.await();33expect(timeout.signal?.aborted).to.be.true;3435timeout.restart();36expect(timeout.signal).to.not.be.undefined;37expect(timeout.signal?.aborted).to.be.false;38await timeout.await();39expect(timeout.signal?.aborted).to.be.true;40}4142@test43async testClear() {44const timeout = new Timeout(1000);45timeout.restart();46timeout.clear();47expect(timeout.signal).to.be.undefined;48}4950@test51async testAbortCondition() {52const timeout = new Timeout(1, () => false); // will never trigger abort53timeout.start();54await new Promise((resolve) => setTimeout(resolve, 50));55expect(timeout.signal).to.not.be.undefined;56expect(timeout.signal?.aborted).to.be.false;57}58}596061