UNPKG

@debonet/es6pacts

Version:

Releasable/cancellable and Reporting Promises for Javascript ES6

47 lines (36 loc) 1.08 kB
// v2 continuity port from /Users/jsd/@aios/tmp/v2ref/es6pacts/test/es6pacts.test.js // per specs/v3-v2compat.md: helper constructor edit only; test body verbatim. const Pact = require( "../src/es6pacts.js" ); function fpPactDelay( dtm, dtmReport = 100 ){ return new Pact(( fResolve, fReject, fReport ) => { let timeout; let dtmSlept = 0; let f = () => { let r = dtm > 0 ? dtmSlept / dtm : 0; fReport( r ); if ( dtmSlept < ( dtm - dtmReport )){ dtmSlept += dtmReport; timeout = setTimeout( f, dtmReport ); } else if ( dtmSlept < dtm ){ timeout = setTimeout( f, dtm - dtmSlept ); dtmSlept = dtm; } else{ fResolve( dtm ); } } f(); return () => clearTimeout( timeout ); }); } // -------------------------------------------- test( "simple resolve", async () => { let sProgress = ""; const p1 = fpPactDelay( 10000 ) .progress(( x ) => sProgress += x + ", " ) setTimeout(() => { p1.resolve("faster"); }, 300); const s = await p1; expect( s ).toBe( "faster" ); expect( sProgress ).toBe( "0, 0.01, 0.02, " ); });