diff options
author | Adam Chlipala <adam@chlipala.net> | 2013-04-16 10:55:48 -0400 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2013-04-16 10:55:48 -0400 |
commit | f4dbd4d3e80432cf1bd41d7f423580da153f11b8 (patch) | |
tree | 2dba7c473ff3a8063145c3cd8506ac9013faa904 /tests/tryRpc.ur | |
parent | 82e400315d526eb6c96fd1ad21a8ce75529f7717 (diff) |
Basis.tryRpc
Diffstat (limited to 'tests/tryRpc.ur')
-rw-r--r-- | tests/tryRpc.ur | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/tryRpc.ur b/tests/tryRpc.ur new file mode 100644 index 00000000..7a8d3a8b --- /dev/null +++ b/tests/tryRpc.ur @@ -0,0 +1,46 @@ +fun isBeppo (s : string) : transaction string = + case s of + "Beppo" => return "Yup, that's him!" + | "Mephisto" => error <xml>Great googely moogely!</xml> + | _ => return "Who's that?" + +fun listOf (n : int) = + if n < 0 then + error <xml>Negative!</xml> + else if n = 0 then + return [] + else + ls <- listOf (n - 1); + return (n :: ls) + +fun length ls = + case ls of + [] => 0 + | _ :: ls' => 1 + length ls' + +fun main () : transaction page = + s <- source ""; + ns <- source ""; + return <xml><body> + <ctextbox source={s}/> + <button value="rpc" onclick={fn _ => v <- get s; + r <- rpc (isBeppo v); + alert r}/> + <button value="tryRpc" onclick={fn _ => v <- get s; + r <- tryRpc (isBeppo v); + case r of + None => alert "Faaaaaailure." + | Some r => alert ("Success: " ^ r)}/> + + <hr/> + + <ctextbox source={ns}/> + <button value="rpc" onclick={fn _ => v <- get ns; + r <- rpc (listOf (readError v)); + alert (show (length r))}/> + <button value="tryRpc" onclick={fn _ => v <- get ns; + r <- tryRpc (listOf (readError v)); + case r of + None => alert "Faaaaaailure." + | Some r => alert ("Success: " ^ show (length r))}/> + </body></xml> |