diff options
author | Adam Chlipala <adam@chlipala.net> | 2011-12-03 09:44:07 -0500 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2011-12-03 09:44:07 -0500 |
commit | 7136358c17f8193173e8a0a9469821039212d879 (patch) | |
tree | 55e7ce9758b2233896d59392e6b86614abab533a /tests/div.ur | |
parent | d35896d2f29d23c3cd4c180f9249e44ebf7ed208 (diff) |
Catching integer divisions by zero
Diffstat (limited to 'tests/div.ur')
-rw-r--r-- | tests/div.ur | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/div.ur b/tests/div.ur new file mode 100644 index 00000000..69a09275 --- /dev/null +++ b/tests/div.ur @@ -0,0 +1,43 @@ +functor Make(M : sig + type t + val read_t : read t + val show_t : show t + val num_t : num t + end) = struct + fun calculate (n1, n2) = return <xml><body> + {[readError n1 / readError n2 : M.t]}<br/> + {[readError n1 % readError n2 : M.t]}<br/> + </body></xml> + + fun main () = + s1 <- source ""; + s2 <- source ""; + s3 <- source ""; + s4 <- source ""; + return <xml><body> + <h1>Client-side</h1> + + <ctextbox source={s1}/> / <ctextbox source={s2}/> + <button value="=" onclick={n1 <- get s1; + n2 <- get s2; + set s3 (show (readError n1 / readError n2 : M.t)); + set s4 (show (readError n1 % readError n2 : M.t))}/> + <dyn signal={n <- signal s3; return (txt n)}/>, + <dyn signal={n <- signal s4; return (txt n)}/> + + <h1>Server-side</h1> + + <form> + <textbox{#1}/> / <textbox{#2}/> + <submit value="=" action={calculate}/> + </form> + </body></xml> +end + +structure Int = Make(struct type t = int end) +structure Float = Make(struct type t = float end) + +fun main () : transaction page = return <xml><body> + <li><a link={Int.main ()}>Int</a></li> + <li><a link={Float.main ()}>Float</a></li> +</body></xml> |