% $Id: IterateTest.oz,v 1.1 2007/10/22 05:43:46 leavens Exp leavens $ \insert 'TestingNoStop.oz' \insert 'Iterate.oz' declare % Helper to avoid repeated test code proc {TestIter I} fun {SumFromTo I J} {Iterate fun {$ N#_} N > J end fun {$ _#Sum} Sum end fun {$ N#Sum} N+1#Sum+N end I#0} end fun {ProdFromTo I J} {Iterate fun {$ N#_} N > J end fun {$ _#Prod} Prod end fun {$ N#Prod} N+1#Prod*N end I#1} end in {Test {SumFromTo 1 10} '==' 55} {Test {SumFromTo 1 1} '==' 1} {Test {SumFromTo 3 1} '==' 0} {Test {SumFromTo 3 100} '==' 5047} {Test {ProdFromTo 1 3} '==' 6} {Test {ProdFromTo 1 1} '==' 1} {Test {ProdFromTo 3 1} '==' 1} {Test {ProdFromTo 3 10} '==' 1814400} {Test {ProdFromTo 0 100} '==' 0} end {StartTesting 'Iterate'} {TestIter Iterate} {StartTesting 'Iterate2'} {TestIter Iterate2} {StartTesting 'Iterate2c'} {TestIter fun {$ IsDone Extract Transform S} {{Iterate2c IsDone Extract Transform} S} end}