module combinatorTest
import StdEnv, htmlTask, htmlTrivial
// (c) MJP 2007
// Just a scratch file to test the different combinators
// Known bugs
// -> an andTask should skip to add html code of the task being selected by the user
derive gUpd []
derive gForm []
Start world = doHtmlServer (multiUserTask 9 True (foreverTask_Std simpleMile)) world
// the following obscure tasks have been tested succesfully
// test repeat
testRepeat = simpleAnd <| (\n -> sum n > 100,\n -> [Txt "sum should be larger then 100",Br, toHtml n, Br])
// closure task test
// mile stone task
simpleMile = show( andTasks_mstone [("task " <+++ i,simple) \\ i <- [0..2]])
// andTask tests
simpleAnd3 = andTasks [("task " <+++ i,simple_mu i 0 (simple2 i)) \\ i <- [0..1]]
simpleAnd2 = andTasks [("task " <+++ i,simple) \\ i <- [0..3]]
simpleAnd = show( andTasks [("task " <+++ i,simple) \\ i <- [0..2]])
myAndTasks2 = andTasks [("MyTask " <+++ i,
("W" <+++ i,i) @: (editTask ("OK " <+++ i) i =>> \v ->
("B1",0) @: editTask ("OK " <+++ v) v))
\\ i <- [0..3]]
=>> \val -> return_D val
myAndTasks = andTasks ([("MyTask " <+++ i,editTask ("OK " <+++ i) i) \\ i <- [0..3]] ++
[("Special",1 @:: orTasks [("Temp",editTask "SpecOK" 4),("Temp2",2 @:: editTask "SpecOK" 4)])])
=>> \val -> return_D val
// orTasks tests
simpleOr = show( orTasks [("task " <+++ i,simple) \\ i <- [0..3]])
myOrTasks = orTasks ([("MyTask " <+++ i,editTask ("OK " <+++ i) i) \\ i <- [0..3]] ++
[("Special",1 @:: orTasks [("Temp",editTask "SpecOK" 4),("Temp2",2 @:: editTask "SpecOK" 4)])])
=>> \val -> return_D val
myOrTasks2 = orTasks [("MyTask " <+++ i,
("W" <+++ i,i) @: (editTask ("OK " <+++ i) i =>> \v ->
("B1",0) @: editTask ("OK " <+++ v) v))
\\ i <- [0..3]]
=>> \val -> return_D val
// multi user tests
mysingletest = simple_mu 0 1 (simple_mu 1 0 simple)
myduotest = duo 0 (duo 1 simple)
duo i task = show (simple_mu 0 i task) #>> show (simple_mu 1 i task)
simple_mu n i task = ("MyTask " <+++ n, i) @: task
// super simple editors
show task = task =>> \v -> return_D v
simple = editTask "OK" 0
simple2 n = [Txt "Fill in integer value:"] ?>> editTask "OK" n