I wrote something like this a while back using ant contrib and math... Here ya go:

   <macrodef
       name        = "for"
description = "This implements a for loop with starting and ending values for the loop.">

<attribute name = "property" description = "The name of the property that will contain the current value of the loop."/> <attribute name = "start" default = "1" description = "The start value of the loop."/> <attribute name = "end" description = "The end value of the loop"/> <attribute name = "inc" default = "1" description = "The value to increment (or decrement) when looping."/>

<element name = "loop" implicit = "true" description = "The enclosing block - just like ant contrib's for/sequential."/>

       <sequential>
           <var  name = "@{property}"  value = "@{start}"/>

           <if>
               <not>
                   <equals  arg1 = "[EMAIL PROTECTED]"  arg2 = "@{end}"/>
               </not>

               <then>
                   <loop/>

<math result = "@{property}" datatype = "int" operation = "+" operand1 = "[EMAIL PROTECTED]" operand2 = "@{inc}"/>

<for property = "@{property}" start = "[EMAIL PROTECTED]" end = "@{end}" inc = "@{inc}">
                       <loop/>
                   </for>
               </then>
           </if>
       </sequential>
   </macrodef>

This shows how to use it:

       <for  property = "TEST_FOR"  start = "0"  end = "5">
         ....
       </for>

The above would loop starting at 0 and ending at 5...each iteration being stored in the property named "TEST_FOR"

Hope that helps...

Scot



Its recursive and fails out after 400+ iterations. But for most uses it should be sufficient...

There is also another project out there that has this functionality...jwaretechniques but I dont have the URL readily handy right now...

Scot
Daniel Smith wrote:
I'm interested in writing a script that repeats some task a user-specified number of times. This is useful where the behavior of JUnit tests is randomized (explicitly or, in this case, due to concurrency irregularities), and a test sample of size larger than 1 is needed.

The best solution we've been able to come up with is the "for" task from ant-contrib. Unfortunately, "for" iterates over lists (or tokenized strings), not numbers. So we can do something like this:

> ant -Drepeat="1,2,3" sometarget

<target name="sometarget">
   <for list="${repeat}>
      (do something)
   </for>
</target>

Clearly, this isn't ideal. I might explore doing something with the "math" task in ant-contrib. What other recommendations do you have?

—Dan


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



--
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate  http://sourceforge.net/projects/jplate
Chief Architect JavaPIM http://sourceforge.net/projects/javapim


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to