module BasicCombinatorsTest /** * This module tests the combinators in BasicCombinators.dcl */ import iTasks, iData, StdOverloaded, StdInt, StdClass, StdList import BasicCombinators, CommonCombinators, PromptingCombinators Start :: *World -> *World Start world = startEngine tests world where tests = [ { name = "returnbind_test" , label = "return_V and =>>" , roles = [] , mainTask = returnbind_test } , { name = "assignTaskTo_test" , label = "assignTaskTo" , roles = [] , mainTask = assignTaskTo_test } , { name = "foreverTask_test" , label = "foreverTask" , roles = [] , mainTask = foreverTask_test } , { name = "loop_tst" , label = "loop (<!)" , roles = [] , mainTask = loop_test } , { name = "seqTasks_test" , label = "seqTasks" , roles = [] , mainTask = seqTasks_test } , { name = "selectTasks_test" , label = "selectTasks" , roles = [] , mainTask = selectTasks_test } , { name = "allTasksCond_test" , label = "allTasksCond" , roles = [] , mainTask = allTasksCond_test } ] returnbind_test :: Task Void returnbind_test = return_V 42 =>> \value -> displayHtml [Text (toString value)] assignTaskTo_test :: Task Void assignTaskTo_test = assignTaskTo 0 ("Message for root", displayHtml [Text "This message is for root only"]) foreverTask_test :: Task Void foreverTask_test = (foreverTask ( editTask "Task 1" 0 =>> \a -> editTask "Task 2" 0 =>> \b -> editTask "Sum" (a + b) ) ) #>> return_V Void loop_test :: Task Void loop_test = ( (editTask "Ok" 0) x > 10) ) #>> return_V Void seqTasks_test :: Task Void seqTasks_test = seqTasks [(toString i, editTask "Ok" i) \\ i <- [1..3]] =>> \list -> displayValue list selectTasks_test :: Task Void selectTasks_test = selectTasks doEvenTasks seqTasks [(toString i, editTask "Ok" i) \\ i <- [0..2]] #>> return_V Void where doEvenTasks tasks = return_V [i \\ task <- tasks & i <- [0..] | isEven i] allTasksCond_test :: Task Void allTasksCond_test = allTasksCond "Do all of these:" (TTSplit []) pred [("Subtask " +++ (toString i), editTask "Ok" i) \\ i <- [1..4]] #>> return_V Void where pred list = length list > 0