typed-utilities
Version:
Strongly typed general purpose utilities
26 lines (19 loc) • 1.07 kB
text/typescript
import { AsyncResult, Deferred, sleep } from "..";
test(`Deferred`, async () => {
const deferredNull = Deferred.defer();
expect(AsyncResult.is.pending(deferredNull.state())).toEqual(true);
sleep(1000).then(() => deferredNull.resolve(null));
expect(AsyncResult.is.pending(deferredNull.state())).toEqual(true);
expect(await deferredNull.await()).toEqual(null);
expect(AsyncResult.is.resolved(deferredNull.state())).toEqual(true);
expect(() => deferredNull.resolve(null)).toThrow();
expect(() => deferredNull.reject(new Error())).toThrow();
const deferredError = Deferred.defer();
expect(AsyncResult.is.pending(deferredError.state())).toEqual(true);
sleep(1000).then(() => deferredError.reject(new Error()));
expect(AsyncResult.is.pending(deferredError.state())).toEqual(true);
await expect(async () => await deferredError.await()).rejects.toBeTruthy();
expect(AsyncResult.is.rejected(deferredError.state())).toEqual(true);
expect(() => deferredError.resolve(null)).toThrow();
expect(() => deferredError.reject(new Error())).toThrow();
});