Popular
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144import { Evt, compose } from "../lib/index.ts";import { assert } from "https://deno.land/x/tsafe@v1.1.1/assert.ts";import { getPromiseAssertionApi } from "../tools/testing/getPromiseAssertionApi.ts";import { getHandlerPr } from "./getHandlerPr.ts";
const { mustResolve, mustStayPending } = getPromiseAssertionApi();
{ //Test type only const evtText = new Evt<string>();
evtText.$attach( compose( (text, registerSideEffect) => ( registerSideEffect(()=>Evt.newCtx<boolean>().done(true)), [text.toUpperCase()] ), (text, registerSideEffect) => ( registerSideEffect(()=> Evt.newCtx<number>().done(3)), [text.length] ), (n, registerSideEffect) => ( registerSideEffect(()=> Evt.newCtx()), [`=>${n}<=`] ), (str, registerSideEffect) => ( registerSideEffect(()=> Evt.newCtx().abort(new Error())), [str.toUpperCase()] ), (str, registerSideEffect) => ( registerSideEffect(()=> Evt.newCtx<boolean>().abort(new Error())), [str.toUpperCase()] ) ), str => str.toUpperCase() );
}
{
const evtText = new Evt<string>();
const ctx= Evt.newCtx();
mustResolve({ "promise": getHandlerPr(evtText, () => evtText.$attach( compose( (text,registerSideEffect)=>(registerSideEffect(()=>ctx.done()), [text]), text => [text] ), ctx, text => text.toLowerCase() )) });
evtText.post("foo");
assert(evtText.getHandlers().length === 0)
}
{
const evtText = new Evt<string>();
const ctx = Evt.newCtx();
mustResolve({ "promise": getHandlerPr(evtText, () => evtText.$attach( compose( (text, registerSideEffect) => (registerSideEffect(() => ctx.done()), [text]), text => [text] ), ctx, text => text.toLowerCase() )) });
evtText.post("foo");
assert(evtText.getHandlers().length === 0)
}
{
const evtText = new Evt<string>();
const ctx = Evt.newCtx();
mustStayPending( getHandlerPr(evtText, () => evtText.$attach( compose( (text, registerSideEffect) => (registerSideEffect(()=> ctx.done()), [text]), () => null ), ctx, () => { } )) );
evtText.post("foo");
assert(evtText.getHandlers().length === 0)
}
{
const evtText = new Evt<string>();
const ctx = Evt.newCtx();
mustStayPending( getHandlerPr( evtText, () =>
evtText.$attach( compose( (text, registerSideEffect) => (registerSideEffect(() => ctx.done()), [text]), str => (str.toLowerCase(), null) ), ctx, () => { } ) ) );
evtText.post("foo");
assert(evtText.getHandlers().length === 0)
}
console.log("PASS");