diff tests/jsinj.ur @ 595:02c8ab9f3e8b

Injected an enumeration
author Adam Chlipala <adamc@hcoop.net>
date Thu, 08 Jan 2009 09:57:45 -0500
parents 55829473f6a7
children d1ec54288b1a
line wrap: on
line diff
--- a/tests/jsinj.ur	Fri Jan 02 13:03:22 2009 -0500
+++ b/tests/jsinj.ur	Thu Jan 08 09:57:45 2009 -0500
@@ -3,12 +3,23 @@
         None => v
       | Some x => x
 
+datatype color = Red | White | Blue
+
+fun colorToString c =
+    case c of
+        Red => "R"
+      | White => "W"
+      | Blue => "B"
+
+val show_color = mkShow colorToString
+
 cookie int : int
 cookie float : float
 cookie string : string
 cookie bool : bool
 cookie pair : int * float
 cookie option : option int
+cookie color : color
 
 fun main () : transaction page =
     n <- getCookie int;
@@ -33,7 +44,11 @@
 
     o <- getCookie option;
     o <- return (getOpt o (Some 1));
-    op <- source None;
+    so <- source None;
+
+    c <- getCookie color;
+    c <- return (getOpt c White);
+    sc <- source Blue;
 
     return <xml><body>
       <dyn signal={n <- signal sn; return <xml>{[n]}</xml>}/>
@@ -51,8 +66,11 @@
       <dyn signal={p <- signal sp; return <xml>{[p.1]}, {[p.2]}</xml>}/>
       <a onclick={set sp p}>CHANGE</a><br/>
 
-      <dyn signal={o <- signal op; case o of
+      <dyn signal={o <- signal so; case o of
                                        None => return <xml>None</xml>
                                      | Some x => return <xml>{[x]}</xml>}/>
-      <a onclick={set op o}>CHANGE</a><br/>
+      <a onclick={set so o}>CHANGE</a><br/>
+
+      <dyn signal={c <- signal sc; return <xml>{[c]}</xml>}/>
+      <a onclick={set sc c}>CHANGE</a><br/>
     </body></xml>