consumer_echo_lexical.tri (1641B)
1 -- Existing echo source on lexical workers with both handler result paths. 2 !import "consumers.base-source" B 3 !import "consumers.lexical-worker" L 4 !import "consumers.structural" S 5 !import "consumers.effect" E 6 !import "prelude" !Local 7 !import "io" !Local 8 9 succeed value = pure (ok value t) 10 fail value = pure (err "offline" t) 11 runEcho worker receiver operations = (E.run L.lEffectStep 12 [(pair "echo" (S.makeConsumer t worker))] operations receiver 7 91) 13 check value expected = (matchResult (_ _ : false) 14 (actual _ : equal? actual expected) value) 15 checkError value expected = (matchResult 16 (message _ : equal? message expected) (_ _ : false) value) 17 checkAll worker = bind (runEcho worker "echo" [(pair "Echo" succeed)]) (success : 18 bind (runEcho worker "echo" [(pair "Echo" fail)]) (failure : 19 bind (runEcho worker "echo" t) (unknownOperation : 20 bind (runEcho worker "absent" [(pair "Echo" succeed)]) (unknownReceiver : 21 putStrLn (matchBool "echo-lexical-ok" "echo-lexical-DIFFER" 22 (foldl and? true [ 23 (check success (pair 91 7)) 24 (check failure (pair 91 "offline")) 25 (checkError unknownOperation "unknown operation") 26 (checkError unknownReceiver "unknown receiver")])))))) 27 main = io (onResult_ (readFile "demos/consumers/echo/echo-effect.scp") 28 (_ : putStrLn "echo-lexical-source-error") 29 (source : lazyResult 30 (_ _ : putStrLn "echo-lexical-parse-error") 31 (named _ : lazyResult 32 (_ _ : putStrLn "echo-lexical-compile-error") 33 (worker _ : checkAll worker) 34 (L.lCompile (S.makeConsumer 91 (snd (snd named))))) 35 (B.compileBaseSource source))) 36 main